mirror of
https://github.com/ACreTeam/ac-decomp
synced 2026-05-23 06:34:18 -04:00
Merge pull request #177 from Cuyler36/passwordChk_passwordMake_ovls
Implement & link m_passwordMake_ovl, m_passwordChk_ovl
This commit is contained in:
@@ -587,6 +587,16 @@ m_warning_ovl.c:
|
||||
.rodata: [0x8064BA58, 0x8064BA78]
|
||||
.data: [0x806D13E8, 0x806D1CD0]
|
||||
.bss: [0x813413B0, 0x813413B8]
|
||||
m_passwordMake_ovl.c:
|
||||
.text: [0x80600B00, 0x80601290]
|
||||
.rodata: [0x8064BA78, 0x8064BAB0]
|
||||
.data: [0x806D1CD0, 0x806D1D18]
|
||||
.bss: [0x813413B8, 0x813413D0]
|
||||
m_passwordChk_ovl.c:
|
||||
.text: [0x80601290, 0x8060193C]
|
||||
.rodata: [0x8064BAB0, 0x8064BAE8]
|
||||
.data: [0x806D1D18, 0x806D1D50]
|
||||
.bss: [0x813413D0, 0x813413F8]
|
||||
ac_weather.c:
|
||||
.text: [0x8060193C, 0x80602E70]
|
||||
.rodata: [0x8064BAE8, 0x8064BB08]
|
||||
|
||||
+9
-1
@@ -193,7 +193,7 @@ typedef struct {
|
||||
typedef struct {
|
||||
int type;
|
||||
int got_gold_scoop;
|
||||
int balloon_shape_type
|
||||
int balloon_shape_type;
|
||||
} mPlayer_request_release_creature_balloon_from_submenu_c;
|
||||
|
||||
typedef struct {
|
||||
@@ -201,6 +201,13 @@ typedef struct {
|
||||
ACTOR* speak_actor;
|
||||
} mPlayer_request_demo_wait_from_submenu_c;
|
||||
|
||||
typedef struct {
|
||||
int direct;
|
||||
s16 angle;
|
||||
xyz_t wpos;
|
||||
int ftr_name;
|
||||
} mPlayer_request_lie_bed_c;
|
||||
|
||||
typedef union {
|
||||
mPlayer_request_give_from_submenu_c give_from_submenu;
|
||||
mPlayer_request_putin_scoop_from_submenu_data_c putin_scoop_from_submenu;
|
||||
@@ -208,6 +215,7 @@ typedef union {
|
||||
mPlayer_request_release_creature_insect_from_submenu_c release_creature_insect_from_submenu;
|
||||
mPlayer_request_release_creature_balloon_from_submenu_c release_creature_balloon_from_submenu;
|
||||
mPlayer_request_demo_wait_from_submenu_c demo_wait_from_submenu;
|
||||
mPlayer_request_lie_bed_c lie_bed;
|
||||
/* TODO: others */
|
||||
u8 force_size[72]; // TEMP
|
||||
} mPlayer_request_main_data;
|
||||
|
||||
@@ -0,0 +1,204 @@
|
||||
#include "m_passwordChk_ovl.h"
|
||||
|
||||
#include "audio.h"
|
||||
#include "libultra/libultra.h"
|
||||
#include "m_editor_ovl.h"
|
||||
#include "m_font.h"
|
||||
#include "sys_matrix.h"
|
||||
|
||||
mPC_Ovl_c pc_ovl_data;
|
||||
|
||||
static void mPC_move_Move(Submenu* submenu, mSM_MenuInfo_c* menu_info) {
|
||||
(*submenu->overlay->move_Move_proc)(submenu, menu_info);
|
||||
}
|
||||
|
||||
static void mPC_move_Obey(Submenu* submenu, mSM_MenuInfo_c* menu_info) {
|
||||
mPC_Ovl_c* passwordChk_ovl;
|
||||
|
||||
if (submenu->overlay->menu_info[mSM_OVL_EDITOR].next_proc_status == mSM_PROCESS_END) {
|
||||
(*submenu->overlay->move_chg_base_proc)(menu_info, mSM_PROCESS_END); // close this submenu overlay too
|
||||
sAdo_SysTrgStart(2);
|
||||
passwordChk_ovl = submenu->overlay->passwordChk_ovl;
|
||||
mem_copy( (u8*)menu_info->data2, passwordChk_ovl->line0, mPC_STR_SIZE);
|
||||
mem_copy((u8*)menu_info->data2 + mPC_STR_SIZE, passwordChk_ovl->line1, mPC_STR_SIZE);
|
||||
}
|
||||
}
|
||||
|
||||
static void mPC_move_End(Submenu* submenu, mSM_MenuInfo_c* menu_info) {
|
||||
(*submenu->overlay->move_End_proc)(submenu, menu_info);
|
||||
}
|
||||
|
||||
static void mPC_passwordChk_ovl_move(Submenu* submenu) {
|
||||
static mSM_MOVE_PROC ovl_move_proc[mSM_OVL_PROC_NUM] = {
|
||||
&mPC_move_Move,
|
||||
(mSM_MOVE_PROC)none_proc1,
|
||||
(mSM_MOVE_PROC)none_proc1,
|
||||
&mPC_move_Obey,
|
||||
&mPC_move_End
|
||||
};
|
||||
|
||||
Submenu_Overlay_c* overlay = submenu->overlay;
|
||||
mSM_MenuInfo_c* menu_info = &overlay->menu_info[mSM_OVL_PASSWORDCHK];
|
||||
|
||||
(*menu_info->pre_move_func)(submenu);
|
||||
(*ovl_move_proc[menu_info->proc_status])(submenu, menu_info);
|
||||
}
|
||||
|
||||
extern Gfx pwd_win_mode[];
|
||||
extern Gfx pwd_win_model[];
|
||||
|
||||
static void mPC_set_frame_dl(Submenu* submenu, GRAPH* graph, f32 x, f32 y) {
|
||||
mPC_Ovl_c* passwordChk_ovl = submenu->overlay->passwordChk_ovl;
|
||||
Gfx* gfx;
|
||||
Gfx* gfx2;
|
||||
u8 s;
|
||||
u8 t;
|
||||
|
||||
Matrix_scale(16.0f, 16.0f, 1.0f, 0);
|
||||
Matrix_translate(x, y, 140.0f, 1);
|
||||
|
||||
OPEN_DISP(graph);
|
||||
gfx = NOW_POLY_OPA_DISP;
|
||||
|
||||
/* Setup RDP settings */
|
||||
gSPDisplayList(gfx++, pwd_win_mode);
|
||||
gfx2 = gfx; // setting this to gfx2 = gfx; causes the stwu to generate but breaks other stuff
|
||||
|
||||
/* Initialize position matrix */
|
||||
gSPMatrix(gfx++, _Matrix_to_Mtx_new(graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
|
||||
/* Setup background tiling offset */
|
||||
s = -submenu->overlay->menu_control.texture_pos[0] * 4.0f;
|
||||
t = -submenu->overlay->menu_control.texture_pos[1] * 4.0f;
|
||||
gDPSetTileSize_Dolphin(gfx++, G_TX_RENDERTILE, s, t, 32, 32);
|
||||
|
||||
/* Draw background */
|
||||
gSPDisplayList(gfx++, pwd_win_model);
|
||||
|
||||
SET_POLY_OPA_DISP(gfx);
|
||||
CLOSE_DISP(graph);
|
||||
}
|
||||
|
||||
static void mPC_set_character(Submenu* submenu, GAME* game, f32 x, f32 y) {
|
||||
static u8 title_str[20] = "Enter a secret code.";
|
||||
static f32 cursol_baseX[mPC_LINE_COUNT] = { 77.0f, 77.0f };
|
||||
static f32 cursol_baseY[mPC_LINE_COUNT] = { 81.0f, 99.0f };
|
||||
|
||||
mPC_Ovl_c* passwordChk_ovl = submenu->overlay->passwordChk_ovl;
|
||||
mED_Ovl_c* editor_ovl = submenu->overlay->editor_ovl;
|
||||
int sel_line;
|
||||
u8* sel_line_p;
|
||||
f32 text_x;
|
||||
f32 cursor_x;
|
||||
f32 cursor_y;
|
||||
int width;
|
||||
|
||||
/* Draw title text */
|
||||
mFont_SetLineStrings(
|
||||
game,
|
||||
title_str, sizeof(title_str),
|
||||
131.0f + x, 34.0f - y,
|
||||
255, 255, 255, 255,
|
||||
FALSE,
|
||||
TRUE,
|
||||
0.875f, 0.875f,
|
||||
mFont_MODE_POLY
|
||||
);
|
||||
|
||||
text_x = 77.0f + x;
|
||||
|
||||
/* Draw first line */
|
||||
mFont_SetLineStrings(
|
||||
game,
|
||||
passwordChk_ovl->line0, mPC_STR_SIZE,
|
||||
text_x, 81.0f - y,
|
||||
235, 235, 50, 255,
|
||||
FALSE,
|
||||
FALSE,
|
||||
1.0f, 1.0f,
|
||||
mFont_MODE_POLY
|
||||
);
|
||||
|
||||
/* Draw second line */
|
||||
mFont_SetLineStrings(
|
||||
game,
|
||||
passwordChk_ovl->line1, mPC_STR_SIZE,
|
||||
text_x, 99.0f - y,
|
||||
235, 235, 50, 255,
|
||||
FALSE,
|
||||
FALSE,
|
||||
1.0f, 1.0f,
|
||||
mFont_MODE_POLY
|
||||
);
|
||||
|
||||
/* Draw editor cursor */
|
||||
sel_line = passwordChk_ovl->selected_line;
|
||||
sel_line_p = passwordChk_ovl->line0;
|
||||
if (sel_line == 0) {
|
||||
sel_line_p = passwordChk_ovl->line1;
|
||||
}
|
||||
|
||||
width = mFont_GetStringWidth(sel_line_p, editor_ovl->_22, FALSE);
|
||||
cursor_x = x + cursol_baseX[sel_line] + (f32)width + -7.0f;
|
||||
cursor_y = -y + cursol_baseY[sel_line];
|
||||
(*submenu->overlay->editor_ovl->cursol_draw)(submenu, game, cursor_x, cursor_y);
|
||||
}
|
||||
|
||||
static void mPC_set_dl(Submenu* submenu, GAME* game, mSM_MenuInfo_c* menu_info) {
|
||||
f32 x = menu_info->position[0];
|
||||
f32 y = menu_info->position[1];
|
||||
GRAPH* graph = game->graph;
|
||||
|
||||
mPC_set_frame_dl(submenu, graph, x, y);
|
||||
(*submenu->overlay->set_char_matrix_proc)(graph);
|
||||
mPC_set_character(submenu, game, x, y);
|
||||
}
|
||||
|
||||
static void mPC_passwordChk_ovl_draw(Submenu* submenu, GAME* game) {
|
||||
Submenu_Overlay_c* overlay = submenu->overlay;
|
||||
mSM_MenuInfo_c* menu_info = &overlay->menu_info[mSM_OVL_PASSWORDCHK];
|
||||
|
||||
(*menu_info->pre_draw_func)(submenu, game);
|
||||
mPC_set_dl(submenu, game, menu_info);
|
||||
}
|
||||
|
||||
extern void mPC_passwordChk_ovl_set_proc(Submenu* submenu) {
|
||||
Submenu_Overlay_c* overlay = submenu->overlay;
|
||||
|
||||
overlay->menu_control.menu_move_func = &mPC_passwordChk_ovl_move;
|
||||
overlay->menu_control.menu_draw_func = &mPC_passwordChk_ovl_draw;
|
||||
}
|
||||
|
||||
static void mPC_passwordChk_ovl_init(Submenu* submenu) {
|
||||
Submenu_Overlay_c* overlay = submenu->overlay;
|
||||
mSM_MenuInfo_c* menu_info = &overlay->menu_info[mSM_OVL_PASSWORDCHK];
|
||||
mPC_Ovl_c* passwordChk_ovl = overlay->passwordChk_ovl;
|
||||
|
||||
overlay->menu_control.animation_flag = FALSE;
|
||||
menu_info->proc_status = mSM_OVL_PROC_MOVE;
|
||||
menu_info->next_proc_status = mSM_OVL_PROC_OBEY;
|
||||
menu_info->move_drt = mSM_MOVE_IN_TOP;
|
||||
|
||||
/* Open the editor overlay on top of this submenu */
|
||||
mSM_open_submenu_new2(submenu, mSM_OVL_EDITOR, mED_TYPE_PASSWORDCHK, 0, passwordChk_ovl->line0, 168);
|
||||
}
|
||||
|
||||
extern void mPC_passwordChk_ovl_construct(Submenu* submenu) {
|
||||
Submenu_Overlay_c* overlay = submenu->overlay;
|
||||
|
||||
if (overlay->passwordChk_ovl == NULL) {
|
||||
bzero(&pc_ovl_data, sizeof(mPC_Ovl_c));
|
||||
overlay->passwordChk_ovl = &pc_ovl_data;
|
||||
mem_copy(overlay->passwordChk_ovl->line0, (u8*)overlay->menu_info[mSM_OVL_PASSWORDCHK].data2, mPC_STR_SIZE);
|
||||
mem_copy(overlay->passwordChk_ovl->line1, (u8*)overlay->menu_info[mSM_OVL_PASSWORDCHK].data2 + mPC_STR_SIZE, mPC_STR_SIZE);
|
||||
}
|
||||
|
||||
mPC_passwordChk_ovl_init(submenu);
|
||||
mPC_passwordChk_ovl_set_proc(submenu);
|
||||
}
|
||||
|
||||
extern void mPC_passwordChk_ovl_destruct(Submenu* submenu) {
|
||||
Submenu_Overlay_c* overlay = submenu->overlay;
|
||||
|
||||
overlay->passwordChk_ovl = NULL;
|
||||
}
|
||||
@@ -0,0 +1,231 @@
|
||||
#include "m_passwordMake_ovl.h"
|
||||
|
||||
#include "audio.h"
|
||||
#include "libultra/libultra.h"
|
||||
#include "m_editor_ovl.h"
|
||||
#include "m_font.h"
|
||||
#include "sys_matrix.h"
|
||||
|
||||
mPM_Ovl_c pm_ovl_data;
|
||||
|
||||
static void mPM_move_Move(Submenu* submenu, mSM_MenuInfo_c* menu_info) {
|
||||
(*submenu->overlay->move_Move_proc)(submenu, menu_info);
|
||||
}
|
||||
|
||||
static void mPM_move_Obey(Submenu* submenu, mSM_MenuInfo_c* menu_info) {
|
||||
mPM_Ovl_c* passwordMake_ovl;
|
||||
u8* dst;
|
||||
|
||||
if (submenu->overlay->menu_info[mSM_OVL_EDITOR].next_proc_status == mSM_PROCESS_END) {
|
||||
(*submenu->overlay->move_chg_base_proc)(menu_info, mSM_PROCESS_END); // close this submenu overlay too
|
||||
sAdo_SysTrgStart(2);
|
||||
dst = (u8*)menu_info->data2;
|
||||
passwordMake_ovl = submenu->overlay->passwordMake_ovl;
|
||||
mem_copy( dst, passwordMake_ovl->town_name, LAND_NAME_SIZE);
|
||||
mem_copy(dst + LAND_NAME_SIZE, passwordMake_ovl->player_name, PLAYER_NAME_LEN);
|
||||
}
|
||||
}
|
||||
|
||||
static void mPM_move_End(Submenu* submenu, mSM_MenuInfo_c* menu_info) {
|
||||
(*submenu->overlay->move_End_proc)(submenu, menu_info);
|
||||
}
|
||||
|
||||
static void mPM_passwordMake_ovl_move(Submenu* submenu) {
|
||||
static mSM_MOVE_PROC ovl_move_proc[mSM_OVL_PROC_NUM] = {
|
||||
&mPM_move_Move,
|
||||
(mSM_MOVE_PROC)none_proc1,
|
||||
(mSM_MOVE_PROC)none_proc1,
|
||||
&mPM_move_Obey,
|
||||
&mPM_move_End
|
||||
};
|
||||
|
||||
Submenu_Overlay_c* overlay = submenu->overlay;
|
||||
mSM_MenuInfo_c* menu_info = &overlay->menu_info[mSM_OVL_PASSWORDMAKE];
|
||||
|
||||
(*menu_info->pre_move_func)(submenu);
|
||||
(*ovl_move_proc[menu_info->proc_status])(submenu, menu_info);
|
||||
}
|
||||
|
||||
extern Gfx pas_win_mode[];
|
||||
extern Gfx pas_win_model[];
|
||||
extern Gfx pas_win_waku1_model[];
|
||||
extern Gfx pas_win_waku2_model[];
|
||||
extern Gfx pas_start_model[];
|
||||
|
||||
static void mPM_set_frame_dl(Submenu* submenu, GRAPH* graph, mSM_MenuInfo_c* menu_info, int sel_idx, f32 x, f32 y) {
|
||||
static u8 waku_color[mPM_ENTRY_NUM][3] = {
|
||||
{ 150, 50, 30 },
|
||||
{ 255, 255, 255 }
|
||||
};
|
||||
|
||||
mPM_Ovl_c* passwordMake_ovl = submenu->overlay->passwordMake_ovl;
|
||||
Gfx* gfx;
|
||||
u8 s;
|
||||
u8 t;
|
||||
f32 tile_x;
|
||||
f32 tile_y;
|
||||
|
||||
Matrix_scale(16.0f, 16.0f, 1.0f, 0);
|
||||
Matrix_translate(x, y, 140.0f, 1);
|
||||
|
||||
OPEN_DISP(graph);
|
||||
gfx = NOW_POLY_OPA_DISP;
|
||||
|
||||
/* Setup RDP settings */
|
||||
gSPDisplayList(gfx++, pas_win_mode);
|
||||
|
||||
/* Initialize position matrix */
|
||||
gSPMatrix(gfx++, _Matrix_to_Mtx_new(graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
|
||||
/* Setup background tiling offset */
|
||||
tile_x = -submenu->overlay->menu_control.texture_pos[0] * 4.0f;
|
||||
tile_y = -submenu->overlay->menu_control.texture_pos[1] * 4.0f;
|
||||
s = (int)tile_x;
|
||||
t = (int)tile_y;
|
||||
gDPSetTileSize_Dolphin(gfx++, G_TX_RENDERTILE, s, t, 32, 32);
|
||||
|
||||
/* Draw background */
|
||||
gSPDisplayList(gfx++, pas_win_model);
|
||||
|
||||
/* Set town name border color */
|
||||
gDPSetPrimColor(gfx++, 0, 255, waku_color[sel_idx][0], waku_color[sel_idx][1], waku_color[sel_idx][2], 255);
|
||||
|
||||
/* Draw town name box */
|
||||
gSPDisplayList(gfx++, pas_win_waku1_model);
|
||||
|
||||
/* Set player name border color */
|
||||
gDPSetPrimColor(gfx++, 0, 255, waku_color[sel_idx ^ 1][0], waku_color[sel_idx ^ 1][1], waku_color[sel_idx ^ 1][2], 255);
|
||||
|
||||
/* Draw player name box */
|
||||
gSPDisplayList(gfx++, pas_win_waku2_model);
|
||||
|
||||
if (sel_idx == mPM_ENTRY_TOWN && mMl_strlen(passwordMake_ovl->town_name, LAND_NAME_SIZE, CHAR_SPACE) != 0) {
|
||||
/* If the town box is selected and isn't empty, draw the "Start Button" image */
|
||||
gSPDisplayList(gfx++, pas_start_model);
|
||||
}
|
||||
|
||||
SET_POLY_OPA_DISP(gfx);
|
||||
CLOSE_DISP(graph);
|
||||
}
|
||||
|
||||
static void mPM_set_character(Submenu* submenu, GAME* game, int sel_idx, f32 x, f32 y) {
|
||||
static u8 moji_color[mPM_ENTRY_NUM][3] = {
|
||||
{ 20, 0, 0 },
|
||||
{ 120, 100, 80 }
|
||||
};
|
||||
|
||||
static u8 title_str[17] = "Enter a receiver.";
|
||||
static f32 cursol_baseX[mPM_ENTRY_NUM] = { 136.0f, 136.0f };
|
||||
static f32 cursol_baseY[mPM_ENTRY_NUM] = { 68.0f, 96.0f };
|
||||
|
||||
mPM_Ovl_c* passwordMake_ovl = submenu->overlay->passwordMake_ovl;
|
||||
mED_Ovl_c* editor_ovl = submenu->overlay->editor_ovl;
|
||||
int sel_idx2;
|
||||
f32 text_x;
|
||||
f32 cursor_x;
|
||||
f32 cursor_y;
|
||||
|
||||
/* Draw title text */
|
||||
mFont_SetLineStrings(
|
||||
game,
|
||||
title_str, sizeof(title_str),
|
||||
141.0f + x, 34.0f - y,
|
||||
255, 255, 255, 255,
|
||||
FALSE,
|
||||
TRUE,
|
||||
0.875f, 0.875f,
|
||||
mFont_MODE_POLY
|
||||
);
|
||||
|
||||
text_x = 136.0f + x;
|
||||
|
||||
/* Draw town name */
|
||||
mFont_SetLineStrings(
|
||||
game,
|
||||
passwordMake_ovl->town_name, passwordMake_ovl->lengths[mPM_ENTRY_TOWN],
|
||||
text_x, 68.0f - y,
|
||||
moji_color[sel_idx][0], moji_color[sel_idx][1], moji_color[sel_idx][2], 255,
|
||||
FALSE,
|
||||
TRUE,
|
||||
1.0f, 1.0f,
|
||||
mFont_MODE_POLY
|
||||
);
|
||||
|
||||
/* Draw player name */
|
||||
mFont_SetLineStrings(
|
||||
game,
|
||||
passwordMake_ovl->player_name, passwordMake_ovl->lengths[mPM_ENTRY_PLAYER],
|
||||
text_x, 96.0f - y,
|
||||
moji_color[sel_idx ^ 1][0], moji_color[sel_idx ^ 1][1], moji_color[sel_idx ^ 1][2], 255,
|
||||
FALSE,
|
||||
TRUE,
|
||||
1.0f, 1.0f,
|
||||
mFont_MODE_POLY
|
||||
);
|
||||
|
||||
/* Draw editor cursor */
|
||||
sel_idx2 = passwordMake_ovl->selected_idx;
|
||||
cursor_x = x + cursol_baseX[sel_idx2] + (f32)editor_ovl->_26 + -7.0f;
|
||||
cursor_y = -y + cursol_baseY[sel_idx2];
|
||||
(*submenu->overlay->editor_ovl->cursol_draw)(submenu, game, cursor_x, cursor_y);
|
||||
}
|
||||
|
||||
static void mPM_set_dl(Submenu* submenu, GAME* game, mSM_MenuInfo_c* menu_info) {
|
||||
f32 x = menu_info->position[0];
|
||||
f32 y = menu_info->position[1];
|
||||
GRAPH* graph = game->graph;
|
||||
int sel_idx = submenu->overlay->passwordMake_ovl->selected_idx;
|
||||
|
||||
mPM_set_frame_dl(submenu, graph, menu_info, sel_idx, x, y);
|
||||
(*submenu->overlay->set_char_matrix_proc)(graph);
|
||||
mPM_set_character(submenu, game, sel_idx, x, y);
|
||||
}
|
||||
|
||||
static void mPM_passwordMake_ovl_draw(Submenu* submenu, GAME* game) {
|
||||
Submenu_Overlay_c* overlay = submenu->overlay;
|
||||
mSM_MenuInfo_c* menu_info = &overlay->menu_info[mSM_OVL_PASSWORDMAKE];
|
||||
|
||||
(*menu_info->pre_draw_func)(submenu, game);
|
||||
mPM_set_dl(submenu, game, menu_info);
|
||||
}
|
||||
|
||||
extern void mPM_passwordMake_ovl_set_proc(Submenu* submenu) {
|
||||
Submenu_Overlay_c* overlay = submenu->overlay;
|
||||
|
||||
overlay->menu_control.menu_move_func = &mPM_passwordMake_ovl_move;
|
||||
overlay->menu_control.menu_draw_func = &mPM_passwordMake_ovl_draw;
|
||||
}
|
||||
|
||||
static void mPM_passwordMake_ovl_init(Submenu* submenu) {
|
||||
Submenu_Overlay_c* overlay = submenu->overlay;
|
||||
mSM_MenuInfo_c* menu_info = &overlay->menu_info[mSM_OVL_PASSWORDMAKE];
|
||||
mPM_Ovl_c* passwordMake_ovl = overlay->passwordMake_ovl;
|
||||
|
||||
overlay->menu_control.animation_flag = FALSE;
|
||||
menu_info->proc_status = mSM_OVL_PROC_MOVE;
|
||||
menu_info->next_proc_status = mSM_OVL_PROC_OBEY;
|
||||
menu_info->move_drt = mSM_MOVE_IN_TOP;
|
||||
|
||||
/* Open the editor overlay on top of this submenu */
|
||||
mSM_open_submenu_new2(submenu, mSM_OVL_EDITOR, mED_TYPE_PASSWORDMAKE, 0, passwordMake_ovl->town_name, 80);
|
||||
}
|
||||
|
||||
extern void mPM_passwordMake_ovl_construct(Submenu* submenu) {
|
||||
Submenu_Overlay_c* overlay = submenu->overlay;
|
||||
|
||||
if (overlay->passwordMake_ovl == NULL) {
|
||||
bzero(&pm_ovl_data, sizeof(mPM_Ovl_c));
|
||||
overlay->passwordMake_ovl = &pm_ovl_data;
|
||||
mem_clear(overlay->passwordMake_ovl->town_name, LAND_NAME_SIZE, CHAR_SPACE);
|
||||
mem_clear(overlay->passwordMake_ovl->player_name, PLAYER_NAME_LEN, CHAR_SPACE);
|
||||
}
|
||||
|
||||
mPM_passwordMake_ovl_init(submenu);
|
||||
mPM_passwordMake_ovl_set_proc(submenu);
|
||||
}
|
||||
|
||||
extern void mPM_passwordMake_ovl_destruct(Submenu* submenu) {
|
||||
Submenu_Overlay_c* overlay = submenu->overlay;
|
||||
|
||||
overlay->passwordMake_ovl = NULL;
|
||||
}
|
||||
Reference in New Issue
Block a user