Framework

Everything else that doesn't fall into one of the other categories.
User avatar
MrTAToad
Posts: 291
Joined: Sun Apr 20, 2014 11:43 am
Location: Chichester, England
Contact:

Framework

Post by MrTAToad »

I've created a module based framework system for SpiderBasic that is designed to handle all the loading and program processing for you, with a screen fading system between active modules.

An example of setting up a program would be :

Code: Select all

If Triority::OnInitialise("Hello",4)
  If Triority::LoadData(#TYPE_SPRITE,"background","background2.png",#PB_Sprite_AlphaBlending,0)=#False Or
     Triority::LoadData(#TYPE_SOUND,"music","killers.ogg",0,0)=#False
    Debug "Unable to prepare loading of a file"
  Else
    Debug "File loading prepared"
  EndIf
  
  ; Register a section
  If Section::Add("title",titleModule::@OnInitialise(),titleModule::@OnStart(),titleModule::@OnLeave(),titleModule::@OnRender(),
                  titleModule::@OnProcess(),titleModule::@OnResolutionChange(),titleModule::@OnLoaded(),titleModule::@OnUnloaded(),
                  titleModule::@OnOnce(),titleModule::@OnFinish())=#False Or
     Section::Add("title2",titleModule2::@OnInitialise(),titleModule2::@OnStart(),titleModule2::@OnLeave(),titleModule2::@OnRender(),
                  titleModule2::@OnProcess(),titleModule2::@OnResolutionChange(),titleModule2::@OnLoaded(),titleModule2::@OnUnloaded(),
                  titleModule2::@OnOnce(),titleModule2::@OnFinish())=#False
    Debug "Error adding section"
  Else
    Debug "all okay!"
  EndIf
      
  If Triority::OnStart("")
  Else
    Debug("Cant start the first section")
  EndIf
Else
  Debug("Cant initialise Triority")
EndIf
And a module is :

Code: Select all

XIncludeFile "..\Triority\sprite.sb"
XIncludeFile "..\Triority\Sound.sb"

DeclareModule titleModule
  Declare.b OnInitialise()
  Declare.b OnStart()
  Declare.b OnResolutionChange(sW.i,sH.i)
  Declare.b OnLoad()
  Declare.b OnUnload()
  Declare.b OnRender()
  Declare.b OnProcess(moveSpeed.f)
  Declare.b OnOnce()
  Declare.b OnLeave()
  Declare.b OnLoaded()
  Declare.b OnUnloaded()
  Declare.b OnFinish()
EndDeclareModule

Module titleModule
  IncludeFile "..\triority\colours.sb"
  
  Global sprite.TriorityGlobalData::SPRITE
  
  Procedure.b  OnInitialise()
    ProcedureReturn #True
  EndProcedure
    
  Procedure.b  OnStart()
    Sound::PlayMusic("music")
    ProcedureReturn #True
  EndProcedure
  
  Procedure.b  OnResolutionChange(sW.i,sH.i)
    ProcedureReturn #True
  EndProcedure
  
  Procedure.b  OnLoad()
    ProcedureReturn #True
  EndProcedure
  
  Procedure.b  OnUnload()
    ProcedureReturn #True
  EndProcedure
  
  Procedure.b  OnRender()
    ;Debug "rendering!"
    ;Sprite::Draw(@sprite,100,100,0,#HANDLE_MIDDLE,#HANDLE_MIDDLE,COLOUR_YELLOW,255)
    ProcedureReturn #True
  EndProcedure
  
  Procedure.b  OnProcess(moveSpeed.f)
    If ExamineMouse()
      If MouseButton(#PB_MouseButton_Left) 
        Section::ChangeSection("title2",#True)
      EndIf
    EndIf
    ProcedureReturn #True
  EndProcedure
  
  Procedure.b  OnOnce()
    ProcedureReturn #True
  EndProcedure 
  
  Procedure.b OnLeave()
    ProcedureReturn #True
  EndProcedure
  
  Procedure.b OnLoaded()
    If Sprite::Sprite(@sprite,"background",-1,-1)=#False Or Section::AddSprite(0,"test1","background",56,56)=#False
      Debug "Error!"
    Else
      Debug "All okay!"
      ;Section::PositionItem(0,"test1",150,200)

    EndIf
    ProcedureReturn #True
  EndProcedure
  
  Procedure.b OnUnloaded()
    ProcedureReturn #True
  EndProcedure
  
  Procedure.b OnFinish()
    ProcedureReturn #True
  EndProcedure
EndModule
   
The framework hasn't been extensively tested yet, but seems okay at the moment. It can be downloaded here : http://blurg.org/spiderbasic/Triority.zip

The Maths module is here : http://blurg.org/spiderbasic/sourcecode/Maths.sb and the resident file here : http://blurg.org/spiderbasic/sourcecode/resident.sb