-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathe_state.c
45 lines (37 loc) · 1.19 KB
/
e_state.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
//
// edit_state.c
// de
//
// Created by Thomas Foster on 5/30/23.
//
#include "e_state.h"
void UpdateEdit(float dt);
void UpdateAutoscroll(float dt);
void UpdateSelectionBox(float dt);
void UpdateDragView(float dt);
void DragSelectedObjects(float dt);
void UpdateNewLine(float dt);
void ProcessEditorEvent(const SDL_Event * event);
void HandleDragBoxEvent(const SDL_Event * event);
void HandleDragViewEvent(const SDL_Event * event);
void HandleDragObjectsEvent(const SDL_Event * event);
void ProcessNewLineEvent(const SDL_Event * event);
EditorStateID editorState;
EditorState states[] = {
[ES_EDIT] = { ProcessEditorEvent, UpdateEdit },
[ES_AUTO_SCROLL] = { NULL, UpdateAutoscroll },
[ES_DRAG_BOX] = { HandleDragBoxEvent, UpdateSelectionBox },
[ES_DRAG_VIEW] = { HandleDragViewEvent, UpdateDragView },
[ES_DRAG_OBJECTS] = { HandleDragObjectsEvent, DragSelectedObjects },
[ES_NEW_LINE] = { ProcessNewLineEvent, UpdateNewLine },
};
void StateUpdate(float dt)
{
if ( states[editorState].update )
states[editorState].update(dt);
}
void StateHandleEvent(const SDL_Event * event)
{
if ( states[editorState].handleEvent )
states[editorState].handleEvent(event);
}