mirror of
https://github.com/ClassiCube/ClassiCube.git
synced 2025-09-17 11:35:08 -04:00
Give in to popular demand and also export ScheduledTask_Add
Also export Keybind_IsPressed
This commit is contained in:
parent
c0545de38b
commit
3861b0bd10
27
src/Game.c
27
src/Game.c
@ -54,9 +54,6 @@ cc_bool Game_AllowServerTextures;
|
|||||||
cc_bool Game_ViewBobbing, Game_HideGui;
|
cc_bool Game_ViewBobbing, Game_HideGui;
|
||||||
cc_bool Game_BreakableLiquids, Game_ScreenshotRequested;
|
cc_bool Game_BreakableLiquids, Game_ScreenshotRequested;
|
||||||
|
|
||||||
static struct ScheduledTask tasks[6];
|
|
||||||
static int tasksCount, entTaskI;
|
|
||||||
|
|
||||||
static char usernameBuffer[FILENAME_SIZE];
|
static char usernameBuffer[FILENAME_SIZE];
|
||||||
static char mppassBuffer[STRING_SIZE];
|
static char mppassBuffer[STRING_SIZE];
|
||||||
String Game_Username = String_FromArray(usernameBuffer);
|
String Game_Username = String_FromArray(usernameBuffer);
|
||||||
@ -72,15 +69,22 @@ void Game_AddComponent(struct IGameComponent* comp) {
|
|||||||
LinkedList_Add(comp, comps_head, comps_tail);
|
LinkedList_Add(comp, comps_head, comps_tail);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define TASKS_DEF_ELEMS 6
|
||||||
|
static struct ScheduledTask defaultTasks[TASKS_DEF_ELEMS];
|
||||||
|
static int tasksCapacity = TASKS_DEF_ELEMS, tasksCount, entTaskI;
|
||||||
|
static struct ScheduledTask* tasks = defaultTasks;
|
||||||
|
|
||||||
int ScheduledTask_Add(double interval, ScheduledTaskCallback callback) {
|
int ScheduledTask_Add(double interval, ScheduledTaskCallback callback) {
|
||||||
struct ScheduledTask task;
|
struct ScheduledTask task;
|
||||||
task.accumulator = 0.0;
|
task.accumulator = 0.0;
|
||||||
task.interval = interval;
|
task.interval = interval;
|
||||||
task.Callback = callback;
|
task.Callback = callback;
|
||||||
|
|
||||||
if (tasksCount == Array_Elems(tasks)) {
|
if (tasksCount == tasksCapacity) {
|
||||||
Logger_Abort("ScheduledTask_Add - hit max count");
|
Utils_Resize((void**)&tasks, &tasksCapacity,
|
||||||
|
sizeof(struct ScheduledTask), TASKS_DEF_ELEMS, TASKS_DEF_ELEMS);
|
||||||
}
|
}
|
||||||
|
|
||||||
tasks[tasksCount++] = task;
|
tasks[tasksCount++] = task;
|
||||||
return tasksCount - 1;
|
return tasksCount - 1;
|
||||||
}
|
}
|
||||||
@ -493,18 +497,17 @@ static void Game_Render3D(double delta, float t) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void PerformScheduledTasks(double time) {
|
static void PerformScheduledTasks(double time) {
|
||||||
struct ScheduledTask task;
|
struct ScheduledTask* task;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
for (i = 0; i < tasksCount; i++) {
|
for (i = 0; i < tasksCount; i++) {
|
||||||
task = tasks[i];
|
task = &tasks[i];
|
||||||
task.accumulator += time;
|
task->accumulator += time;
|
||||||
|
|
||||||
while (task.accumulator >= task.interval) {
|
while (task->accumulator >= task->interval) {
|
||||||
task.Callback(&task);
|
task->Callback(task);
|
||||||
task.accumulator -= task.interval;
|
task->accumulator -= task->interval;
|
||||||
}
|
}
|
||||||
tasks[i] = task;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -111,6 +111,6 @@ struct ScheduledTask {
|
|||||||
};
|
};
|
||||||
|
|
||||||
typedef void (*ScheduledTaskCallback)(struct ScheduledTask* task);
|
typedef void (*ScheduledTaskCallback)(struct ScheduledTask* task);
|
||||||
/* Adds a component to list of scheduled tasks. (always at end) */
|
/* Adds a task to list of scheduled tasks. (always at end) */
|
||||||
CC_NOINLINE int ScheduledTask_Add(double interval, ScheduledTaskCallback callback);
|
CC_API int ScheduledTask_Add(double interval, ScheduledTaskCallback callback);
|
||||||
#endif
|
#endif
|
||||||
|
@ -121,7 +121,7 @@ extern cc_uint8 KeyBinds[KEYBIND_COUNT];
|
|||||||
extern const cc_uint8 KeyBind_Defaults[KEYBIND_COUNT];
|
extern const cc_uint8 KeyBind_Defaults[KEYBIND_COUNT];
|
||||||
|
|
||||||
/* Gets whether the key bound to the given key binding is pressed. */
|
/* Gets whether the key bound to the given key binding is pressed. */
|
||||||
cc_bool KeyBind_IsPressed(KeyBind binding);
|
CC_API cc_bool KeyBind_IsPressed(KeyBind binding);
|
||||||
/* Set the key that the given key binding is bound to. (also updates options list) */
|
/* Set the key that the given key binding is bound to. (also updates options list) */
|
||||||
void KeyBind_Set(KeyBind binding, int key);
|
void KeyBind_Set(KeyBind binding, int key);
|
||||||
|
|
||||||
|
@ -34,7 +34,6 @@ struct Stream {
|
|||||||
struct { cc_uint8* Cur; cc_uint32 Left, Length; cc_uint8* Base; } Mem;
|
struct { cc_uint8* Cur; cc_uint32 Left, Length; cc_uint8* Base; } Mem;
|
||||||
struct { struct Stream* Source; cc_uint32 Left, Length; } Portion;
|
struct { struct Stream* Source; cc_uint32 Left, Length; } Portion;
|
||||||
struct { cc_uint8* Cur; cc_uint32 Left, Length; cc_uint8* Base; struct Stream* Source; cc_uint32 End; } Buffered;
|
struct { cc_uint8* Cur; cc_uint32 Left, Length; cc_uint8* Base; struct Stream* Source; cc_uint32 End; } Buffered;
|
||||||
struct { cc_uint8* Cur; cc_uint32 Left, Last; cc_uint8* Base; struct Stream* Source; } Ogg;
|
|
||||||
struct { struct Stream* Source; cc_uint32 CRC32; } CRC32;
|
struct { struct Stream* Source; cc_uint32 CRC32; } CRC32;
|
||||||
} Meta;
|
} Meta;
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user