Refactoring structs Part 1
This commit is contained in:
80
temp/action/action.c
Normal file
80
temp/action/action.c
Normal file
@ -0,0 +1,80 @@
|
||||
/**
|
||||
* Copyright (c) 2021 Dominic Masters
|
||||
*
|
||||
* This software is released under the MIT License.
|
||||
* https://opensource.org/licenses/MIT
|
||||
*/
|
||||
|
||||
#include "action.h"
|
||||
|
||||
void pokerActionInit() {
|
||||
// Free up all actions
|
||||
memset(GAME_STATE.actionQueue, (int32_t)NULL,
|
||||
sizeof(pokeraction_t) * POKER_ACTION_QUEUE_SIZE
|
||||
);
|
||||
|
||||
// Free up all data
|
||||
memset(GAME_STATE.actionData, (int32_t)NULL, sizeof(void *) *
|
||||
POKER_ACTION_DATA_SIZE * POKER_ACTION_QUEUE_SIZE
|
||||
);
|
||||
}
|
||||
|
||||
int32_t pokerActionAdd(pokeraction_t action) {
|
||||
int32_t i = -1;
|
||||
int32_t j = -1;
|
||||
|
||||
for(i = 0; i < POKER_ACTION_QUEUE_SIZE; i++) {
|
||||
if(GAME_STATE.actionQueue[i].init != NULL) continue;
|
||||
j = i;
|
||||
break;
|
||||
}
|
||||
if(j == -1) return j;
|
||||
|
||||
GAME_STATE.actionQueue[j] = action;
|
||||
GAME_STATE.actionInitState[j] = false;
|
||||
return j;
|
||||
}
|
||||
|
||||
void pokerActionRemove(int32_t index) {
|
||||
if(GAME_STATE.actionQueue[index].dispose != NULL) {
|
||||
GAME_STATE.actionQueue[index].dispose(
|
||||
index, GAME_STATE.actionData + index
|
||||
);
|
||||
}
|
||||
|
||||
memset(GAME_STATE.actionQueue+index, (int32_t)NULL,
|
||||
sizeof(pokeraction_t)
|
||||
);
|
||||
|
||||
memset(GAME_STATE.actionData+index, (int32_t)NULL,
|
||||
sizeof(void *) * POKER_ACTION_DATA_SIZE
|
||||
);
|
||||
}
|
||||
|
||||
void pokerActionUpdate() {
|
||||
int32_t i;
|
||||
void **data;
|
||||
pokeraction_t *action;
|
||||
|
||||
for(i = 0; i < POKER_ACTION_QUEUE_SIZE; i++) {
|
||||
action = GAME_STATE.actionQueue + i;
|
||||
data = GAME_STATE.actionData + i;
|
||||
|
||||
if(action->init != NULL && !GAME_STATE.actionInitState[i]) {
|
||||
GAME_STATE.actionInitState[i] = true;
|
||||
action->init(i, data);
|
||||
}
|
||||
|
||||
if(action->update != NULL) {
|
||||
action->update(i, data);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void pokerActionDispose() {
|
||||
int32_t i;
|
||||
for(i = 0; i < POKER_ACTION_QUEUE_SIZE; i++) {
|
||||
if(GAME_STATE.actionQueue[i].dispose == NULL) continue;
|
||||
GAME_STATE.actionQueue[i].dispose(i, GAME_STATE.actionData+i);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user