Ejemplo n.º 1
0
static int logoProc(sTaskBody *body, int msg, int lParam, int rParam)
{
	int res = 0;
	LogoVar *var = (LogoVar *)TaskGetVar(body, sizeof(LogoVar), MEM_APP);
	switch(msg)
	{
	case MSG_CREATE:
		{
			var->logo = (Sprite *)StkRefFrameP(0);
		}
		break;

	case MSG_KILL:
		{
		}
		break;

	case MSG_STEP:
		{
			if(!var->inited)
			{
				var->inited = TRUE;
				for(int i = 0; i < LOGO_CHARANUM; i += 1)
				{
					var->logo_pos[i] = var->logo[i].pos;
				}
			}
			
			if(var->kill_req)
			{
				var->logo_eft *= 0.95;
				if(var->logo_eft < 0.01f)
				{
					var->logo_eft = 0.0f;
					res = 1;
				}
			}
			else
			{
				var->logo_eft += 0.01;
				if(var->logo_eft > 1.0f) var->logo_eft = 1.0f;
			}

			for(int i = 0; i < LOGO_CHARANUM; i += 1)
			{
				float x = sinf((float)(g.time + i * 45) * 0.02f) * 5.0f;
				float y = cosf((float)(g.time + i * 30 + 50) * 0.03f) * 4.0f;
				SetV2d(&var->logo[i].pos, var->logo_pos[i].x + x * var->logo_eft, var->logo_pos[i].y + y * var->logo_eft);
			}
		}
		break;

	case MSG_GAME_TITLE_LOGOEFT_FIN:
		{
			var->kill_req = TRUE;
		}
		break;
	}
	return res;
}
Ejemplo n.º 2
0
FVector2 *ShotGetDamageVct(void)
{
	return (FVector2 *)StkRefFrameP(2);
}
Ejemplo n.º 3
0
FVector2 *ShotGetDamagePos(void)
{
	return (FVector2 *)StkRefFrameP(1);
}
Ejemplo n.º 4
0
/* ダメージ関連 */
sOBJ *ShotGetDamageSender(void)
{
	return (sOBJ *)StkRefFrameP(0);
}
Ejemplo n.º 5
0
static int spriteProc(sTaskBody *body, int msg, int lParam, int rParam)
{
	int res = 0;
	SpriteVar *var = (SpriteVar *)TaskGetVar(body, sizeof(SpriteVar), MEM_APP);
	switch(msg)
	{
	case MSG_CREATE:
		{
			char *name = (char *)StkRefFrameP(0);
			var->obj = (Sprite *)StkRefFrameP(1);
			sParam *param = (sParam *)StkRefFrameP(2);
			int delay = StkRefFrameI(3);

			char id_str[ID_MAXLEN];

			sprintf(id_str, "%s.delay", name);
			delay += ParamGetReal(param, id_str) * FRAME_RATE;
			if(delay > 0) TaskSleep(body, delay);
			sprintf(id_str, "%s.frame", name);
			var->frame = ParamGetReal(param, id_str) * FRAME_RATE;

			sprintf(id_str, "%s.slow", name);
			var->slow = ParamGetReal(param, id_str);

			sprintf(id_str, "%s.start", name);
			if(ParamIsExists(param, id_str))
			{
				var->pos_start = *ParamGetFVec2(param, id_str);
			}
			else
			{
				var->pos_start = var->obj->pos;
			}

			sprintf(id_str, "%s.end", name);
			if(ParamIsExists(param, id_str))
			{
				var->pos_end = *ParamGetFVec2(param, id_str);
			}
			else
			{
				var->pos_end = var->obj->pos;
			}
			var->obj->pos = var->pos_start;

			sprintf(id_str, "%s.s_sc", name);
			if(ParamIsExists(param, id_str))
			{
				var->scale_start = *ParamGetFVec2(param, id_str);
			}
			else
			{
				var->scale_start = var->obj->scale;
			}

			sprintf(id_str, "%s.e_sc", name);
			if(ParamIsExists(param, id_str))
			{
				var->scale_end = *ParamGetFVec2(param, id_str);
			}
			else
			{
				var->scale_end = var->obj->scale;
			}
			var->obj->scale = var->scale_start;
		}
		break;

	case MSG_KILL:
		{
		}
		break;

	case MSG_STEP:
		{
			var->count += 1;
			float d = (float)var->count / (float)var->frame;

			if(var->slow) d = d * d;
			else          d = (2.0f - d) * d;
			var->obj->pos.x = var->pos_start.x + (var->pos_end.x - var->pos_start.x) * d;
			var->obj->pos.y = var->pos_start.y + (var->pos_end.y - var->pos_start.y) * d;
			var->obj->scale.x = var->scale_start.x + (var->scale_end.x - var->scale_start.x) * d;
			var->obj->scale.y = var->scale_start.y + (var->scale_end.y - var->scale_start.y) * d;

			res = (var->count == var->frame);
		}
		break;

		
	case MSG_GAME_TITLE_SKIP_EFFECT:
		{
			TaskAwake(body);
			var->count = var->frame - 1;
		}
		break;
	}
	return res;
}
Ejemplo n.º 6
0
static int mainProc(sTaskBody *body, int msg, int lParam, int rParam)
{
	int res = 0;
	RankingVar *var = (RankingVar *)TaskGetVar(body, sizeof(RankingVar), MEM_APP);
	switch(msg)
	{
	case MSG_CREATE:
		{
			var->param = ParamRead(PATH_DATA"/ranking.param");
			var->ranking = ReadGameSettings(); 
			RankingInfo *info = (RankingInfo *)StkRefFrameP(0);
			var->score = info->score;
			var->boss = info->boss;
			var->weapon = info->weapon;

			var->playend = lParam;
			FVector2 *value = ParamGetFVec2(var->param, "ranking_count");
			var->abort_count = ((lParam) ? value->y : value->x) * FRAME_RATE;
			var->fade_in = ParamGetReal(var->param, "fade_in") * FRAME_RATE;
			var->input_delay = ParamGetReal(var->param, "input_delay") * FRAME_RATE;

			RankingScore *rankingScore = var->rankingScore;
			for(int i = 0; i < RANKING_MAX; i++)
			{
				char id_str[ID_MAXLEN];
				sprintf(id_str, "%d.name", i + 1);
				char *name = ParamGetStr(var->ranking, id_str);
				strcpy(rankingScore->name, name);

				sprintf(id_str, "%d.score", i + 1);
				rankingScore->score = ParamGetReal(var->ranking, id_str);

				sprintf(id_str, "%d.boss", i + 1);
				rankingScore->boss = ParamGetReal(var->ranking, id_str);

				sprintf(id_str, "%d.weapon", i + 1);
				rankingScore->weapon = ParamGetReal(var->ranking, id_str);

				rankingScore += 1;
			}

			if(var->playend)
			{
				RankingScore *rankingScore = var->rankingScore;
				int index = RANKING_MAX;
				for(int i = 0; i < RANKING_MAX; i += 1)
				{
					if(var->score >= rankingScore->score)
					{
						index = i;
						break;
					}
					rankingScore += 1;
				}
				for(int i = RANKING_MAX - 1; i > index; i -= 1)
				{
					var->rankingScore[i] = var->rankingScore[i - 1];
				}
				if(index < RANKING_MAX)
				{
					var->rank_in = TRUE;
					var->rank_in_index = index;
					rankingScore->score = var->score;
					rankingScore->boss = var->boss;
					rankingScore->weapon = var->weapon;
					strcpy(rankingScore->name, "   ");
					SndEffectReq("rank_in", ParamGetReal(var->param, "se_delay") * FRAME_RATE, 1.0f);
				}
			}
		}
		break;
		
	case MSG_KILL:
		{
			ParamDestroy(var->ranking);
			ParamDestroy(var->param);
		}
		break;


	case MSG_STEP:
		{
			BOOL abort = InputGetBtnTD(MOUSE_LEFT | MOUSE_D_LEFT);
			BOOL inkey = FALSE;
			BOOL key_input = var->rank_in;

			if(var->fade_in > 0)
			{
				var->fade_in -= 1;
				float fade_in = ParamGetReal(var->param, "fade_in") * FRAME_RATE;
				var->alpha = (fade_in - (float)var->fade_in) / fade_in;
			}

			if(var->input_delay > 0)
			{
				var->input_delay -= 1;
				abort = FALSE;
				key_input = FALSE;
			}

			if(key_input)
			{
				char input = InputGetKey();
				if(input == '"') input = '\'';		/* 苦肉の策 */
				
				RankingScore *rankingScore = &var->rankingScore[var->rank_in_index];
				if(input == 0xd)
				{
					abort = TRUE;
				}
				else
				if((var->cursor > 0) && (input == ASCII_BS || input == ASCII_DEL))
				{
					var->cursor -= 1;
					rankingScore->name[var->cursor] = ' ';
					inkey = TRUE;
				}
				else
				if((var->cursor < 3) && (input >= 0x20) && (input <= 0x7e))
				{
					rankingScore->name[var->cursor] = input;
					var->cursor += 1;
					inkey = TRUE;
				}
			}
			else
			if(var->abort_count > 0)
			{
				var->abort_count -= 1;
			}
			if(inkey || abort) SndEffectReq("rank_key", 0, 1.0f);

			res = ((var->abort_count == 0) || abort);
			if(res)
			{
				if(var->rank_in)
				{
					recordRanking(var);
				}

				TaskPostMsgAll(TASK_PRI_NONE, MSG_GAME_RANKING_FIN, 0, 0);
			}
		}
		break;
			
	case MSG_DRAW:
		{
			FontPrintF(174, 115, PRIO_COCKPIT, "$A%f$$F1$C1R $C7A N K I N $C2G", var->alpha);

			RankingScore *rankingScore = var->rankingScore;
			for(int i = 0; i < RANKING_MAX; i += 1)
			{
				char *name = rankingScore->name;
				int score = rankingScore->score;
				int boss = rankingScore->boss;
				if(var->rank_in && (var->rank_in_index == i))
				{
					char id_str[ID_MAXLEN];
					sprintf(id_str, "%d.rank_str", i + 1);
					char *rank_str = ParamGetStr(var->param, id_str);

					int col = (g.time % 7) + 1;
					FontPrintF(115, 165 + 24 * i, PRIO_COCKPIT, "$A%f$$F1$C%d%s  %s  %7d  B-%-2d", var->alpha, col, rank_str, name, score, boss);
					char cur[5] = "    ";
					cur[var->cursor] = (var->input_delay == 0) ? '_' : ' ';
					FontPrintF(115, 167 + 24 * i, PRIO_COCKPIT, "$A%f$$F1$C%d      %s", var->alpha, col, cur);
				}
				else
				{
					char id_str[ID_MAXLEN];
					sprintf(id_str, "%d.rank_hdr", i + 1);
					char *rank_hdr = ParamGetStr(var->param, id_str);
					sprintf(id_str, "%d.rank_str", i + 1);
					char *rank_str = ParamGetStr(var->param, id_str);
					
					FontPrintF(115, 165 + 24 * i, PRIO_COCKPIT, "$A%f$$F1%s%s  $C7%s  %7d  $C8B$C7-%-2d", var->alpha, rank_hdr, rank_str, name, score, boss);
				}
				rankingScore += 1;
			}
		}
		break;
	}

	return res;
}
Ejemplo n.º 7
0
static int objProc(sOBJ *obj, sParam *param, int msg, int lParam, int rParam)
{
	int res = 0;

	ObjVar *var = (ObjVar *)ObjGetVar(obj, sizeof(ObjVar));
	switch(msg)
	{
	case MSG_CREATE:
		{
			var->level = lParam;
			var->target_flag = (u_int)rParam;
			var->param = (sParam *)StkRefFrameP(0);
			var->pos = *(FVector2 *)StkRefFrameP(1);
			var->vct = *(FVector2 *)StkRefFrameP(2);
			var->dir = StkRefFrameF(3);
			float powofs = StkRefFrameF(4);

			var->radius = ParamGetReal(param, "radius");
			var->speed = ParamGetReal(param, "speed");
			var->power = PowerConvertInterValue(ParamGetReal(param, "power") * powofs);
			FVector4 *col;
			col = ParamGetFVec4(param, "col1");
			SetRGBA(&var->col1, col->x, col->y, col->z, col->w);
			col = ParamGetFVec4(param, "col2");
			SetRGBA(&var->col2, col->x, col->y, col->z, col->w);
			var->disp_size = ParamGetFVec2(param, "disp_size");
			

			FVector2 vct; 
			MathCalcVector(&vct, var->dir, var->speed);
			var->vct.x += vct.x;
			var->vct.y += vct.y;

			ObjSetPos(obj, var->pos.x, var->pos.y);
			ObjSetDir(obj, var->dir);
			ObjSetVct(obj, var->vct.x, var->vct.y);
		}
		break;

	case MSG_KILL:
		{
		}
		break;

	case MSG_STEP:
		{
#if 0
			GameFieldRange(&var->pos);
#endif

			var->pos.x += var->vct.x;
			var->pos.y += var->vct.y;
			
			ObjSetPos(obj, var->pos.x, var->pos.y);
			ObjSetDir(obj, var->dir);
			ObjSetVct(obj, var->vct.x, var->vct.y);

			res = FieldClip(&var->pos, 20.0f);
			if(res)
			{
				ObjKillReq(obj);
			}
			else
			{
				/* TODO:非常に重い処理なので解決策を考える */
				BOOL kill = sendDamage(obj, var->target_flag, &var->pos, &var->vct, var->radius, var->power);
				if(kill)
				{
					ObjKillReq(obj);
				}
			}
		}
		break;

	case MSG_DRAW:
		{
			sGRPOBJ *grp;
			grp = GRPOBJ_FILLCIRCLE(PRIO_SHOT);
			GrpSetPos(grp, var->disp_x, var->disp_y);
			GrpSetRot(grp, var->dir);
			GrpSetRGBA(grp, var->col1.red, var->col1.green, var->col1.blue, var->col1.alpha);
			GrpSetSize(grp, var->disp_size->x, var->disp_size->x);
			GrpSetLineNum(grp, 8);
			GrpSetSmooth(grp, TRUE);

			grp = GRPOBJ_FILLCIRCLE(PRIO_SHOT);
			GrpSetPos(grp, var->disp_x, var->disp_y);
			GrpSetRot(grp, var->dir);
			GrpSetRGBA(grp, var->col2.red, var->col2.green, var->col2.blue, var->col2.alpha);
			GrpSetSize(grp, var->disp_size->y, var->disp_size->y);
			GrpSetLineNum(grp, 6);
			GrpSetSmooth(grp, TRUE);
			
#ifdef DEBUG
			if(isDispDebugInfo())
			{
				sGRPOBJ *grp = GRPOBJ_CIRCLE(PRIO_DEBUG_PRINT);
				GrpSetPos(grp, var->disp_x, var->disp_y);
				GrpSetSize(grp, var->radius, var->radius);
				GrpSetLineNum(grp, 12);
				GrpSetRGBA(grp, 1.0f, 1.0f, 0.0f, 1.0f);
				GrpSetDrawSize(grp, 1.0f);
			}
#endif
		}
		break;

	case MSG_GAME_CAMERA:
		{
			FVector2 *pos = (FVector2 *)StkRefFrameP(0);
			var->disp_x = var->pos.x - pos->x;
			var->disp_y = var->pos.y - pos->y;
		}
		break;
	}

	return res;
}