mirror of
https://gitlab.com/dosowisko.net/libsuperderpy.git
synced 2025-02-01 11:06:44 +01:00
implement and use TM_AddQueuedBackgroundAction
This commit is contained in:
parent
270e137ee5
commit
cf2bc20b68
3 changed files with 18 additions and 9 deletions
|
@ -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) {
|
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 (state != TM_ACTIONSTATE_RUNNING) return false;
|
||||||
if (!action->arguments) {
|
|
||||||
action->arguments++;
|
|
||||||
TM_AddBackgroundAction(&Accelerate, NULL, 0);
|
|
||||||
}
|
|
||||||
game->level.derpy_y-=0.004;
|
game->level.derpy_y-=0.004;
|
||||||
if (game->level.derpy_y>0.2) return false;
|
if (game->level.derpy_y>0.2) return false;
|
||||||
game->level.handle_input=true;
|
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);
|
free(action->arguments->next->value);
|
||||||
TM_DestroyArgs(action->arguments);
|
TM_DestroyArgs(action->arguments);
|
||||||
action->arguments = NULL;
|
action->arguments = NULL;
|
||||||
//TM_AddBackgroundAction(&Accelerate, NULL, 1000);
|
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -249,11 +243,12 @@ void Level_Load(struct Game *game) {
|
||||||
TM_Init(game);
|
TM_Init(game);
|
||||||
TM_AddBackgroundAction(&FadeIn, NULL, 0);
|
TM_AddBackgroundAction(&FadeIn, NULL, 0);
|
||||||
TM_AddDelay(1000);
|
TM_AddDelay(1000);
|
||||||
TM_AddAction(&Welcome, NULL);
|
TM_AddQueuedBackgroundAction(&Welcome, NULL, 0);
|
||||||
TM_AddAction(&Walk, NULL);
|
TM_AddAction(&Walk, NULL);
|
||||||
TM_AddAction(&Move, NULL);
|
TM_AddAction(&Move, NULL);
|
||||||
TM_AddAction(&Stop, NULL);
|
TM_AddAction(&Stop, NULL);
|
||||||
TM_AddDelay(5*1000);
|
TM_AddDelay(5*1000);
|
||||||
|
TM_AddQueuedBackgroundAction(&Accelerate, NULL, 0);
|
||||||
TM_AddAction(&Fly, NULL);
|
TM_AddAction(&Fly, NULL);
|
||||||
// Derpy walks in... (background - owl)
|
// Derpy walks in... (background - owl)
|
||||||
// Derpy reads a letter
|
// Derpy reads a letter
|
||||||
|
|
|
@ -190,6 +190,21 @@ struct TM_Action* TM_AddBackgroundAction(bool (*func)(struct Game*, struct TM_Ac
|
||||||
return action;
|
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) {
|
void TM_AddDelay(float delay) {
|
||||||
/*int *tmp;
|
/*int *tmp;
|
||||||
tmp = malloc(sizeof(int));
|
tmp = malloc(sizeof(int));
|
||||||
|
@ -306,5 +321,3 @@ bool TM_Initialized() {
|
||||||
if (game) return true;
|
if (game) return true;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: write TM_AddQueuedBackgroundAction
|
|
||||||
|
|
|
@ -55,3 +55,4 @@ void TM_Destroy();
|
||||||
struct TM_Arguments* TM_AddToArgs(struct TM_Arguments* args, void* arg);
|
struct TM_Arguments* TM_AddToArgs(struct TM_Arguments* args, void* arg);
|
||||||
void TM_DestroyArgs(struct TM_Arguments* args);
|
void TM_DestroyArgs(struct TM_Arguments* args);
|
||||||
bool TM_Initialized();
|
bool TM_Initialized();
|
||||||
|
struct TM_Action* TM_AddQueuedBackgroundAction(bool (*func)(struct Game*, struct TM_Action*, enum TM_ActionState), struct TM_Arguments* args, float delay);
|
||||||
|
|
Loading…
Reference in a new issue