implement and use TM_AddQueuedBackgroundAction

This commit is contained in:
Sebastian Krzyszkowiak 2012-04-09 12:55:04 +02:00
parent 270e137ee5
commit cf2bc20b68
3 changed files with 18 additions and 9 deletions

View file

@ -65,12 +65,7 @@ bool Move(struct Game *game, struct TM_Action *action, enum TM_ActionState state
}
bool Fly(struct Game *game, struct TM_Action *action, enum TM_ActionState state) {
if (state == TM_ACTIONSTATE_INIT) { action->arguments=NULL; return false; }
if (state != TM_ACTIONSTATE_RUNNING) return false;
if (!action->arguments) {
action->arguments++;
TM_AddBackgroundAction(&Accelerate, NULL, 0);
}
game->level.derpy_y-=0.004;
if (game->level.derpy_y>0.2) return false;
game->level.handle_input=true;
@ -216,7 +211,6 @@ bool Welcome(struct Game *game, struct TM_Action *action, enum TM_ActionState st
free(action->arguments->next->value);
TM_DestroyArgs(action->arguments);
action->arguments = NULL;
//TM_AddBackgroundAction(&Accelerate, NULL, 1000);
}
return false;
}
@ -249,11 +243,12 @@ void Level_Load(struct Game *game) {
TM_Init(game);
TM_AddBackgroundAction(&FadeIn, NULL, 0);
TM_AddDelay(1000);
TM_AddAction(&Welcome, NULL);
TM_AddQueuedBackgroundAction(&Welcome, NULL, 0);
TM_AddAction(&Walk, NULL);
TM_AddAction(&Move, NULL);
TM_AddAction(&Stop, NULL);
TM_AddDelay(5*1000);
TM_AddQueuedBackgroundAction(&Accelerate, NULL, 0);
TM_AddAction(&Fly, NULL);
// Derpy walks in... (background - owl)
// Derpy reads a letter

View file

@ -190,6 +190,21 @@ struct TM_Action* TM_AddBackgroundAction(bool (*func)(struct Game*, struct TM_Ac
return action;
}
bool runinbackground(struct Game* game, struct TM_Action* action, enum TM_ActionState state) {
if (state != TM_ACTIONSTATE_RUNNING) return false;
float* delay = (float*) action->arguments->next->value;
TM_AddBackgroundAction(action->arguments->value, action->arguments->next->next, *delay);
return true;
}
struct TM_Action* TM_AddQueuedBackgroundAction(bool (*func)(struct Game*, struct TM_Action*, enum TM_ActionState), struct TM_Arguments* args, float delay) {
struct TM_Arguments* arguments = TM_AddToArgs(NULL, (void*) func);
arguments = TM_AddToArgs(arguments, malloc(sizeof(float)));
*(float*)(arguments->next->value) = delay;
arguments->next->next = args;
return TM_AddAction(*runinbackground, arguments);
}
void TM_AddDelay(float delay) {
/*int *tmp;
tmp = malloc(sizeof(int));
@ -306,5 +321,3 @@ bool TM_Initialized() {
if (game) return true;
return false;
}
// TODO: write TM_AddQueuedBackgroundAction

View file

@ -55,3 +55,4 @@ void TM_Destroy();
struct TM_Arguments* TM_AddToArgs(struct TM_Arguments* args, void* arg);
void TM_DestroyArgs(struct TM_Arguments* args);
bool TM_Initialized();
struct TM_Action* TM_AddQueuedBackgroundAction(bool (*func)(struct Game*, struct TM_Action*, enum TM_ActionState), struct TM_Arguments* args, float delay);