From d66b39fe584208ea8c2e30d6e94400749a30caf0 Mon Sep 17 00:00:00 2001 From: Jucan Andrei Daniel Date: Mon, 21 Aug 2023 17:50:54 +0300 Subject: [PATCH] c_menu and c_menu_item added --- include/phoenix/cffi/Vm.h | 54 +++++++++- src/Vm.cc | 202 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 255 insertions(+), 1 deletion(-) diff --git a/include/phoenix/cffi/Vm.h b/include/phoenix/cffi/Vm.h index 36bc409..f8a44c1 100644 --- a/include/phoenix/cffi/Vm.h +++ b/include/phoenix/cffi/Vm.h @@ -20,7 +20,9 @@ typedef enum { PxVm_InstanceTypeNpc = 1, PxVm_InstanceTypeItem = 2, PxVm_InstanceTypeSfx = 3, - PxVm_InstanceTypeMusic = 4 + PxVm_InstanceTypeMusic = 4, + PxVm_InstanceTypeMenu = 5, + PxVm_InstanceTypeMenuItem = 6 } PxVmInstanceType; typedef void (*PxVmExternalCallback)(PxVm* vm); @@ -131,6 +133,56 @@ PXC_API int32_t pxVmInstanceItemGetInvRotY(PxVmInstance const* instance); PXC_API int32_t pxVmInstanceItemGetInvRotZ(PxVmInstance const* instance); PXC_API int32_t pxVmInstanceItemGetInvAnimate(PxVmInstance const* instance); +// C_MENU +PXC_API char const* pxVmInstanceMenuGetBackPic(PxVmInstance const* instance); +PXC_API char const* pxVmInstanceMenuGetBackWorld(PxVmInstance const* instance); +PXC_API int32_t pxVmInstanceMenuGetPosX(PxVmInstance const* instance); +PXC_API int32_t pxVmInstanceMenuGetPosY(PxVmInstance const* instance); +PXC_API int32_t pxVmInstanceMenuGetDimX(PxVmInstance const* instance); +PXC_API int32_t pxVmInstanceMenuGetDimY(PxVmInstance const* instance); +PXC_API int32_t pxVmInstanceMenuGetAlpha(PxVmInstance const* instance); +PXC_API char const* pxVmInstanceMenuGetMusicTheme(PxVmInstance const* instance); +PXC_API int32_t pxVmInstanceMenuGetEventTimerMsec(PxVmInstance const* instance); +PXC_API uint8_t pxVmInstanceMenuGetItemsLength(PxVmInstance const* instance); +PXC_API char const* pxVmInstanceMenuGetItems(PxVmInstance const* instance, uint8_t i); +PXC_API uint32_t pxVmInstanceMenuGetFlags(PxVmInstance const* instance); +PXC_API int32_t pxVmInstanceMenuGetDefaultOutgame(PxVmInstance const* instance); +PXC_API int32_t pxVmInstanceMenuGetDefaultIngame(PxVmInstance const* instance); + +// C_MENU_ITEM +PXC_API char const* pxVmInstanceMenuItemGetFontname(PxVmInstance const* instance); +PXC_API uint32_t pxVmInstanceMenuItemGetTextLength(PxVmInstance const* instance); +PXC_API char const* pxVmInstanceMenuItemGetText(PxVmInstance const* instance, uint32_t i); +PXC_API char const* pxVmInstanceMenuItemGetBackpic(PxVmInstance const* instance); +PXC_API char const* pxVmInstanceMenuItemGetAlphamode(PxVmInstance const* instance); +PXC_API int32_t pxVmInstanceMenuItemGetAlpha(PxVmInstance const* instance); +PXC_API uint32_t pxVmInstanceMenuItemGetType(PxVmInstance const* instance); +PXC_API uint32_t pxVmInstanceMenuItemGetOnSelActionLength(PxVmInstance const* instance); +PXC_API int32_t pxVmInstanceMenuItemGetOnSelAction(PxVmInstance const* instance, uint32_t i); +PXC_API uint32_t pxVmInstanceMenuItemGetOnSelActionSLength(PxVmInstance const* instance); +PXC_API char const* pxVmInstanceMenuItemGetOnSelActionS(PxVmInstance const* instance, uint32_t i); +PXC_API char const* pxVmInstanceMenuItemGetOnChgSetOption(PxVmInstance const* instance); +PXC_API char const* pxVmInstanceMenuItemGetOnChgSetOptionSection(PxVmInstance const* instance); +PXC_API uint32_t pxVmInstanceMenuItemGetOnEventActionLength(PxVmInstance const* instance); +PXC_API int32_t pxVmInstanceMenuItemGetOnEventAction(PxVmInstance const* instance, uint32_t i); +PXC_API int32_t pxVmInstanceMenuItemGetPosX(PxVmInstance const* instance); +PXC_API int32_t pxVmInstanceMenuItemGetPosY(PxVmInstance const* instance); +PXC_API int32_t pxVmInstanceMenuItemGetDimX(PxVmInstance const* instance); +PXC_API int32_t pxVmInstanceMenuItemGetDimY(PxVmInstance const* instance); +PXC_API float pxVmInstanceMenuItemGetSizeStartScale(PxVmInstance const* instance); +PXC_API uint32_t pxVmInstanceMenuItemGetFlags(PxVmInstance const* instance); +PXC_API float pxVmInstanceMenuItemGetOpenDelayTime(PxVmInstance const* instance); +PXC_API float pxVmInstanceMenuItemGetOpenDuration(PxVmInstance const* instance); +PXC_API uint32_t pxVmInstanceMenuItemGetUserFloatLength(PxVmInstance const* instance); +PXC_API float pxVmInstanceMenuItemGetUserFloat(PxVmInstance const* instance, uint32_t i); +PXC_API uint32_t pxVmInstanceMenuItemGetUserStringLength(PxVmInstance const* instance); +PXC_API char const* pxVmInstanceMenuItemGetUserString(PxVmInstance const* instance, uint32_t i); +PXC_API int32_t pxVmInstanceMenuItemGetFrameSizex(PxVmInstance const* instance); +PXC_API int32_t pxVmInstanceMenuItemGetFrameSizey(PxVmInstance const* instance); +PXC_API char const* pxVmInstanceMenuItemGetHideIfOptionSectionSet(PxVmInstance const* instance); +PXC_API char const* pxVmInstanceMenuItemGetHideIfOptionSet(PxVmInstance const* instance); +PXC_API int32_t pxVmInstanceMenuItemGetHideOnValue(PxVmInstance const* instance); + // C_SFX PXC_API char const* pxVmInstanceSfxGetFile(PxVmInstance const* instance); PXC_API int32_t pxVmInstanceSfxGetPitchOff(PxVmInstance const* instance); diff --git a/src/Vm.cc b/src/Vm.cc index 47cff05..af01854 100644 --- a/src/Vm.cc +++ b/src/Vm.cc @@ -353,6 +353,12 @@ static PxVmInstance* pxInternalVmInstanceAllocate(PxVm* vm, phoenix::symbol* sym case PxVm_InstanceTypeMusic: instance = vm->vm.allocate_instance(sym).get(); break; + case PxVm_InstanceTypeMenu: + instance = vm->vm.allocate_instance(sym).get(); + break; + case PxVm_InstanceTypeMenuItem: + instance = vm->vm.allocate_instance(sym).get(); + break; } return instance; @@ -401,6 +407,16 @@ pxInternalVmInstanceInitialize(PxVm* vm, phoenix::symbol* sym, PxVmInstanceType vm->vm.init_instance({sym->get_instance(), v}, sym); break; } + case PxVm_InstanceTypeMenu: { + auto* v = reinterpret_cast(sym->get_instance().get()); + vm->vm.init_instance({sym->get_instance(), v}, sym); + break; + } + case PxVm_InstanceTypeMenuItem: { + auto* v = reinterpret_cast(sym->get_instance().get()); + vm->vm.init_instance({sym->get_instance(), v}, sym); + break; + } } return existing; @@ -666,6 +682,192 @@ int32_t pxVmInstanceItemGetInvAnimate(PxVmInstance const* instance) { return RCC(phoenix::c_item, instance)->inv_animate; } +// C_Menu +char const* pxVmInstanceMenuGetBackPic(PxVmInstance const* instance) { + return RCC(phoenix::c_menu, instance)->back_pic.c_str(); +} + +char const* pxVmInstanceMenuGetBackWorld(PxVmInstance const* instance) { + return RCC(phoenix::c_menu, instance)->back_world.c_str(); +} + +int32_t pxVmInstanceMenuGetPosX(PxVmInstance const* instance) { + return RCC(phoenix::c_menu, instance)->pos_x; +} + +int32_t pxVmInstanceMenuGetPosY(PxVmInstance const* instance) { + return RCC(phoenix::c_menu, instance)->pos_y; +} + +int32_t pxVmInstanceMenuGetDimX(PxVmInstance const* instance) { + return RCC(phoenix::c_menu, instance)->dim_x; +} + +int32_t pxVmInstanceMenuGetDimY(PxVmInstance const* instance) { + return RCC(phoenix::c_menu, instance)->dim_y; +} + +int32_t pxVmInstanceMenuGetAlpha(PxVmInstance const* instance) { + return RCC(phoenix::c_menu, instance)->alpha; +} + +char const* pxVmInstanceMenuGetMusicTheme(PxVmInstance const* instance) { + return RCC(phoenix::c_menu, instance)->music_theme.c_str(); +} + +int32_t pxVmInstanceMenuGetEventTimerMsec(PxVmInstance const* instance) { + return RCC(phoenix::c_menu, instance)->event_timer_msec; +} + +uint8_t pxVmInstanceMenuGetItemsLength(PxVmInstance const* instance) { + return RCC(phoenix::c_menu, instance)->item_count; +} + +char const* pxVmInstanceMenuGetItems(PxVmInstance const* instance, uint8_t i) { + return RCC(phoenix::c_menu, instance)->items[i].c_str(); +} + +uint32_t pxVmInstanceMenuGetFlags(PxVmInstance const* instance) { + return static_cast(RCC(phoenix::c_menu, instance)->flags); +} + +int32_t pxVmInstanceMenuGetDefaultOutgame(PxVmInstance const* instance) { + return RCC(phoenix::c_menu, instance)->default_outgame; +} + +int32_t pxVmInstanceMenuGetDefaultIngame(PxVmInstance const* instance) { + return RCC(phoenix::c_menu, instance)->default_ingame; +} + +// C_Menu_Item +char const* pxVmInstanceMenuItemGetFontname(PxVmInstance const* instance) { + return RCC(phoenix::c_menu_item, instance)->fontname.c_str(); +} + +uint32_t pxVmInstanceMenuItemGetTextLength(PxVmInstance const* instance) { + return RCC(phoenix::c_menu_item, instance)->text_count; +} + +char const* pxVmInstanceMenuItemGetText(PxVmInstance const* instance, uint32_t i) { + return RCC(phoenix::c_menu_item, instance)->text[i].c_str(); +} + +char const* pxVmInstanceMenuItemGetBackpic(PxVmInstance const* instance) { + return RCC(phoenix::c_menu_item, instance)->backpic.c_str(); +} + +char const* pxVmInstanceMenuItemGetAlphamode(PxVmInstance const* instance) { + return RCC(phoenix::c_menu_item, instance)->alphamode.c_str(); +} + +int32_t pxVmInstanceMenuItemGetAlpha(PxVmInstance const* instance) { + return RCC(phoenix::c_menu_item, instance)->alpha; +} + +uint32_t pxVmInstanceMenuItemGetType(PxVmInstance const* instance) { + return static_cast(RCC(phoenix::c_menu_item, instance)->type); +} + +uint32_t pxVmInstanceMenuItemGetOnSelActionLength(PxVmInstance const* instance) { + return RCC(phoenix::c_menu_item, instance)->select_action_count; +} + +int32_t pxVmInstanceMenuItemGetOnSelAction(PxVmInstance const* instance, uint32_t i) { + return RCC(phoenix::c_menu_item, instance)->on_sel_action[i]; +} + +uint32_t pxVmInstanceMenuItemGetOnSelActionSLength(PxVmInstance const* instance) { + return RCC(phoenix::c_menu_item, instance)->select_action_count; +} + +char const* pxVmInstanceMenuItemGetOnSelActionS(PxVmInstance const* instance, uint32_t i) { + return RCC(phoenix::c_menu_item, instance)->on_sel_action_s[i].c_str(); +} + +char const* pxVmInstanceMenuItemGetOnChgSetOption(PxVmInstance const* instance) { + return RCC(phoenix::c_menu_item, instance)->on_chg_set_option.c_str(); +} + +char const* pxVmInstanceMenuItemGetOnChgSetOptionSection(PxVmInstance const* instance) { + return RCC(phoenix::c_menu_item, instance)->on_chg_set_option_section.c_str(); +} + +uint32_t pxVmInstanceMenuItemGetOnEventActionLength(PxVmInstance const* instance) { + return RCC(phoenix::c_menu_item, instance)->event_action_count; +} + +int32_t pxVmInstanceMenuItemGetOnEventAction(PxVmInstance const* instance, uint32_t i) { + return RCC(phoenix::c_menu_item, instance)->on_event_action[i]; +} + +int32_t pxVmInstanceMenuItemGetPosX(PxVmInstance const* instance) { + return RCC(phoenix::c_menu_item, instance)->pos_x; +} + +int32_t pxVmInstanceMenuItemGetPosY(PxVmInstance const* instance) { + return RCC(phoenix::c_menu_item, instance)->pos_y; +} + +int32_t pxVmInstanceMenuItemGetDimX(PxVmInstance const* instance) { + return RCC(phoenix::c_menu_item, instance)->dim_x; +} + +int32_t pxVmInstanceMenuItemGetDimY(PxVmInstance const* instance) { + return RCC(phoenix::c_menu_item, instance)->dim_y; +} + +float pxVmInstanceMenuItemGetSizeStartScale(PxVmInstance const* instance) { + return RCC(phoenix::c_menu_item, instance)->size_start_scale; +} + +uint32_t pxVmInstanceMenuItemGetFlags(PxVmInstance const* instance) { + return static_cast(RCC(phoenix::c_menu_item, instance)->flags); +} + +float pxVmInstanceMenuItemGetOpenDelayTime(PxVmInstance const* instance) { + return RCC(phoenix::c_menu_item, instance)->open_delay_time; +} + +float pxVmInstanceMenuItemGetOpenDuration(PxVmInstance const* instance) { + return RCC(phoenix::c_menu_item, instance)->open_duration; +} + +uint32_t pxVmInstanceMenuItemGetUserFloatLength(PxVmInstance const* instance) { + return RCC(phoenix::c_menu_item, instance)->user_item_count; +} + +float pxVmInstanceMenuItemGetUserFloat(PxVmInstance const* instance, uint32_t i) { + return RCC(phoenix::c_menu_item, instance)->user_float[i]; +} + +uint32_t pxVmInstanceMenuItemGetUserStringLength(PxVmInstance const* instance) { + return RCC(phoenix::c_menu_item, instance)->user_item_count; +} + +char const* pxVmInstanceMenuItemGetUserString(PxVmInstance const* instance, uint32_t i) { + return RCC(phoenix::c_menu_item, instance)->user_string[i].c_str(); +} + +int32_t pxVmInstanceMenuItemGetFrameSizex(PxVmInstance const* instance) { + return RCC(phoenix::c_menu_item, instance)->frame_sizex; +} + +int32_t pxVmInstanceMenuItemGetFrameSizey(PxVmInstance const* instance) { + return RCC(phoenix::c_menu_item, instance)->frame_sizey; +} + +char const* pxVmInstanceMenuItemGetHideIfOptionSectionSet(PxVmInstance const* instance) { + return RCC(phoenix::c_menu_item, instance)->hide_if_option_section_set.c_str(); +} + +char const* pxVmInstanceMenuItemGetHideIfOptionSet(PxVmInstance const* instance) { + return RCC(phoenix::c_menu_item, instance)->hide_if_option_set.c_str(); +} + +int32_t pxVmInstanceMenuItemGetHideOnValue(PxVmInstance const* instance) { + return RCC(phoenix::c_menu_item, instance)->hide_on_value; +} + // C_Sfx char const* pxVmInstanceSfxGetFile(PxVmInstance const* instance) { return RCC(phoenix::c_sfx, instance)->file.c_str();