mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-10-30 08:01:28 +00:00
Lua ABC -> Lua 123, move dpad to generic to make room for lua gamecontrol translation
This commit is contained in:
parent
397db81a73
commit
5563a06827
10 changed files with 87 additions and 28 deletions
|
|
@ -42,8 +42,11 @@ typedef enum
|
|||
|
||||
// Lua garbage, replace with freeslottable buttons some day
|
||||
BT_LUAA = 1<<13,
|
||||
BT_LUA1 = 1<<13,
|
||||
BT_LUAB = 1<<14,
|
||||
BT_LUA2 = 1<<14,
|
||||
BT_LUAC = 1<<15,
|
||||
BT_LUA3 = 1<<15,
|
||||
} buttoncode_t;
|
||||
|
||||
// The data sampled per tick (single player)
|
||||
|
|
|
|||
|
|
@ -5003,6 +5003,9 @@ struct int_const_s const INT_CONST[] = {
|
|||
{"BT_LUAA",BT_LUAA}, // Lua customizable
|
||||
{"BT_LUAB",BT_LUAB}, // Lua customizable
|
||||
{"BT_LUAC",BT_LUAC}, // Lua customizable
|
||||
{"BT_LUA1",BT_LUA1}, // Lua customizable
|
||||
{"BT_LUA2",BT_LUA2}, // Lua customizable
|
||||
{"BT_LUA3",BT_LUA3}, // Lua customizable
|
||||
|
||||
// Lua command registration flags
|
||||
{"COM_ADMIN",COM_ADMIN},
|
||||
|
|
|
|||
|
|
@ -408,9 +408,9 @@ class TiccmdBuilder
|
|||
map(gc_vote, BT_VOTE); // mp general function button
|
||||
|
||||
// lua buttons a thru c
|
||||
map(gc_luaa, BT_LUAA);
|
||||
map(gc_luab, BT_LUAB);
|
||||
map(gc_luac, BT_LUAC);
|
||||
map(gc_lua1, BT_LUA1);
|
||||
map(gc_lua2, BT_LUA2);
|
||||
map(gc_lua3, BT_LUA3);
|
||||
}
|
||||
|
||||
public:
|
||||
|
|
|
|||
|
|
@ -77,9 +77,9 @@ typedef enum
|
|||
|
||||
// special keys
|
||||
gc_abc,
|
||||
gc_luaa,
|
||||
gc_luab,
|
||||
gc_luac,
|
||||
gc_lua1,
|
||||
gc_lua2,
|
||||
gc_lua3,
|
||||
gc_console,
|
||||
gc_talk,
|
||||
gc_teamtalk,
|
||||
|
|
|
|||
|
|
@ -242,7 +242,9 @@ patch_t *kp_button_up[2];
|
|||
patch_t *kp_button_down[2];
|
||||
patch_t *kp_button_right[2];
|
||||
patch_t *kp_button_left[2];
|
||||
patch_t *kp_button_dpad[2];
|
||||
patch_t *kp_button_lua1[2];
|
||||
patch_t *kp_button_lua2[2];
|
||||
patch_t *kp_button_lua3[2];
|
||||
|
||||
patch_t *gen_button_a[2][2];
|
||||
patch_t *gen_button_b[2][2];
|
||||
|
|
@ -256,6 +258,7 @@ patch_t *gen_button_start[2];
|
|||
patch_t *gen_button_back[2];
|
||||
patch_t *gen_button_ls[2];
|
||||
patch_t *gen_button_rs[2];
|
||||
patch_t *gen_button_dpad[2];
|
||||
|
||||
patch_t *gen_button_keyleft[2];
|
||||
patch_t *gen_button_keyright[2];
|
||||
|
|
@ -984,7 +987,14 @@ void K_LoadKartHUDGraphics(void)
|
|||
K_LoadButtonGraphics(kp_button_down, 'K');
|
||||
K_LoadButtonGraphics(kp_button_right, 'L');
|
||||
K_LoadButtonGraphics(kp_button_left, 'M');
|
||||
K_LoadButtonGraphics(kp_button_dpad, 'T');
|
||||
// K_LoadButtonGraphics(kp_button_dpad, 'T');
|
||||
|
||||
HU_UpdatePatch(&kp_button_lua1[0], "TLG_L1");
|
||||
HU_UpdatePatch(&kp_button_lua1[1], "TLG_L1B");
|
||||
HU_UpdatePatch(&kp_button_lua2[0], "TLG_L2");
|
||||
HU_UpdatePatch(&kp_button_lua2[1], "TLG_L2B");
|
||||
HU_UpdatePatch(&kp_button_lua3[0], "TLG_L3");
|
||||
HU_UpdatePatch(&kp_button_lua3[1], "TLG_L3B");
|
||||
|
||||
K_LoadGenericButtonGraphics(gen_button_a[0], 'A');
|
||||
K_LoadGenericButtonGraphics(gen_button_b[0], 'B');
|
||||
|
|
@ -1008,6 +1018,9 @@ void K_LoadKartHUDGraphics(void)
|
|||
K_LoadGenericButtonGraphics(gen_button_ls, 'T');
|
||||
K_LoadGenericButtonGraphics(gen_button_rs, 'U');
|
||||
|
||||
HU_UpdatePatch(&gen_button_dpad[0], "TLB_T");
|
||||
HU_UpdatePatch(&gen_button_dpad[1], "TLB_TB");
|
||||
|
||||
HU_UpdatePatch(&gen_button_keyleft[0], "TLK_L");
|
||||
HU_UpdatePatch(&gen_button_keyleft[1], "TLK_LB");
|
||||
HU_UpdatePatch(&gen_button_keyright[0], "TLK_R");
|
||||
|
|
@ -6496,17 +6509,16 @@ void K_drawKartHUD(void)
|
|||
#if 1
|
||||
using srb2::Draw;
|
||||
|
||||
if (0)
|
||||
if (1)
|
||||
{
|
||||
// Draw::TextElement text = Draw::TextElement().parse("A <a> B <b> C <c> X <x> Y <y> Z <z>\nST <start> L <l> R <r> U <up> D <down> L <left> R <right>");
|
||||
Draw::TextElement text = Draw::TextElement().parse("Unpressed <large><a> Pressed <x_pressed> Animated <large><start_animated>");
|
||||
Draw::TextElement text = Draw::TextElement().parse("Unpressed <lua1> Pressed <lua2_pressed> Animated <lua3_animated>");
|
||||
|
||||
UINT8 fakeoff = (stplyr - players)*40;
|
||||
Draw(5, 5+fakeoff).align((srb2::Draw::Align)0).font(Draw::Font::kMenu).text(text);
|
||||
Draw(5, 20+fakeoff).align((srb2::Draw::Align)0).font(Draw::Font::kThin).text(text);
|
||||
}
|
||||
|
||||
|
||||
if (0)
|
||||
{
|
||||
Draw::TextElement text = Draw::TextElement().parse("\xEELEFTSPACE\xEE\n\xEESPC\xEE \xEETAB\xEE\nA \xEF\xA0 A\nB \xEF\xA1 B\nX \xEF\xA2 X\nY \xEF\xA3 Y\nLB \xEF\xA4 LB\nRB \xEF\xA5 RB\nLT \xEF\xA6 LT\nRT \xEF\xA7 RT\nST \xEF\xA8 ST\nBK \xEF\xA9 BK\nLS \xEF\xAA LS\nRS \xEF\xAB RS\n");
|
||||
|
|
|
|||
|
|
@ -101,7 +101,10 @@ extern patch_t *kp_button_up[2];
|
|||
extern patch_t *kp_button_down[2];
|
||||
extern patch_t *kp_button_right[2];
|
||||
extern patch_t *kp_button_left[2];
|
||||
extern patch_t *kp_button_dpad[2];
|
||||
// extern patch_t *kp_button_dpad[2];
|
||||
extern patch_t *kp_button_lua1[2];
|
||||
extern patch_t *kp_button_lua2[2];
|
||||
extern patch_t *kp_button_lua3[2];
|
||||
|
||||
extern patch_t *gen_button_a[2][2];
|
||||
extern patch_t *gen_button_b[2][2];
|
||||
|
|
@ -115,6 +118,7 @@ extern patch_t *gen_button_start[2];
|
|||
extern patch_t *gen_button_back[2];
|
||||
extern patch_t *gen_button_ls[2];
|
||||
extern patch_t *gen_button_rs[2];
|
||||
extern patch_t *gen_button_dpad[2];
|
||||
|
||||
extern patch_t *gen_button_keyleft[2];
|
||||
extern patch_t *gen_button_keyright[2];
|
||||
|
|
|
|||
|
|
@ -81,14 +81,14 @@ menuitem_t OPTIONS_ProfileControls[] = {
|
|||
{IT_CONTROL, "OPEN TEAM CHAT", "Opens team-only full chat for online games.",
|
||||
NULL, {.routine = M_ProfileSetControl}, gc_teamtalk, 0},
|
||||
|
||||
{IT_CONTROL, "LUA/A", "May be used by add-ons.",
|
||||
NULL, {.routine = M_ProfileSetControl}, gc_luaa, 0},
|
||||
{IT_CONTROL, "LUA/1", "May be used by add-ons.",
|
||||
NULL, {.routine = M_ProfileSetControl}, gc_lua1, 0},
|
||||
|
||||
{IT_CONTROL, "LUA/B", "May be used by add-ons.",
|
||||
NULL, {.routine = M_ProfileSetControl}, gc_luab, 0},
|
||||
{IT_CONTROL, "LUA/2", "May be used by add-ons.",
|
||||
NULL, {.routine = M_ProfileSetControl}, gc_lua2, 0},
|
||||
|
||||
{IT_CONTROL, "LUA/C", "May be used by add-ons.",
|
||||
NULL, {.routine = M_ProfileSetControl}, gc_luac, 0},
|
||||
{IT_CONTROL, "LUA/3", "May be used by add-ons.",
|
||||
NULL, {.routine = M_ProfileSetControl}, gc_lua3, 0},
|
||||
|
||||
{IT_CONTROL, "OPEN CONSOLE", "Opens the developer options console.",
|
||||
NULL, {.routine = M_ProfileSetControl}, gc_console, 0},
|
||||
|
|
|
|||
|
|
@ -45,7 +45,9 @@ Draw::TextElement& Draw::TextElement::parse(std::string_view raw)
|
|||
BUTTON("right", 0x02),
|
||||
BUTTON("left", 0x03),
|
||||
|
||||
BUTTON("dpad", 0x04),
|
||||
BUTTON("lua1", 0x04),
|
||||
BUTTON("lua2", 0x05),
|
||||
BUTTON("lua3", 0x06),
|
||||
|
||||
BUTTON("r", 0x07),
|
||||
BUTTON("l", 0x08),
|
||||
|
|
@ -92,6 +94,10 @@ Draw::TextElement& Draw::TextElement::parse(std::string_view raw)
|
|||
{0x02, gc_right},
|
||||
{0x03, gc_left},
|
||||
|
||||
{0x04, gc_lua1},
|
||||
{0x05, gc_lua2},
|
||||
{0x06, gc_lua3},
|
||||
|
||||
{0x07, gc_r},
|
||||
{0x08, gc_l},
|
||||
{0x09, gc_start},
|
||||
|
|
@ -167,9 +173,24 @@ Draw::TextElement& Draw::TextElement::parse(std::string_view raw)
|
|||
|
||||
string_view code = raw.substr(1, p - 1);
|
||||
|
||||
if (auto it = translation.find(code); it != translation.end())
|
||||
if (code == "dpad" || code == "dpad_pressed" || code == "dpad_animated")
|
||||
{
|
||||
// FIXME: This isn't how v_video.cpp checks for buttons and I don't know why.
|
||||
// SPECIAL: Generic button that we invoke explicitly, not via gamecontrol reference.
|
||||
// If we ever add anything else to this category, I promise I will create a real abstraction,
|
||||
// but for now, just hardcode the character replacements and pray for forgiveness.
|
||||
|
||||
string_.push_back(0xEF); // Control code: "switch to descriptive input mode"
|
||||
string_.push_back(0xEB); // Control code: "large button"
|
||||
if (code == "dpad")
|
||||
string_.push_back(0xBC);
|
||||
else if (code == "dpad_pressed")
|
||||
string_.push_back(0x9C);
|
||||
else
|
||||
string_.push_back(0xAC);
|
||||
}
|
||||
else if (auto it = translation.find(code); it != translation.end()) // This represents a gamecontrol, turn into Saturn button or generic button.
|
||||
{
|
||||
// This isn't how v_video.cpp checks for buttons and I don't know why.
|
||||
if (cv_descriptiveinput.value && ((it->second & 0xF0) != 0x80)) // Should we do game control translation?
|
||||
{
|
||||
if (auto id = inputdefinition.find(it->second & (~0xB0)); id != inputdefinition.end()) // This is a game control, do descriptive input translation!
|
||||
|
|
@ -211,7 +232,7 @@ Draw::TextElement& Draw::TextElement::parse(std::string_view raw)
|
|||
string_.push_back(code);
|
||||
|
||||
if (bind == -1)
|
||||
string_.append("[NOT BOUND]");
|
||||
string_.append("N/A");
|
||||
else
|
||||
string_.append((G_KeynumToShortString(bind)));
|
||||
|
||||
|
|
@ -316,7 +337,9 @@ patch_t** get_button_patch(Draw::Button type, int ver)
|
|||
X(down);
|
||||
X(right);
|
||||
X(left);
|
||||
X(dpad);
|
||||
X(lua1);
|
||||
X(lua2);
|
||||
X(lua3);
|
||||
|
||||
#undef X
|
||||
}
|
||||
|
|
@ -360,6 +383,7 @@ patch_t** get_button_patch(Draw::GenericButton type, int ver)
|
|||
X(back);
|
||||
X(ls);
|
||||
X(rs);
|
||||
X(dpad);
|
||||
|
||||
#undef X
|
||||
}
|
||||
|
|
|
|||
|
|
@ -78,7 +78,9 @@ public:
|
|||
down,
|
||||
right,
|
||||
left,
|
||||
dpad,
|
||||
lua1,
|
||||
lua2,
|
||||
lua3,
|
||||
};
|
||||
|
||||
enum class GenericButton
|
||||
|
|
@ -94,7 +96,8 @@ public:
|
|||
start,
|
||||
back,
|
||||
ls,
|
||||
rs
|
||||
rs,
|
||||
dpad
|
||||
};
|
||||
|
||||
class TextElement
|
||||
|
|
|
|||
|
|
@ -2516,8 +2516,10 @@ static UINT8 V_GetButtonCodeWidth(UINT8 c, boolean largebutton)
|
|||
break;
|
||||
|
||||
case 0x04:
|
||||
// dpad
|
||||
x = 14;
|
||||
case 0x05:
|
||||
case 0x06:
|
||||
// lua
|
||||
x = 16;
|
||||
break;
|
||||
|
||||
case 0x0A:
|
||||
|
|
@ -2571,6 +2573,11 @@ static UINT8 V_GetGenericButtonCodeWidth(UINT8 c, boolean largebutton)
|
|||
// stick click
|
||||
x = 18;
|
||||
break;
|
||||
|
||||
case 0x0C:
|
||||
// dpad
|
||||
x = 14;
|
||||
break;
|
||||
}
|
||||
|
||||
return x;
|
||||
|
|
@ -2830,7 +2837,9 @@ void V_DrawStringScaled(
|
|||
case 0x02: return {{0, 3, Draw::Button::right}};
|
||||
case 0x03: return {{0, 3, Draw::Button::left}};
|
||||
|
||||
case 0x04: return {{0, 4, Draw::Button::dpad}};
|
||||
case 0x04: return {{0, 4, Draw::Button::lua1}};
|
||||
case 0x05: return {{0, 4, Draw::Button::lua2}};
|
||||
case 0x06: return {{0, 4, Draw::Button::lua3}};
|
||||
|
||||
case 0x07: return {{0, 2, Draw::Button::r}};
|
||||
case 0x08: return {{0, 2, Draw::Button::l}};
|
||||
|
|
@ -2908,6 +2917,7 @@ void V_DrawStringScaled(
|
|||
case 0x09: return {{1, 6, Draw::GenericButton::back}};
|
||||
case 0x0A: return {{0, 5, Draw::GenericButton::ls}};
|
||||
case 0x0B: return {{0, 5, Draw::GenericButton::rs}};
|
||||
case 0x0C: return {{0, 4, Draw::GenericButton::dpad}};
|
||||
default: return {};
|
||||
}
|
||||
}();
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue