From 50913ed1735230e6893d59a72b799ccc8bf31aac Mon Sep 17 00:00:00 2001 From: Marisa Kirisame Date: Fri, 15 Oct 2021 21:28:15 +0200 Subject: [PATCH] The help tab is piss easy to add but I forgot to. --- language.version | 4 +- zscript/kbase/swwm_kbase_textbox.zsc | 3 +- zscript/kbase/swwm_kbasetab_help.zsc | 63 +++++++++++++++++++++++-- zscript/kbase/swwm_kbasetab_mission.zsc | 4 +- 4 files changed, 66 insertions(+), 8 deletions(-) diff --git a/language.version b/language.version index a4fd6e866..a020c9361 100644 --- a/language.version +++ b/language.version @@ -1,3 +1,3 @@ [default] -SWWM_MODVER="\chSWWM \czGZ\c- \cw1.2pre r28 \cu(Fri 15 Oct 21:09:52 CEST 2021)\c-"; -SWWM_SHORTVER="\cw1.2pre r28 \cu(2021-10-15 21:09:52)\c-"; +SWWM_MODVER="\chSWWM \czGZ\c- \cw1.2pre r29 \cu(Fri 15 Oct 21:28:15 CEST 2021)\c-"; +SWWM_SHORTVER="\cw1.2pre r29 \cu(2021-10-15 21:28:15)\c-"; diff --git a/zscript/kbase/swwm_kbase_textbox.zsc b/zscript/kbase/swwm_kbase_textbox.zsc index abad1eac0..3c134c052 100644 --- a/zscript/kbase/swwm_kbase_textbox.zsc +++ b/zscript/kbase/swwm_kbase_textbox.zsc @@ -17,7 +17,8 @@ Class DemolitionistMenuTextBox ui self.x = x; if ( w == 0 ) self.w = 640-x; else self.w = w; - self.txt = StringTable.Localize(txt); + if ( txt.Left(1) == "$" ) self.txt = StringTable.Localize(txt); + else self.txt = txt; ofs = 0; // break lines let fnt = master.LargeFont; diff --git a/zscript/kbase/swwm_kbasetab_help.zsc b/zscript/kbase/swwm_kbasetab_help.zsc index d5a0097dc..0d15b0fc6 100644 --- a/zscript/kbase/swwm_kbasetab_help.zsc +++ b/zscript/kbase/swwm_kbasetab_help.zsc @@ -2,22 +2,79 @@ Class DemolitionistHelpTab : DemolitionistMenuTab { - Array mtext; + DemolitionistMenuTextBox mtext; + bool drag; override DemolitionistMenuTab Init( DemolitionistMenu master ) { title = "$SWWM_HELPTAB"; bHidden = true; + String kstr; + if ( master.mkey[1] != "" ) kstr = master.mkey[0].."/"..master.mkey[1]; + else kstr = master.mkey[0]; + String str = String.Format(StringTable.Localize("$SWWM_HELPTXT"),kstr); + mtext = new("DemolitionistMenuTextBox").Init(master,str); return Super.Init(master); } - + override void MenuInput( int key ) + { + switch ( key ) + { + case MK_DOWN: + if ( mtext.Scroll(16) ) master.MenuSound("menu/demoscroll"); + break; + case MK_UP: + if ( mtext.Scroll(-16) ) master.MenuSound("menu/demoscroll"); + break; + } + } + override void MouseInput( Vector2 pos, int btn ) + { + switch ( btn ) + { + case MB_LEFT: + // see if we're clicking the scrollbar (if it exists) + if ( mtext.scrollbar && (pos.x > (mtext.x+(mtext.w-8))) ) + { + mtext.SetOffset(pos.y); + master.MenuSound("menu/demoscroll"); + drag = true; + break; + } + break; + case MB_WHEELUP: + if ( mtext.Scroll(-8) ) master.MenuSound("menu/demoscroll"); + break; + case MB_WHEELDOWN: + if ( mtext.Scroll(8) ) master.MenuSound("menu/demoscroll"); + break; + case MB_DRAG: + if ( drag ) mtext.SetOffset(pos.y); + break; + case MB_RELEASE: + if ( drag ) master.MenuSound("menu/demoscroll"); + drag = false; + break; + } + } + // stop smooth scrolling for current textbox override void OnSelect() { bHidden = false; + mtext.smofs = mtext.ofs; } - override void OnDeselect() { bHidden = true; + mtext.smofs = mtext.ofs; + } + // very simple + override void Ticker() + { + mtext.Ticker(); + } + override void Drawer() + { + mtext.Drawer(); } } diff --git a/zscript/kbase/swwm_kbasetab_mission.zsc b/zscript/kbase/swwm_kbasetab_mission.zsc index fb7693956..e80a0123a 100644 --- a/zscript/kbase/swwm_kbasetab_mission.zsc +++ b/zscript/kbase/swwm_kbasetab_mission.zsc @@ -183,7 +183,7 @@ Class DemolitionistMissionTab : DemolitionistMenuTab master.MenuSound("menu/demoscroll"); sel--; if ( sel < 0 ) sel = mtext.Size()-1; - mtext[sel].smofs = mtext[sel].ofs = 0; + mtext[sel].smofs = mtext[sel].ofs; drag = false; // just in case } break; @@ -194,7 +194,7 @@ Class DemolitionistMissionTab : DemolitionistMenuTab master.MenuSound("menu/demoscroll"); sel++; if ( sel >= mtext.Size() ) sel = 0; - mtext[sel].smofs = mtext[sel].ofs = 0; + mtext[sel].smofs = mtext[sel].ofs; drag = false; // just in case } break;