Restructure the project files and start implementing the main menu

This commit is contained in:
Aaron Mueller 2011-01-24 22:38:39 +01:00
parent f3d824a9c1
commit c8b07c8979
7 changed files with 79 additions and 37 deletions

13
pongr/data/menu.data Normal file
View File

@ -0,0 +1,13 @@
MAIN_MENU "Pongr"
BUTTON: "Run game" -> RUNNING_GAME
BUTTON: "Options" -> OPTION_MENU
BUTTON: "QUIT" -> RLY_QUIT
OPTION_MENU "Options"
OPTION: "Fullscreen", "Window Mode"
BUTTON: "Back" -> MAIN_MENU
RLY_QUIT "You want to go?"
BUTTON: "Yes" -> EXIT
BUTTON: "No" -> MAIN_MENU

View File

@ -10,33 +10,37 @@
<section name="data">
<explorer view="../../../" pattern="0"/>
<log show="1"/>
<lastopen date="2011-01-20 00:52" user="aaron" host="deskFu"/>
<lastopen date="2011-01-22 03:17" user="aaron" host="deskFu"/>
</section>
<section name="files">
<file name="pong.pb">
<file name="src/Main.pb">
<config load="0" scan="1" panel="1" warn="1" lastopen="1"/>
<fingerprint md5="35cfac0386dca5b0d79ba8d56fe90bd6"/>
<fingerprint md5="29e4b25d47252dd54c24d6985d0e0b94"/>
</file>
<file name="structs.pb">
<file name="src/Structs.pbi">
<config load="0" scan="1" panel="1" warn="1" lastopen="1"/>
<fingerprint md5="cd8ca8a4160326aa19af1fc08c397322"/>
<fingerprint md5="3f6fdbb23e900f0a334f07d26355f27f"/>
</file>
<file name="draw.pb">
<file name="src/Draw.pbi">
<config load="0" scan="1" panel="1" warn="1" lastopen="1"/>
<fingerprint md5="f15a45c2b59304338e9de66ad469e9dd"/>
<fingerprint md5="104d355e87b74fa0e87bef35d6f6d748"/>
</file>
<file name="events.pb">
<file name="src/Events.pbi">
<config load="0" scan="1" panel="1" warn="1" lastopen="1"/>
<fingerprint md5="f31cd410f195d632aae7d67d3dd4fd4a"/>
<fingerprint md5="938263b937dde78242133aac1b4dbb97"/>
</file>
<file name="src/Globals.pbi">
<config load="0" scan="1" panel="1" warn="1" lastopen="1"/>
<fingerprint md5="768cb291ebd658155da6c8419e722db8"/>
</file>
</section>
<section name="targets">
<target name="Default Target" enabled="1" default="1">
<inputfile value="pong.pb"/>
<inputfile value="src/Main.pb"/>
<outputfile value="build/pongr"/>
<executable value="build/pongr"/>
<options thread="1" xpskin="1" debug="1"/>
<compilecount enable="1" value="48"/>
<compilecount enable="1" value="50"/>
<buildcount enable="1" value="4"/>
</target>
</section>

View File

@ -1,15 +1,16 @@
; Here we draw stuff on screen. These are the dispatch
; functions which wil lbe calles from the state dispatch
; process.
Procedure DrawMenu()
;DrawText(50, 50, Menus(ActiveMenu)\Label, RGB(255, 255, 255), RGB(0, 0, 0))
DrawText(50, 50, *ActiveMenu\Title, RGB(255, 255, 255), RGB(0, 0, 0))
EndProcedure
Procedure DrawRunningGame()
Box(0, 0, 200, 200, RGB(0, 255, 0))
EndProcedure
; IDE Options = PureBasic 4.51 (Linux - x64)
; CursorPosition = 4
; CursorPosition = 3
; Folding = -
; EnableUnicode
; EnableThread

View File

@ -9,7 +9,7 @@ EndProcedure
Procedure HandleEventRunningGame()
EndProcedure
; IDE Options = PureBasic 4.51 (Linux - x64)
; CursorPosition = 9
; CursorPosition = 2
; Folding = -
; EnableUnicode
; EnableThread

16
pongr/src/Globals.pbi Normal file
View File

@ -0,0 +1,16 @@

; Global variables
Global Fullscreen = 0
Global Title.s = "Pongr - Build " + Str(#PB_Editor_BuildCount)
Global Screen.ScreenDimension\width = 800
Screen.ScreenDimension\height = 600
NewMap GameStates.GameState()
Global NewMap Menus.GameMenu()
Global CurrentState.s = "MAIN_MENU"
Global *ActiveMenu.GameMenu
; IDE Options = PureBasic 4.51 (Linux - x64)
; CursorPosition = 10
; EnableXP
; EnableCompileCount = 0
; EnableBuildCount = 0

View File

@ -2,17 +2,15 @@
; Very simple game to get started with PureBasic and the game development.
; 2011 - Ruben Mueller, Aaron Mueller
EnableExplicit
XIncludeFile "Structs.pbi"
XIncludeFile "Globals.pbi"
XIncludeFile "Draw.pbi"
XIncludeFile "Events.pbi"
; Global variables
Global Fullscreen = 0
Global Title.s = "Pongr - Build " + Str(#PB_Editor_BuildCount)
Global Screen.ScreenDimension\width = 800
Screen.ScreenDimension\height = 600
NewMap GameStates.GameState()
; Initialize all the variables and stuff. I think we refactor this
; into a separate file if it gets messy.
GameStates("MAIN_MENU")\DrawFun = @DrawMenu()
GameStates("MAIN_MENU")\HandleEventFun = @HandleEventMenu()
@ -22,35 +20,39 @@ GameStates("OPTION_MENU")\HandleEventFun = @HandleEventMenu()
GameStates("RUNNING_GAME")\DrawFun = @DrawRunningGame()
GameStates("RUNNING_GAME")\HandleEventFun = @HandleEventRunningGame()
; Read the complete game menus from the data/menu.data file.
; TODO: IncludeBinary looks interesting!
If ReadFile(0, "../data/menu.data")
While Eof(0) = 0
Debug ReadString(0)
Wend
CloseFile(0)
EndIf
; FIXME: This thing is really awful, we have to find a better
; way to define the complete menu. (A simple DSL maybe?)
Global NewMap Menus.GameMenu()
Menus("MAIN_MENU")\title = "Pongr"
Menus("MAIN_MENU")\Title = "Pongr"
Define Item.GameMenuItem
Item.GameMenuItem\Label = "Run game"
Item.GameMenuItem\Selected = true
Item.GameMenuItem\Selected = #True
Item.GameMenuItem\TargetState = GameStates("RUNNING_GAME")
AddElement(Menus("MAIN_MENU")\Entries())
menus("MAIN_MENU")\Entries() = Item
Define Item.GameMenuItem
Item.GameMenuItem\Label = "Options"
Item.GameMenuItem\Selected = false
Item.GameMenuItem\Selected = #False
Item.GameMenuItem\TargetState = GameStates("OPTION_MENU")
AddElement(Menus("MAIN_MENU")\Entries())
menus("MAIN_MENU")\Entries() = Item
Define Item.GameMenuItem
Item.GameMenuItem\Label = "Quit"
Item.GameMenuItem\Selected = false
Item.GameMenuItem\Selected = #False
Item.GameMenuItem\TargetState = GameStates("RLY_QUIT")
AddElement(Menus("MAIN_MENU")\Entries())
menus("MAIN_MENU")\Entries() = Item
Global CurrentState.s = "MAIN_MENU"
Global ActiveMenu.s = "MAIN_MENU"
*ActiveMenu.GameMenu = @Menus(CurrentState)
; Initialize subsystems
If InitSprite() = 0 Or InitKeyboard() = 0
@ -67,7 +69,7 @@ If OpenWindow(0, 0, 0, Screen\Width, Screen\Height, title, #PB_Window_ScreenCent
Repeat
; Event loop
Repeat
Event = WindowEvent()
Define Event = WindowEvent()
Until Event = 0
; Handle global events
@ -98,8 +100,8 @@ If OpenWindow(0, 0, 0, Screen\Width, Screen\Height, title, #PB_Window_ScreenCent
Until KeyboardPushed(#PB_Key_Escape)
EndIf
; IDE Options = PureBasic 4.51 (Linux - x64)
; CursorPosition = 69
; FirstLine = 48
; CursorPosition = 71
; FirstLine = 52
; EnableXP
; EnableCompileCount = 0
; EnableBuildCount = 0

View File

@ -21,12 +21,18 @@ Structure GameMenuItem
Selected.b
EndStructure
Structure GameOptionItem
List Options.s()
CurrentPosition.i
Selected.b
EndStructure
Structure GameMenu
Title.s
List Entries.GameMenuItem()
EndStructure
; IDE Options = PureBasic 4.51 (Linux - x64)
; CursorPosition = 25
; CursorPosition = 12
; EnableUnicode
; EnableThread
; EnableXP