コード例 #1
0
ファイル: dev_dkong.cpp プロジェクト: biappi/GameAndWatch
void GW_Game_DKong::clock_update(int mode)
{
    if (mode==-1) mode=GetMode();

    // display clock
    data().position_get(PS_NUMBER, 1)->show();
    data().position_get(PS_NUMBER, 2)->show();
    data().position_get(PS_NUMBER, 3)->show();
    data().position_get(PS_NUMBER, 4)->show();


    GW_Platform_Time time=platform_get()->time_get();

    //GW_Device::devtime_t time;
    //device_get()->GetTime(&time);

    data().position_get(PS_SEMICOLON)->visible_set(time.s % 2 == 0);
    if (mode==MODE_TIME)
    {
        // show current time
        data().position_get(PS_AM)->visible_set(time.h<12);
        data().position_get(PS_PM)->visible_set(time.h>=12);

        setnumber((time.h>12?time.h-12:time.h), 1, 2, false);
        setnumber(time.n, 3, 4);
    } else if (mode==MODE_ALARM) {
        // show 12:00 AM
        data().position_get(PS_AM)->show();
        setnumber(12, 1, 2);
        setnumber(0, 3, 4);
    }
}
コード例 #2
0
ファイル: extfuncs.c プロジェクト: amirsalah/cs2007
//// Check if the given file is a real directory or a Zip-archive
static void b_zzip_dir_real(task *tsk, pntr *argstack)
{
	char *fileName;
	int badtype;
	pntr p = argstack[0];
	int dirtype;
	
	CHECK_ARG(0, CELL_CONS);
	if((badtype = array_to_string(p, &fileName)) >= 0){
		set_error(tsk, "error1: argument is not a string (contains non-char: %s)", cell_types[badtype]);
		return;
	}
	
	//// the file to be ckecked exists, then we check it
	static const char* ext[] = { "", ".exe", ".EXE", 0 };
	ZZIP_DIR* dir = zzip_opendir_ext_io (fileName, ZZIP_PREFERZIP, ext, 0);

    if(dir){
    	if(zzip_dir_real(dir)){
    		dirtype = 1;
//	   		printf("%s is a directory.\n", fileName);
    	}else{
    		dirtype = 0;
//    		printf("%s is a zip-archive.\n", fileName);
    	}
//    	zzip_dir_close(dir);
    }else{
    	//// file failed to be open
    	dirtype = -1;
    }
	setnumber(&argstack[0], dirtype);
	
	return;
}
コード例 #3
0
ファイル: canvas.cpp プロジェクト: andyhmltn/aroma
// set the 2d viewport
// args: canvas, scale:number | dimensions:table
int Canvas::_viewport(lua_State *l) {
	Viewport view(0,0);
	if (lua_isnumber(l, -1)) {
		double scale = lua_tonumber(l, -1);
		view.right = _canvas->width() / scale;
		view.bottom = _canvas->height() / scale;
	} else if (lua_istable(l, -1)) {
		int i = 1;
		switch (lua_objlen(l, -1)) {
			case 4:
				lua_rawgeti(l, -1, i++);
				lua_rawgeti(l, -2, i++);
				view.left = lua_tonumber(l, -2);
				view.top = lua_tonumber(l, -1);
				lua_pop(l, 2);
			case 2:
				lua_rawgeti(l, -1, i++);
				lua_rawgeti(l, -2, i++);
				view.right = lua_tonumber(l, -2);
				view.bottom = lua_tonumber(l, -1);
				lua_pop(l, 2);
				break;
			default:
				return luaL_error(l, "unknown 2d viewport size");
		}
	}

	view.reshape();
	_canvas->view = view;

	// update the canvas
	lua_pushvalue(l, 1);
	setnumber("width", view.getWidth());
	setnumber("height", view.getHeight());

	return 0;
}
コード例 #4
0
ファイル: value.c プロジェクト: JabirTech/Source
/*
 * Variable manipulation
 */
void
vinit(void)
{
	char file[FILENAME_MAX], *cp;
	value_t *p;
	FILE *fp;

	for (p = vtable; p->v_name != NULL; p++) {
		if (p->v_type&ENVIRON)
			if ((cp = getenv(p->v_name)))
				p->v_value = cp;
		if (p->v_type&IREMOTE)
			setnumber(p->v_value, *address(p->v_value));
	}
	/*
	 * Read the .tiprc file in the HOME directory
	 *  for sets
	 */
	cp = value(HOME);
	if (cp == NULL) {
		(void)fprintf(stderr, 
		    "$HOME not set. Skipping check for ~/.tiprc\n");
	} else if (strlen(cp) + sizeof("/.tiprc") > sizeof(file)) {
		(void)fprintf(stderr, "Home directory path too long: %s\n",
		    value(HOME));
	} else {
		snprintf(file, sizeof file, "%s/.tiprc", value(HOME));
		if ((fp = fopen(file, "r")) != NULL) {
			char *tp;

			while (fgets(file, sizeof(file)-1, fp) != NULL) {
				if (vflag)
					printf("set %s", file);
				if ((tp = strrchr(file, '\n')))
					*tp = '\0';
				vlex(file);
			}
			fclose(fp);
		}
	}
	/*
	 * To allow definition of exception prior to fork
	 */
	vtable[EXCEPTIONS].v_access &= ~(WRITE<<PUBLIC);
}
コード例 #5
0
ファイル: value.c プロジェクト: JabirTech/Source
/*VARARGS1*/
static void
vassign(value_t *p, char *v)
{
	if (!vaccess(p->v_access, WRITE)) {
		printf("access denied\r\n");
		return;
	}

	switch (p->v_type&TMASK) {
	case STRING:
		if (p->v_value && equal(p->v_value, v))
			return;
		if (!(p->v_type&(ENVIRON|INIT)))
			free(p->v_value);
		if ((p->v_value = strdup(v)) == NOSTR) {
			printf("out of core\r\n");
			return;
		}
		p->v_type &= ~(ENVIRON|INIT);
		break;
	case NUMBER:
		if (number(p->v_value) == number(v))
			return;
		setnumber(p->v_value, number(v));
		break;
	case BOOL:
		if (boolean(p->v_value) == (*v != '!'))
			return;
		setboolean(p->v_value, (*v != '!'));
		break;
	case CHAR:
		if (character(p->v_value) == *v)
			return;
		setcharacter(p->v_value, *v);
	}
	p->v_access |= CHANGED;
}
コード例 #6
0
ファイル: canvas.cpp プロジェクト: andyhmltn/aroma
int Canvas::_flush(lua_State *l) {
	if (!lua_istable(l, 1))
		return luaL_error(l, "canvas expected as first argument");

	// clear key events
	keys_down.clear();
	keys_up.clear();

	glfwSwapBuffers();
	glfwSleep(0.005);
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

	// if (!_canvas->view.is2d)
	glLoadIdentity();

	// set the game time
	double time = glfwGetTime();

	lua_getfield(l, 1, "time");
	double old = luaL_checknumber(l, -1);	
	lua_pop(l, 1);

	setnumber("time" , time);
	setnumber("dt" , time - old);

	int x, y;
	double cx, cy; // canvas mouse coordinates
	glfwGetMousePos(&x, &y);

	Viewport &view = _canvas->view;
	if (view.is2d) {
		double vwidth = view.right - view.left;
		double vheight = view.bottom - view.top;

		cx = view.left + (x * vwidth / _canvas->width());
		cy = view.top + (y * vheight / _canvas->height());
	} else {
		cx = (double)x;
		cy = (double)y;
	}

	// update the mouse point
	lua_getfield(l, 1, "mouse");
	setnumber("x", cx);
	setnumber("y", cy);

	setbool("left", glfwGetMouseButton(GLFW_MOUSE_BUTTON_LEFT));
	setbool("right", glfwGetMouseButton(GLFW_MOUSE_BUTTON_RIGHT));


	lua_getfield(l, 1, "input");
	float axis[2];
	glfwGetJoystickPos(GLFW_JOYSTICK_1, axis, 2);

	setnumber("xaxis", axis[0]);
	setnumber("yaxis", axis[1]);

	setbool("left", glfwGetKey(GLFW_KEY_LEFT));
	setbool("right", glfwGetKey(GLFW_KEY_RIGHT));
	setbool("up", glfwGetKey(GLFW_KEY_UP));
	setbool("down", glfwGetKey(GLFW_KEY_DOWN));

	setbool("a", glfwGetKey('Q'));
	setbool("b", glfwGetKey('W'));

	lua_pushboolean(l, glfwGetWindowParam(GLFW_OPENED) > 0);


	return 1;
}
コード例 #7
0
ファイル: canvas.cpp プロジェクト: andyhmltn/aroma
/**
 * create a new canvas
 * args: width, height, [title]
 */
int Canvas::_new(lua_State *l) {
	const char *title = "Aroma";

	int width = luaL_checkint(l, 2);
	int height = luaL_checkint(l, 3);
	if (lua_gettop(l) > 3) {
		title = luaL_checkstring(l, 4);
	}

	GLContext* context = new GLFWContext(width, height, title);
	if (!context->make_current()) {
		return luaL_error(l, "fatal error: failed to open window");
	}

	_canvas = new Canvas(context);

	Viewport &view = _canvas->view;

	lua_newtable(l);

	// functions

	setfunction("run", Canvas::_run);

	setfunction("rect", Canvas::_rect);
	setfunction("line", Canvas::_line);

	setfunction("viewport", Canvas::_viewport);
	setfunction("view3d", Canvas::_view3d);

	setfunction("look", Canvas::_look);
	setfunction("strip", Canvas::_strip);

	setfunction("rotate", Canvas::_rotate);
	setfunction("scale", Canvas::_scale);
	setfunction("translate", Canvas::_translate);

	setfunction("noise", Canvas::_noise);

	setfunction("save", Canvas::_save);
	setfunction("restore", Canvas::_restore);

	setfunction("getTime", Canvas::_getTime);
	setfunction("clear_color", Canvas::_clearColor);
	setfunction("clear", Canvas::_clear);
	setfunction("flush", Canvas::_flush);

	setfunction("set_mouse", Canvas::_setMouse);
	setfunction("hide_mouse", Canvas::_hideMouse);
	setfunction("show_mouse", Canvas::_showMouse);

	setfunction("key", Canvas::_key);
	setfunction("key_up", Canvas::_key_up);
	setfunction("key_down", Canvas::_key_down);

	// load libraries
	AromaRegister *lib = aroma_libs;
	while (*lib) {
		(*lib++)(l);
	}

	// properties
	setnumber("dt", 0);
	setnumber("time", glfwGetTime());

	setnumber("width", view.getWidth());
	setnumber("height", view.getHeight());


	// mouse input
	lua_newtable(l);
	setint("x", 0);
	setint("y", 0);
	setbool("left", false);
	setbool("right", false);

	lua_setfield(l, -2, "mouse");
	
	// create the input table
	lua_newtable(l);
	setnumber("xaxis", 0);
	setnumber("yaxis", 0);

	setbool("left", false);
	setbool("right", false);
	setbool("up", false);
	setbool("down", false);

	setbool("a", false);
	setbool("b", false);
	setbool("c", false);
	setbool("d", false);

	setbool("start", false);
	setbool("select", false);

	setbool("l", false);
	setbool("r", false);

	lua_setfield(l, -2, "input");

	// the keys
	push_key_table(l);
	lua_setfield(l, -2, "keys");

	// create meta table
	lua_newtable(l);		
	setfunction("__call", _call);
	lua_setmetatable(l, -2);

	return 1;
}
コード例 #8
0
ファイル: extfuncs.c プロジェクト: amirsalah/cs2007
static void b_drawRectangles1(task *tsk, pntr *argstack)
{
    /* pointers to the parameters */
    pntr val1 = argstack[3]; // userName
    pntr val2 = argstack[2]; // xPos
    pntr val3 = argstack[1]; // yPos
    pntr val4 = argstack[0]; // rect
    int badtype;

    /* the result value to be return */
    int numRect;

    char *userName;
    double xPos;
    int yPos;
    Rectangle *rect = new_Rectangle();

    /* Check validity of each parameter */
    CHECK_ARG(3, CELL_CONS);
    CHECK_ARG(2, CELL_NUMBER);
    CHECK_ARG(1, CELL_NUMBER);
    CHECK_ARG(0, CELL_CONS);

    /* Initialize all arguments for this method */
    if( (badtype = array_to_string(val1, &userName)) > 0) {
        set_error(tsk, "string: argument is not a string (contains non-char: %s)", cell_types[badtype]);
        return;
    }

    xPos = pntrdouble(val2);
    yPos = pntrdouble(val3);

    /* Initialize the struct: Rectangle */
    pntr rect_val1 = head(tsk, val4);
    rect->width = pntrdouble(rect_val1);
    pntr rect_val2 = head(tsk, tail(tsk, val4));
    if( (badtype = array_to_string(rect_val2, &(rect->creator) )) > 0) {
        set_error(tsk, "string: argument is not a string (contains non-char: %s)", cell_types[badtype]);
        return;
    }

    pntr rect_val3 = head(tsk, tail(tsk, tail(tsk, val4)));
    rect->height = pntrdouble(rect_val3);

    /* Initialize another struct: Color*/
    Color *rect_col = new_Color( );
    rect->col = rect_col;
    /* new root pntr for struct Color */
    pntr rect_col_val = head(tsk, tail(tsk, tail(tsk, tail(tsk, val4))));
    pntr rect_col_val1 = head(tsk, rect_col_val);
    rect_col->red = pntrdouble(rect_col_val1);
    pntr rect_col_val2 = head(tsk, tail(tsk, rect_col_val));
    rect_col->blue = pntrdouble(rect_col_val2);
    pntr rect_col_val3 = head(tsk, tail(tsk, tail(tsk, rect_col_val)));
    rect_col->green = pntrdouble(rect_col_val3);

    /* Initialize another struct: gray*/
    gray *rect_col_cg = new_gray( );
    rect_col->cg = rect_col_cg;
    /* new root pntr for struct gray */
    pntr rect_col_cg_val = head(tsk, tail(tsk, tail(tsk, tail(tsk, rect_col_val))));
    pntr rect_col_cg_val1 = head(tsk, rect_col_cg_val);
    if( (badtype = array_to_string(rect_col_cg_val1, &(rect_col_cg->country) )) > 0) {
        set_error(tsk, "string: argument is not a string (contains non-char: %s)", cell_types[badtype]);
        return;
    }

    pntr rect_col_cg_val2 = head(tsk, tail(tsk, rect_col_cg_val));
    rect_col_cg->grayCode = pntrdouble(rect_col_cg_val2);

    /* end Initialization of struct Rectangle */

    /* Call the method and get the return value */
    numRect = drawRectangles(userName, xPos, yPos, rect);
    
    setnumber(&argstack[0], numRect);
    
}