Implement GUIEngine.{Set,Get}DelegateIndex

This commit is contained in:
Nunuhara Cabbage
2022-06-08 17:09:47 -07:00
parent 09f2c3e1ed
commit 1484a207c5
4 changed files with 27 additions and 3 deletions
+2
View File
@@ -26,6 +26,8 @@ struct string;
bool PE_Init(void);
void PE_Update(int passed_time, bool message_window_show);
void PE_UpdateParts(int passed_time, bool is_skip, bool message_window_show);
void PE_SetDelegateIndex(int parts_no, int delegate_index);
int PE_GetDelegateIndex(int parts_no);
bool PE_SetPartsCG(int parts_no, struct string *cg_name, int sprite_deform, int state);
bool PE_SetPartsCG_by_index(int parts_no, int cg_no, int sprite_deform, int state);
bool PE_SetPartsCGSurfaceArea(int parts_no, int x, int y, int w, int h, int state);
+2 -2
View File
@@ -505,7 +505,7 @@ HLL_LIBRARY(GUIEngine,
HLL_EXPORT(Release, PE_ReleaseParts),
HLL_EXPORT(ReleaseAll, PE_ReleaseAllParts),
HLL_EXPORT(ReleaseAllWithoutSystem, PE_ReleaseAllPartsWithoutSystem),
HLL_TODO_EXPORT(SetDelegateIndex, GUIEngine_SetDelegateIndex),
HLL_EXPORT(SetDelegateIndex, PE_SetDelegateIndex),
HLL_EXPORT(GetFreeNumber, PE_GetFreeNumber),
HLL_EXPORT(IsExist, PE_IsExist),
HLL_TODO_EXPORT(PushController, GUIEngine_PushController),
@@ -522,7 +522,7 @@ HLL_LIBRARY(GUIEngine,
HLL_TODO_EXPORT(PopMessage, GUIEngine_PopMessage),
HLL_TODO_EXPORT(GetMessagePartsNumber, GUIEngine_GetMessagePartsNumber),
HLL_TODO_EXPORT(GetMessageDelegateIndex, GUIEngine_GetMessageDelegateIndex),
HLL_TODO_EXPORT(GetDelegateIndex, GUIEngine_GetDelegateIndex),
HLL_EXPORT(GetDelegateIndex, PE_GetDelegateIndex),
HLL_EXPORT(GetMessageType, GUIEngine_GetMessageType),
HLL_TODO_EXPORT(GetMessageVariableCount, GUIEngine_GetMessageVariableCount),
HLL_TODO_EXPORT(GetMessageVariableType, GUIEngine_GetMessageVariableType),
+21 -1
View File
@@ -32,6 +32,7 @@ static struct hash_table *parts_table = NULL;
static void parts_init(struct parts *parts)
{
memset(parts, 0, sizeof(struct parts));
parts->delegate_index = -1;
parts->on_cursor_sound = -1;
parts->on_click_sound = -1;
parts->origin_mode = 1;
@@ -47,7 +48,6 @@ static void parts_init(struct parts *parts)
parts->rotation.z = 0.0;
TAILQ_INIT(&parts->children);
TAILQ_INIT(&parts->motion);
gfx_font_init();
}
static struct parts *parts_alloc(void)
@@ -70,6 +70,14 @@ static void parts_list_insert(struct parts_list *list, struct parts *parts)
parts_engine_dirty();
}
struct parts *parts_try_get(int parts_no)
{
struct ht_slot *slot = ht_put_int(parts_table, parts_no, NULL);
if (slot->value)
return slot->value;
return NULL;
}
struct parts *parts_get(int parts_no)
{
struct ht_slot *slot = ht_put_int(parts_table, parts_no, NULL);
@@ -537,6 +545,7 @@ bool PE_Init(void)
{
parts_table = ht_create(1024);
parts_render_init();
gfx_font_init();
return true;
}
@@ -555,6 +564,17 @@ void PE_UpdateParts(int passed_time, possibly_unused bool is_skip, possibly_unus
parts_engine_dirty();
}
void PE_SetDelegateIndex(int parts_no, int delegate_index)
{
parts_get(parts_no)->delegate_index = delegate_index;
}
int PE_GetDelegateIndex(int parts_no)
{
struct parts *parts = parts_try_get(parts_no);
return parts ? parts->delegate_index : -1;
}
bool PE_SetPartsCG(int parts_no, struct string *cg_name, possibly_unused int sprite_deform, int state)
{
if (!parts_state_valid(--state)) {
+2
View File
@@ -178,6 +178,7 @@ struct parts {
TAILQ_ENTRY(parts) parts_list_entry;
struct parts_list children;
int no;
int delegate_index;
int sprite_deform;
bool clickable;
int on_cursor_sound;
@@ -200,6 +201,7 @@ struct parts {
// parts.c
extern struct parts_list parts_list;
struct parts *parts_try_get(int parts_no);
struct parts *parts_get(int parts_no);
struct parts_cg *parts_get_cg(struct parts *parts, int state);
struct parts_text *parts_get_text(struct parts *parts, int state);