diff --git a/graphics/KBase/PFP_Taro.png b/graphics/KBase/PFP_Taro.png index 8a435c7e0..cd5fe629b 100644 Binary files a/graphics/KBase/PFP_Taro.png and b/graphics/KBase/PFP_Taro.png differ diff --git a/language.version b/language.version index d57e2a711..8591e0c65 100644 --- a/language.version +++ b/language.version @@ -1,3 +1,3 @@ [default] -SWWM_MODVER="\cyDEMOLITIONIST \cw1.2pre r160 \cu(Mon 14 Feb 01:23:14 CET 2022)\c-"; -SWWM_SHORTVER="\cw1.2pre r160 \cu(2022-02-14 01:23:14)\c-"; +SWWM_MODVER="\cyDEMOLITIONIST \cw1.2pre r161 \cu(Mon 14 Feb 20:09:39 CET 2022)\c-"; +SWWM_SHORTVER="\cw1.2pre r161 \cu(2022-02-14 20:09:39)\c-"; diff --git a/zscript/kbase/swwm_kbase.zsc b/zscript/kbase/swwm_kbase.zsc index 5a7c1d0c6..3030848f5 100644 --- a/zscript/kbase/swwm_kbase.zsc +++ b/zscript/kbase/swwm_kbase.zsc @@ -352,7 +352,7 @@ Class DemolitionistMenu : GenericMenu { if ( tabs[i].bHidden ) continue; str = StringTable.Localize(tabs[i].title); - len = smallfont.StringWidth(str)+6; + len = smallfont.StringWidth(str)+10; if ( (mpos.x >= xx) && (mpos.x < xx+len) ) { if ( curtab == i ) break; @@ -518,7 +518,7 @@ Class DemolitionistMenu : GenericMenu // draw top and bottom separators DrawHSeparator(0,14,ws.x); DrawHSeparator(0,ws.y-14,ws.x); - double xx = 3, yy = 1; + double xx = 5, yy = 1; String str; // draw tab listing for ( int i=0; i")+6); lists[i] = new("DemolitionistMenuList"); lists[i].master = master; - lists[i].selected = 0; } loresz = lore.ent.Size(); for ( int i=0; i maxofs[i] ) smofs[i] = ofs[i] = maxofs[i]; for ( int j=0; j maxy ) ofs[section] = clamp(maxy,0,maxofs[section]); } @@ -247,6 +246,108 @@ Class DemolitionistLibraryTab : DemolitionistMenuTab break; } } + override void MouseInput( Vector2 pos, int btn ) + { + // global events + switch ( btn ) + { + case MB_DRAG: + if ( clore && ltext && drag[1] ) ltext.SetOffset(pos.y); + else if ( drag[0] ) SetOffset(pos.y); + break; + case MB_RELEASE: + drag[0] = drag[1] = false; + break; + } + // mouse on left side + if ( pos.x < (lwidth+((maxofs[section]>0)?8:0)) ) + { + // see if we're clicking the scrollbar (if it exists) + if ( (btn == MB_LEFT) && (maxofs[section] > 0) && (pos.x >= lwidth) ) + { + SetOffset(pos.y); + master.MenuSound("menu/demoscroll"); + drag[0] = true; + return; + } + // mouse on the category sub-tab + if ( pos.y < 28 ) + { + switch ( btn ) + { + case MB_LEFT: + if ( pos.x < (lwidth/2) ) MenuInput(MK_LEFT); + else MenuInput(MK_RIGHT); + break; + case MB_WHEELUP: + MenuInput(MK_LEFT); + break; + case MB_WHEELDOWN: + MenuInput(MK_RIGHT); + break; + } + return; + } + switch ( btn ) + { + case MB_LEFT: + // find which element we clicked + for ( int i=0; i 0 ) + { + lists[section].selected = --sel[section]; + master.MenuSound("menu/demoscroll"); + KBScroll(); + } + break; + case MB_WHEELDOWN: + if ( sel[section] < lists[section].items.Size()-1 ) + { + lists[section].selected = ++sel[section]; + master.MenuSound("menu/demoscroll"); + KBScroll(); + } + break; + } + return; + } + if ( !clore || !ltext ) return; + switch ( btn ) + { + case MB_LEFT: + // see if we're clicking the scrollbar (if it exists) + if ( ltext.scrollbar && (pos.x > (master.ws.x-8)) ) + { + ltext.SetOffset(pos.y); + master.MenuSound("menu/demoscroll"); + drag[1] = true; + } + break; + case MB_WHEELUP: + if ( ltext.Scroll(-8) ) master.MenuSound("menu/demoscroll"); + break; + case MB_WHEELDOWN: + if ( ltext.Scroll(8) ) master.MenuSound("menu/demoscroll"); + break; + } + } override void Drawer() { double xx = 0;