SWBFGamers

Modding for the Original SWBF1 and SWBF2 => SWBF1 Modding Tutorials => Topic started by: Dark_Phantom on September 07, 2021, 07:21:03 AM

Title: New Screens through Addon
Post by: Dark_Phantom on September 07, 2021, 07:21:03 AM
Ok, we've been down this road before, and it's probably about 10 years too late, but I'm here to tell you how to add NEW screens through the addon folder.

I have attached the demo in the attachments on this post.  This is what we are using for "Week 1" of the SWBF1 Speedruns challenges.


--Original concept by BAD_AL, modified by Dark_Phantom
--This modifies the ifs_movietrans_PushScreen function, or more accurately, catches one situation where we want to switch the screen.
origMovieTrans = ifs_movietrans_PushScreen
ifs_movietrans_PushScreen = function(screenName)
    if( screenName == ifs_sp ) then --THIS IS NOT A STRING
        --ScriptCB_PushScreen("ifs_sp2") --you can use this to just push the new screen if you don't have a movie transition
        origMovieTrans(ifs_sp2)
    else
        origMovieTrans(screenName)
    end
end

--Now we add the new screen...
ifs_sp2_vbutton_layout = {
--...
}

ifs_sp2 = NewIFShellScreen {
--...
}
ifs_sp2.CurButton = AddVerticalButtons(ifs_sp2.buttons,ifs_sp2_vbutton_layout)
AddIFScreen(ifs_sp2,"ifs_sp2")

I didn't copy my code straight up but you can copy that section from ifs_sp, and then modify one of the fields, like add a button to the list, you should be able to modify the screen accordingly.

After this, you can then save and munge your addme.lua file.
You're then going to create a folder in addon (I use challenge) then just drop it in there.
There's plenty of extensibility too... obviously I wouldn't recommend locking people out of screens, but using it for modification.  It's a much slimmer way to modify (or create new) screens we already have WITHOUT a total conversion mod.  As you can see from my attachment, it's 3 KB to add A WHOLE NEW (very basic) MODE

In a future episode, we will be talking about how to tie more screens together and make the script extremely generic for your purposes.  This way is the "hard-coded way" which is really convenient for one or two screens, but we can leverage some ScriptCB_SetDCMap() calls to go even further.
Title: Re: New Screens through Addon
Post by: wsa30h on September 10, 2021, 01:41:02 PM
i dont know what am doing wrong but no matter what i do it doesent work for me. i followed the tutorial by copying the piece of code here. then copying the respective sections from ifs sp into the addme but i still get a stack overflow. stack traceback:
   1:  function `origMovieTrans' [(none)]
   2:  function `origMovieTrans' [(none)]
   3:  function `origMovieTrans' [(none)]
   4:  function `origMovieTrans' [(none)]
   5:  function `origMovieTrans' [(none)]
   6:  function `origMovieTrans' [(none)]
   7:  function `origMovieTrans' [(none)]
   8:  function `origMovieTrans' [(none)]
   9:  function `origMovieTrans' [(none)]
  10:  function `origMovieTrans' [(none)]
  11:  function `origMovieTrans' [(none)]
       ...
 122:  function `origMovieTrans' [(none)]
 123:  function `origMovieTrans' [(none)]
 124:  function `origMovieTrans' [(none)]
 125:  function `origMovieTrans' [(none)]
 126:  function `origMovieTrans' [(none)]
 127:  function `origMovieTrans' [(none)]
 128:  function `origMovieTrans' [(none)]
 129:  function `origMovieTrans' [(none)]
 130:  function `ifs_movietrans_PushScreen' [(none)]
 131:  function <23:(none)>
EhPortal 1.34 © 2024, WebDev