int main(){
	FrameworkInitialise("HelloWorld",1280,720,false);
	FrameworkBGColour(0.2f,0.4f,0.8f,1.0f);
	Sprite		sprCarpet		= SpriteLoad("./Images/Carpet.png",32,32,16,16);
	Font		fntCourierNew	= FontLoad("./Fonts/CourierNew.fnt");
//UPDATE
	while (FrameworkUpdate()){
//CLEAR AND DELTASET
		FrameworkClearScreen();
		DeltaTimeSet();

		count++;
		FPS = FPSGet();
		for (int index = 1;index <= count; index++){
			SpriteMove(sprCarpet,rand()%1280-640,rand()%720-360,rand()%99+1);
			SpriteDraw(sprCarpet);
		}
		if (FPS > 59.9f && FPS < 60.1f){
			std::cout << "FPS :" << FPS << " sprite count :" << count << " triangle count : " << count*2 << std::endl;
		}
		if (FPS > 29.9f && FPS < 30.1f){
			std::cout << "FPS :" << FPS << " sprite count :" << count << " triangle count : " << count*2 << std::endl;
		}
		DrawInt(fntCourierNew,GetInstanceCount(),0,360,0,true);
	}
	FrameworkShutdown();
	return 1+1-1-1;
}
 PyObject* LMF_SpriteDraw(PyObject *self, PyObject *args){
	unsigned int SpriteID, Camera0_world1;
	if (!PyArg_ParseTuple(args, "ii", &SpriteID,&Camera0_world1)) {
		ParsePyTupleError( __func__, __LINE__ );
		return nullptr;
	}
	SpriteDraw(SpriteID,Camera0_world1);
	Py_RETURN_NONE;
}
Beispiel #3
0
static int mainProc(sTaskBody *body, int msg, int lParam, int rParam)
{
	int res = 0;
	TitleVar *var = (TitleVar *)TaskGetVar(body, sizeof(TitleVar), MEM_APP);
	switch(msg)
	{
	case MSG_CREATE:
		{
			sParam *param = ParamRead(PATH_DATA"/title.param");
			var->param = param;
			var->texture = ParamGetTex(param, "texture");

			for(int i = 0; i < LOGO_CHARANUM; i += 1)
			{
				char id_str[ID_MAXLEN];
				sprintf(id_str, "%d", i + 1);
				SpriteSetup(&var->logo[i], id_str, param);
			}
			SpriteSetup(&var->game, "game", param);
			SpriteSetup(&var->start, "start", param);
			SpriteSetup(&var->copyright, "copy", param);
			SpriteSetup(&var->ngs, "ngs", param);
			SpriteSetup(&var->cursor[0], ">", param);
			SpriteSetup(&var->cursor[1], "<", param);
			var->cursor_pos[0] = var->cursor[0].pos;
			var->cursor_pos[1] = var->cursor[1].pos;

			var->start_fade = ParamGetReal(param, "start_fade");

			FVector2 *scale = ParamGetFVec2(param, "start_scale");
			var->start_scale = scale->x;
			var->game.scale.x = var->game.scale.y = var->start_scale;
			var->start.scale.x = var->start.scale.y = var->start_scale;

			var->start_cur = FALSE;
			var->started = FALSE;

			var->abort_count = ParamGetReal(param, "title_count") * FRAME_RATE;

			SpriteSetup(&var->speker, "vol", param);
			SpriteSetup(&var->vol[0], "vol1", param);
			SpriteSetup(&var->vol[1], "vol2", param);
			SpriteSetup(&var->vol[2], "vol3", param);
			SpriteSetup(&var->vol_var[0], "v_var1", param);
			SpriteSetup(&var->vol_var[1], "v_var2", param);

			if(lParam) SndEffectReq("title", 15, 0.8f);

			if(!rParam)
			{
				int delay = ParamGetReal(param, "title_delay") * FRAME_RATE;
				if(delay > 0) TaskSleep(body, delay);

				for(int i = 0; i < LOGO_CHARANUM; i += 1)
				{
					char id_str[ID_MAXLEN];
					sprintf(id_str, "%ds", i + 1);
					createSpriteTask(&var->logo[i], id_str, var->param, delay);
				}

				var->start_delay = ParamGetReal(param, "start_delay") * FRAME_RATE;
				var->game.disp = FALSE;
				var->start.disp = FALSE;
				var->copyright.disp = FALSE;
				var->ngs.disp = FALSE;
				var->cursor[0].disp = FALSE;
				var->cursor[1].disp = FALSE;

				var->speker.disp = FALSE;
				for(int i = 0; i < 3; i += 1)
				{
					var->vol[i].disp = FALSE;
				}
				for(int i = 0; i < 2; i += 1)
				{
					var->vol_var[i].disp = FALSE;
				}
			}
			else
			{
				createLogoTask(var->logo, 1 * FRAME_RATE);
				var->start_delay = 0;
				setupVolume(var);
			}

			BOOL exec = rParam;
			if(exec) exec = !InputGetBtnP(MOUSE_LEFT);
			InputSetAppExec(INP_CH0, exec);
			/* SHOTの暴発を避けるため、若干回りくどい */
		}
		break;
		
	case MSG_KILL:
		{
			if(var->chg_gain)
			{
				sParam *settings = MainGetSettings();
				ParamSetReal(settings, "gain", SndGetMasterGain());
				WriteGameSettings(settings);
			}
			ParamDestroy(var->param);
		}
		break;

	case MSG_PREPROC:
		{
			if(!var->started && (var->start_delay == 0))
			{
				BOOL slider = sliderVolume(var);
				if(slider && var->abort_count < (1 * FRAME_RATE)) var->abort_count = 1 * FRAME_RATE;
				if(!slider && var->abort_count > 0) var->abort_count -= 1;
			}
		}
		break;

	case MSG_STEP:
		{
			if(var->started)
			{
				switch(var->start_eft_mode)
				{
				case 0:
					{
						var->start_count -= 1;

						float alpha = (var->start_count & 0x2) ? 1.0f : 0.5f;
						if(var->start_count == 0)
						{
							var->start_eft_mode += 1;
							var->start_count = ParamGetReal(var->param, "end_delay") * FRAME_RATE;

							for(int i = 0; i < LOGO_CHARANUM; i += 1)
							{
								char id_str[ID_MAXLEN];
								sprintf(id_str, "%de", i + 1);
								createSpriteTask(&var->logo[i], id_str, var->param, 0);
							}
							createSpriteTask(&var->game, "game", var->param, 0);
							createSpriteTask(&var->start, "start", var->param, 0);
							createSpriteTask(&var->copyright, "copy", var->param, 0);
							createSpriteTask(&var->ngs, "ngs", var->param, 0);

							createSpriteTask(&var->speker, "vol", var->param, 0);
							createSpriteTask(&var->vol[0], "vol1", var->param, 0);
							createSpriteTask(&var->vol[1], "vol2", var->param, 0);
							createSpriteTask(&var->vol[2], "vol3", var->param, 0);
							createSpriteTask(&var->vol_var[0], "v_var1", var->param, 0);
							createSpriteTask(&var->vol_var[1], "v_var2", var->param, 0);

							SndEffectReq("title_fin", 0.4f * FRAME_RATE, 0.3f);
							
							alpha = 1.0f;
						}
						var->game.col.alpha = alpha;
						var->start.col.alpha = alpha;
					}
					break;

				case 1:
					{
						var->start_count -= 1;
						if(var->start_count <= 0)
						{
							InputSetAppBtnExec(INP_CH0, TRUE);
							TaskPostMsgAll(TASK_PRI_NONE, MSG_GAME_GAMESTART, 0, 0);
							res = 1;
						}
					}
					break;
				}
			}
			else
			if(var->start_delay > 0)
			{
				BOOL disp = var->start_delay -= 1;
				BOOL abort = InputGetBtnTD(MOUSE_LEFT | MOUSE_D_LEFT);
				if(abort)
				{
					disp = FALSE;
					TaskPostMsgAll(TASK_PRI_03, MSG_GAME_TITLE_SKIP_EFFECT, 0, 0);
					var->start_delay = 0;
				}

				if(!disp)
				{
					createLogoTask(var->logo, 1 * FRAME_RATE);
					var->game.disp = TRUE;
					var->start.disp = TRUE;
					var->copyright.disp = TRUE;
					var->ngs.disp = TRUE;
					var->cursor[0].disp = TRUE;
					var->cursor[1].disp = TRUE;
					var->speker.disp = TRUE;
					for(int i = 0; i < 2; i += 1)
					{
						var->vol_var[i].disp = TRUE;
					}
					setupVolume(var);

					if(!abort) InputSetAppExec(INP_CH0, TRUE);
				}
			}
			else
			{
				if(InputGetBtnTU(MOUSE_LEFT | MOUSE_D_LEFT))
				{
					InputSetAppExec(INP_CH0, TRUE);
					/* ボタンが離されるまで入力禁止 */
				}
				
				int x = InputGetMouseX();
				int y = InputGetMouseY();

				/* かなり強引な方法 */
				BOOL start = FALSE;
				sBox box = {{ 180 -10, 330 - 10 }, {328 + 10, 362 + 10} };
/* 				box.inf.x = 180 - 10; */
/* 				box.inf.y = 330 - 10; */
/* 				box.sup.x = 328 + 10; */
/* 				box.sup.y = 362 + 10; */

				FVector2 *scale = ParamGetFVec2(var->param, "start_scale");
				if(MathBoxCrossPoint(x, y, &box))
				{
					start = TRUE;
					var->start_scale += (scale->y - var->start_scale) * 0.4f;
					var->cursor[0].col.alpha -= 0.08f;
					var->cursor[1].col.alpha -= 0.08f;
					var->start_count = 0;
				}
				else
				{
					var->start_scale += (scale->x - var->start_scale) * 0.3f;
					var->cursor[0].col.alpha += 0.025f;
					var->cursor[1].col.alpha += 0.025f;
					var->start_count += 1;
				}
				var->game.scale.x = var->game.scale.y = var->start_scale;
				var->start.scale.x = var->start.scale.y = var->start_scale;

				if(var->cursor[0].col.alpha < 0.0f)
				{
					var->cursor[0].col.alpha = 0.0f;
					var->cursor[1].col.alpha = 0.0f;
				}
				else
				if(var->cursor[0].col.alpha > 1.0f)
				{
					var->cursor[0].col.alpha = 1.0f;
					var->cursor[1].col.alpha = 1.0f;
				}

				float alpha = 0.5f + cosf((float)var->start_count * var->start_fade) * 0.5f;
				var->game.col.alpha = alpha;
				var->start.col.alpha = alpha;

				{
					float ofs = fabsf(sinf((float)g.time * 0.08f)) * 8.0f;
					var->cursor[0].pos.x = var->cursor_pos[0].x - ofs;
					var->cursor[1].pos.x = var->cursor_pos[1].x + ofs;
				}
				
				if(var->start_cur != start)
				{
					if(start) SndEffectReq("start_touch", 0, 1.0f);
					InputSetAppBtnExec(INP_CH0, !start);
					var->start_cur = start;
				}
				
				if(start && InputGetBtnTD(MOUSE_LEFT | MOUSE_D_LEFT))
				{
					SndStop("bgm");
					SndEffectReq("start_push", 0, 1.0f);
					var->started = TRUE;
					var->start_eft_mode = 0;
					var->start_scale = 1.5f;
					var->start_count = ParamGetReal(var->param, "start_count") * FRAME_RATE;
					var->cursor[0].disp = FALSE;
					var->cursor[1].disp = FALSE;
					TaskPostMsgAll(TASK_PRI_03, MSG_GAME_TITLE_LOGOEFT_FIN, 0, 0);
				}
				else
				{
					if(var->abort_count == 0)
					{
						TaskDeleteAll(TASK_PRI_03);
						TaskPostMsgAll(TASK_PRI_NONE, MSG_GAME_TITLE_FIN, 0, 0);
						res = 1;
					}
				}
			}

#ifdef DEBUG
			if((!res) && (InputGetKey() == 'd'))
			{
				TaskDeleteAll(TASK_PRI_03);
				TaskPostMsgAll(TASK_PRI_NONE, MSG_GAME_START, TRUE, 0);
				res = 1;
			}
#endif
		}
		break;
			
	case MSG_DRAW:
		{
			for(int i = 0; i < LOGO_CHARANUM; i += 1)
			{
				SpriteDraw(&var->logo[i], var->texture);
			}
			SpriteDraw(&var->game, var->texture);
			SpriteDraw(&var->start, var->texture);
			SpriteDraw(&var->copyright, var->texture);
			SpriteDraw(&var->ngs, var->texture);
			SpriteDraw(&var->cursor[0], var->texture);
			SpriteDraw(&var->cursor[1], var->texture);

			SpriteDraw(&var->speker, var->texture);
			for(int i = 0; i < 3; i += 1)
			{
				SpriteDraw(&var->vol[i], var->texture);
			}
			SpriteDraw(&var->vol_var[0], var->texture);
			SpriteDraw(&var->vol_var[1], var->texture);
		}
		break;
	}

	return res;
}
Beispiel #4
0
//멀티플레이 렌더링
void CMultiPlay::MultiPlayRender()
{
	//09-08-13 이재준
	SpriteDraw();
}