diff --git a/src/character_editor.c b/src/character_editor.c index 55a495c..4d9a7aa 100644 --- a/src/character_editor.c +++ b/src/character_editor.c @@ -37,8 +37,8 @@ #define RENDER_ALL_STATS 7 -#define EDITOR_WIN_WIDTH 640 -#define EDITOR_WIN_HEIGHT 480 +#define EDITOR_WINDOW_WIDTH 640 +#define EDITOR_WINDOW_HEIGHT 480 #define NAME_BUTTON_X 9 #define NAME_BUTTON_Y 0 @@ -75,6 +75,11 @@ #define PERK_WINDOW_WIDTH 573 #define PERK_WINDOW_HEIGHT 230 +#define PERK_WINDOW_LIST_X 45 +#define PERK_WINDOW_LIST_Y 43 +#define PERK_WINDOW_LIST_WIDTH 192 +#define PERK_WINDOW_LIST_HEIGHT 129 + #define ANIMATE 0x01 #define RED_NUMBERS 0x02 #define BIG_NUM_WIDTH 14 @@ -1139,7 +1144,14 @@ int characterEditorWindowInit() return -1; } - characterEditorWindowHandle = windowCreate(0, 0, 640, 480, 256, 18); + int editorWindowX = (screenGetWidth() - EDITOR_WINDOW_WIDTH) / 2; + int editorWindowY = (screenGetHeight() - EDITOR_WINDOW_HEIGHT) / 2; + characterEditorWindowHandle = windowCreate(editorWindowX, + editorWindowY, + EDITOR_WINDOW_WIDTH, + EDITOR_WINDOW_HEIGHT, + 256, + WINDOW_FLAG_0x10 | WINDOW_FLAG_0x02); if (characterEditorWindowHandle == -1) { for (i = 0; i < EDITOR_GRAPHIC_COUNT; i++) { if (_copyflag[i]) { @@ -1270,7 +1282,7 @@ int characterEditorWindowInit() // PRINT str = getmsg(&editorMessageList, &editorMessageListItem, 103); - fontDrawText(characterEditorWindowBuf + (EDITOR_WIN_WIDTH * PRINT_BTN_Y) + PRINT_BTN_X, str, EDITOR_WIN_WIDTH, EDITOR_WIN_WIDTH, _colorTable[18979]); + fontDrawText(characterEditorWindowBuf + (EDITOR_WINDOW_WIDTH * PRINT_BTN_Y) + PRINT_BTN_X, str, EDITOR_WINDOW_WIDTH, EDITOR_WINDOW_WIDTH, _colorTable[18979]); editorRenderPcStats(); _folder_init(); @@ -1280,11 +1292,11 @@ int characterEditorWindowInit() // CANCEL str = getmsg(&editorMessageList, &editorMessageListItem, 102); - fontDrawText(characterEditorWindowBuf + (EDITOR_WIN_WIDTH * CANCEL_BTN_Y) + CANCEL_BTN_X, str, EDITOR_WIN_WIDTH, EDITOR_WIN_WIDTH, _colorTable[18979]); + fontDrawText(characterEditorWindowBuf + (EDITOR_WINDOW_WIDTH * CANCEL_BTN_Y) + CANCEL_BTN_X, str, EDITOR_WINDOW_WIDTH, EDITOR_WINDOW_WIDTH, _colorTable[18979]); // DONE str = getmsg(&editorMessageList, &editorMessageListItem, 100); - fontDrawText(characterEditorWindowBuf + (EDITOR_WIN_WIDTH * DONE_BTN_Y) + DONE_BTN_X, str, EDITOR_WIN_WIDTH, EDITOR_WIN_WIDTH, _colorTable[18979]); + fontDrawText(characterEditorWindowBuf + (EDITOR_WINDOW_WIDTH * DONE_BTN_Y) + DONE_BTN_X, str, EDITOR_WINDOW_WIDTH, EDITOR_WINDOW_WIDTH, _colorTable[18979]); editorRenderPrimaryStat(RENDER_ALL_STATS, 0, 0); editorRenderSecondaryStats(); @@ -1454,24 +1466,24 @@ int characterEditorWindowInit() _GInfo[EDITOR_GRAPHIC_NAME_ON].width, _GInfo[EDITOR_GRAPHIC_NAME_ON].height, _GInfo[EDITOR_GRAPHIC_NAME_ON].width, - characterEditorWindowBuf + (EDITOR_WIN_WIDTH * NAME_BUTTON_Y) + x, - EDITOR_WIN_WIDTH); + characterEditorWindowBuf + (EDITOR_WINDOW_WIDTH * NAME_BUTTON_Y) + x, + EDITOR_WINDOW_WIDTH); x += _GInfo[EDITOR_GRAPHIC_NAME_ON].width; blitBufferToBufferTrans(_grphcpy[EDITOR_GRAPHIC_AGE_OFF], _GInfo[EDITOR_GRAPHIC_AGE_ON].width, _GInfo[EDITOR_GRAPHIC_AGE_ON].height, _GInfo[EDITOR_GRAPHIC_AGE_ON].width, - characterEditorWindowBuf + (EDITOR_WIN_WIDTH * NAME_BUTTON_Y) + x, - EDITOR_WIN_WIDTH); + characterEditorWindowBuf + (EDITOR_WINDOW_WIDTH * NAME_BUTTON_Y) + x, + EDITOR_WINDOW_WIDTH); x += _GInfo[EDITOR_GRAPHIC_AGE_ON].width; blitBufferToBufferTrans(_grphcpy[EDITOR_GRAPHIC_SEX_OFF], _GInfo[EDITOR_GRAPHIC_SEX_ON].width, _GInfo[EDITOR_GRAPHIC_SEX_ON].height, _GInfo[EDITOR_GRAPHIC_SEX_ON].width, - characterEditorWindowBuf + (EDITOR_WIN_WIDTH * NAME_BUTTON_Y) + x, - EDITOR_WIN_WIDTH); + characterEditorWindowBuf + (EDITOR_WINDOW_WIDTH * NAME_BUTTON_Y) + x, + EDITOR_WINDOW_WIDTH); btn = buttonCreate(characterEditorWindowHandle, 11, @@ -2944,7 +2956,9 @@ int characterEditorEditName() int windowWidth = _GInfo[EDITOR_GRAPHIC_CHARWIN].width; int windowHeight = _GInfo[EDITOR_GRAPHIC_CHARWIN].height; - int win = windowCreate(17, 0, windowWidth, windowHeight, 256, WINDOW_FLAG_0x10 | WINDOW_FLAG_0x02); + int nameWindowX = (screenGetWidth() - EDITOR_WINDOW_WIDTH) / 2 + 17; + int nameWindowY = (screenGetHeight() - EDITOR_WINDOW_HEIGHT) / 2; + int win = windowCreate(nameWindowX, nameWindowY, windowWidth, windowHeight, 256, WINDOW_FLAG_0x10 | WINDOW_FLAG_0x02); if (win == -1) { return -1; } @@ -3074,7 +3088,9 @@ int characterEditorRunEditAgeDialog() windowWidth = _GInfo[EDITOR_GRAPHIC_CHARWIN].width; windowHeight = _GInfo[EDITOR_GRAPHIC_CHARWIN].height; - win = windowCreate(_GInfo[EDITOR_GRAPHIC_NAME_ON].width + 9, 0, windowWidth, windowHeight, 256, WINDOW_FLAG_0x10 | WINDOW_FLAG_0x02); + int ageWindowX = (screenGetWidth() - EDITOR_WINDOW_WIDTH) / 2 + _GInfo[EDITOR_GRAPHIC_NAME_ON].width + 9; + int ageWindowY = (screenGetHeight() - EDITOR_WINDOW_HEIGHT) / 2; + win = windowCreate(ageWindowX, ageWindowY, windowWidth, windowHeight, 256, WINDOW_FLAG_0x10 | WINDOW_FLAG_0x02); if (win == -1) { return -1; } @@ -3302,10 +3318,11 @@ void characterEditorEditGender() int windowWidth = _GInfo[EDITOR_GRAPHIC_CHARWIN].width; int windowHeight = _GInfo[EDITOR_GRAPHIC_CHARWIN].height; - int x = 9; - x += _GInfo[EDITOR_GRAPHIC_NAME_ON].width; - x += _GInfo[EDITOR_GRAPHIC_AGE_ON].width; - int win = windowCreate(x, 0, windowWidth, windowHeight, 256, WINDOW_FLAG_0x10 | WINDOW_FLAG_0x02); + int genderWindowX = (screenGetWidth() - EDITOR_WINDOW_WIDTH) / 2 + 9 + + _GInfo[EDITOR_GRAPHIC_NAME_ON].width; + + _GInfo[EDITOR_GRAPHIC_AGE_ON].width; + int genderWindowY = (screenGetHeight() - EDITOR_WINDOW_HEIGHT) / 2; + int win = windowCreate(genderWindowX, genderWindowY, windowWidth, windowHeight, 256, WINDOW_FLAG_0x10 | WINDOW_FLAG_0x02); if (win == -1) { return; @@ -4583,7 +4600,7 @@ int _DrawCard(int graphicId, const char* name, const char* attributes, char* des // 0x43AE8 void _FldrButton() { - mouseGetPosition(&_mouse_xpos, &_mouse_ypos); + mouseGetPositionInWindow(characterEditorWindowHandle, &_mouse_xpos, &_mouse_ypos); soundPlayFile("ib3p1xx1"); if (_mouse_xpos >= 208) { @@ -4604,7 +4621,7 @@ void _FldrButton() // 0x43AF40 void _InfoButton(int eventCode) { - mouseGetPosition(&_mouse_xpos, &_mouse_ypos); + mouseGetPositionInWindow(characterEditorWindowHandle, &_mouse_xpos, &_mouse_ypos); switch (eventCode) { case 525: @@ -5363,7 +5380,14 @@ int editorSelectPerk() return -1; } - gEditorPerkWindow = windowCreate(PERK_WINDOW_X, PERK_WINDOW_Y, PERK_WINDOW_WIDTH, PERK_WINDOW_HEIGHT, 256, WINDOW_FLAG_0x10 | WINDOW_FLAG_0x02); + // Maintain original position in original resolution, otherwise center it. + int perkWindowX = screenGetWidth() != 640 + ? (screenGetWidth() - PERK_WINDOW_WIDTH) / 2 + : PERK_WINDOW_X; + int perkWindowY = screenGetHeight() != 480 + ? (screenGetHeight() - PERK_WINDOW_HEIGHT) / 2 + : PERK_WINDOW_Y; + gEditorPerkWindow = windowCreate(perkWindowX, perkWindowY, PERK_WINDOW_WIDTH, PERK_WINDOW_HEIGHT, 256, WINDOW_FLAG_0x10 | WINDOW_FLAG_0x02); if (gEditorPerkWindow == -1) { artUnlock(backgroundFrmHandle); debugPrint("\n *** Error running perks dialog window ***\n"); @@ -5444,10 +5468,10 @@ int editorSelectPerk() } buttonCreate(gEditorPerkWindow, - 45, - 43, - 192, - 129, + PERK_WINDOW_LIST_X, + PERK_WINDOW_LIST_Y, + PERK_WINDOW_LIST_WIDTH, + PERK_WINDOW_LIST_HEIGHT, -1, -1, -1, @@ -5561,10 +5585,10 @@ int _InputPDLoop(int count, void (*refreshProc)()) soundPlayFile("ib1p1xx1"); rc = 1; } else if (keyCode == 501) { - mouseGetPosition(&_mouse_xpos, &_mouse_ypos); - _cline = (_mouse_ypos - 134) / v16; - if ((_mouse_ypos - 134) / v16 >= 0) { - if (count - 1 < (_mouse_ypos - 134) / v16) + mouseGetPositionInWindow(gEditorPerkWindow , &_mouse_xpos, &_mouse_ypos); + _cline = (_mouse_ypos - PERK_WINDOW_LIST_Y) / v16; + if (_cline >= 0) { + if (count - 1 < _cline) _cline = count - 1; } else { _cline = 0;