initial data and stuff

This commit is contained in:
Ruben Müller 2011-08-20 14:49:54 +02:00
parent 5ad8a0fb96
commit 9b069db5cd
11 changed files with 393 additions and 3 deletions

4
README
View File

@ -1,3 +1 @@
good, you´ve read me! :)
Test!
Aaron and Ruben Müller for the LD21

8
data/menu.data Normal file
View File

@ -0,0 +1,8 @@
MAIN_MENU {ESCape}
BUTTON: {Escape now!} -> RUNNING_GAME
BUTTON: {End game} -> RLY_QUIT
RLY_QUIT {You want to leave?}
BUTTON: {Yes} -> EXIT
BUTTON: {No} -> MAIN_MENU

69
doc/LICENSE.pcre.txt Normal file
View File

@ -0,0 +1,69 @@
PCRE LICENCE
------------
PCRE is a library of functions to support regular expressions whose syntax
and semantics are as close as possible to those of the Perl 5 language.
Release 7 of PCRE is distributed under the terms of the "BSD" licence, as
specified below. The documentation for PCRE, supplied in the "doc"
directory, is distributed under the same terms as the software itself.
The basic library functions are written in C and are freestanding. Also
included in the distribution is a set of C++ wrapper functions.
THE BASIC LIBRARY FUNCTIONS
---------------------------
Written by: Philip Hazel
Email local part: ph10
Email domain: cam.ac.uk
University of Cambridge Computing Service,
Cambridge, England.
Copyright (c) 1997-2007 University of Cambridge
All rights reserved.
THE C++ WRAPPER FUNCTIONS
-------------------------
Contributed by: Google Inc.
Copyright (c) 2007, Google Inc.
All rights reserved.
THE "BSD" LICENCE
-----------------
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the name of the University of Cambridge nor the name of Google
Inc. nor the names of their contributors may be used to endorse or
promote products derived from this software without specific prior
written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
End

48
escape.pbp Normal file
View File

@ -0,0 +1,48 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://www.purebasic.com/namespace" version="1.0" creator="PureBasic 4.51 (MacOS X - x86)">
<section name="config">
<options closefiles="1" openmode="0" name="ESCape"/>
<comment>
LD21 with Aaron and Ruben
</comment>
</section>
<section name="data">
<explorer view="../../../" pattern="0"/>
<log show="1"/>
<lastopen date="2011-08-20 14:40" user="rubenmueller" host="localhost"/>
</section>
<section name="files">
<file name="src/Main.pb">
<config load="0" scan="1" panel="1" warn="1" lastopen="0"/>
<fingerprint md5="417507aea66f78905c4df97a3320154c"/>
</file>
<file name="src/Draw.pbi">
<config load="0" scan="1" panel="1" warn="1" lastopen="0"/>
<fingerprint md5="d6d3ec279f01ec471b40d898bdd3bfea"/>
</file>
<file name="src/Events.pbi">
<config load="0" scan="1" panel="1" warn="1" lastopen="0"/>
<fingerprint md5="0b1b012875300d8e87bdd60b48eff043"/>
</file>
<file name="src/Functions.pbi">
<config load="0" scan="1" panel="1" warn="1" lastopen="0"/>
<fingerprint md5="ca68ea8da1167d8ec714cca0cc2c3c7e"/>
</file>
<file name="src/Globals.pbi">
<config load="0" scan="1" panel="1" warn="1" lastopen="0"/>
<fingerprint md5="3f1597a2d80a28427556491483d43bef"/>
</file>
<file name="src/Structs.pbi">
<config load="0" scan="1" panel="1" warn="1" lastopen="0"/>
<fingerprint md5="f1ad13f0d40ae11665f9bfbf6b359b22"/>
</file>
</section>
<section name="targets">
<target name="Default Target" enabled="1" default="1">
<inputfile value=""/>
<outputfile value=""/>
<options xpskin="1" debug="1"/>
</target>
</section>
</project>

BIN
shots/ESCape-01.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

43
src/Draw.pbi Normal file
View File

@ -0,0 +1,43 @@
; Here we draw stuff on screen. These are the dispatch
; functions which will be called from the state dispatch
; process.
; Draw the current activated menu. This will be set from
; the dispatcher. The events are controlled by the
; HandleEventMenu() function.
Procedure DrawMenu()
Define Black = RGB(0, 0, 0)
Define White = RGB(255, 255, 255)
Define ActiveMenuItemColor = RGB(255, 0, 0)
DrawingFont(Font_H1)
DrawText(50, 50, *ActiveMenu\Title, white, black)
Define Offset = 0
Define FontColor = White
ForEach *ActiveMenu\Entries()
If *ActiveMenu\Entries()\Selected
FontColor = ActiveMenuItemColor
Else
FontColor = White
EndIf
DrawingFont(Font_H2)
DrawText(50, 300+(Offset*30), *ActiveMenu\Entries()\Label, FontColor, Black)
Offset = Offset+1
Next
EndProcedure
Procedure DrawRunningGame()
Box(0, 0, 200, 200, RGB(0, 255, 0))
EndProcedure
; IDE Options = PureBasic 4.51 (MacOS X - x86)
; CursorPosition = 26
; Folding = -
; EnableUnicode
; EnableThread
; EnableXP
; EnableCompileCount = 0
; EnableBuildCount = 0

46
src/Events.pbi Normal file
View File

@ -0,0 +1,46 @@
; In this file, we handle alle the events
Procedure HandleEventMenu()
Define ActiveMenu_Index.i = ListIndex(*ActiveMenu\Entries())
If KeyboardReleased(#PB_Key_Up)
Menu_GotoCurrent()
*ActiveMenu\Entries()\Selected = #False
If ListIndex(*ActiveMenu\Entries()) = 0
LastElement(*ActiveMenu\Entries())
Else
PreviousElement(*ActiveMenu\Entries())
EndIf
*ActiveMenu\Entries()\Selected = #True
EndIf
If KeyboardReleased(#PB_Key_Down)
Menu_GotoCurrent()
*ActiveMenu\Entries()\Selected = #False
If ListIndex(*ActiveMenu\Entries()) = (ListSize(*ActiveMenu\Entries())-1)
FirstElement(*ActiveMenu\Entries())
Else
NextElement(*ActiveMenu\Entries())
EndIf
*ActiveMenu\Entries()\Selected = #True
EndIf
If KeyboardReleased(#PB_Key_Return)
Debug "Return!"
EndIf
EndProcedure
Procedure HandleEventRunningGame()
EndProcedure
; IDE Options = PureBasic 4.51 (MacOS X - x86)
; CursorPosition = 32
; Folding = -
; EnableUnicode
; EnableThread
; EnableXP
; EnableCompileCount = 0
; EnableBuildCount = 0

1
src/Functions.pbi Normal file
View File

@ -0,0 +1 @@
; This file holds all the functions If it gets too big, ; we can split it in categories ; ***************************************************************************** ; * Menu Procedure Menu_GotoCurrent() If *ActiveMenu\Entries()\Selected <> #True FirstElement(*ActiveMenu\Entries()); ForEach *ActiveMenu\Entries() If *ActiveMenu\Entries()\Selected = #True Break EndIf Next EndIf EndProcedure ; ***************************************************************************** ; IDE Options = PureBasic 4.51 (MacOS X - x86) ; CursorPosition = 13 ; Folding = - ; EnableXP

20
src/Globals.pbi Normal file
View File

@ -0,0 +1,20 @@

; 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
; Fonts
Global Font_H1 = LoadFont(1, "Courier", 40, #PB_Font_Bold)
Global Font_H2 = LoadFont(2, "Verdana", 18)
; IDE Options = PureBasic 4.51 (MacOS X - x86)
; CursorPosition = 13
; EnableXP
; EnableCompileCount = 0
; EnableBuildCount = 0

117
src/Main.pb Normal file
View File

@ -0,0 +1,117 @@
; ESCape
; LD21 entry
; 2011 - Ruben Mueller, Aaron Mueller
EnableExplicit
XIncludeFile "Structs.pbi"
XIncludeFile "Globals.pbi"
XIncludeFile "Draw.pbi"
XIncludeFile "Functions.pbi"
XIncludeFile "Events.pbi"
; 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()
GameStates("OPTION_MENU")\DrawFun = @DrawMenu()
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")
CreateRegularExpression(0, "^([A-Z_-]+) {(.*)}") ; Menu title
CreateRegularExpression(1, "^ BUTTON: {(.+)} -> (.+)") ; A button
CreateRegularExpression(2, "^ OPTION: (.*)") ; A option field (TODO: Thats not exactly right)
While Eof(0) = 0
Dim Matches$(0)
Define Line.s = ReadString(0)
; We found a new menu
If MatchRegularExpression(0, Line)
Define i
For i=0 To ExtractRegularExpression(0, Line, Matches$())-1
Debug Matches$(i) ; FIXME: Thats not what we want ...
Next
EndIf
Wend
FreeRegularExpression(0)
FreeRegularExpression(1)
FreeRegularExpression(2)
CloseFile(0)
EndIf
Menus("MAIN_MENU")\Title = "ESCape"
Define Item.GameMenuItem
Item.GameMenuItem\Label = "Escape now!"
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 = "End game"
Item.GameMenuItem\Selected = #False
Item.GameMenuItem\TargetState = GameStates("RLY_QUIT")
AddElement(Menus("MAIN_MENU")\Entries())
menus("MAIN_MENU")\Entries() = Item
*ActiveMenu.GameMenu = @Menus(CurrentState)
; Initialize subsystems
If InitSprite() = 0 Or InitKeyboard() = 0
MessageRequester("Error", "Sorry, can't keep up.", 0)
End
EndIf
; Start the main loop which will create the window, wait for events and draw things
; on the screen. To escape from this loop, press ESC or close the window.
If OpenWindow(0, 0, 0, Screen\Width, Screen\Height, title, #PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(0), 0, 0, Screen\Width, Screen\Height, 0, 0, 0)
Repeat
; Event loop
Repeat
Define Event = WindowEvent()
Until Event = 0
; Handle global events
ExamineKeyboard()
If KeyboardReleased(#PB_Key_F)
CloseScreen()
If Fullscreen = 0
OpenScreen(800, 600, 32, Title)
Fullscreen = 1
Else
OpenWindowedScreen(WindowID(0), 0, 0, 800, 600, 0, 0, 0)
Fullscreen = 0
EndIf
EndIf
; Handle the events for the current state
GameStates(CurrentState)\HandleEventFun()
; Draw the stuff on the screen
FlipBuffers()
ClearScreen(RGB(0, 0, 0))
If StartDrawing(ScreenOutput())
GameStates(CurrentState)\DrawFun()
StopDrawing()
EndIf
Delay(1)
Until KeyboardPushed(#PB_Key_Escape)
EndIf
; IDE Options = PureBasic 4.51 (MacOS X - x86)
; CursorPosition = 59
; FirstLine = 26
; EnableXP
; EnableCompileCount = 0
; EnableBuildCount = 0

40
src/Structs.pbi Normal file
View File

@ -0,0 +1,40 @@
; This file holds all structs so we can include it in every
; file we need it.
Structure ScreenDimension
Width.i
Height.i
EndStructure
Prototype DRAW()
Prototype HANDLE_EVENTS()
Structure GameState
DrawFun.DRAW
HandleEventFun.HANDLE_EVENTS
EndStructure
Structure GameMenuItem
Label.s
TargetState.GameState
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 (MacOS X - x86)
; CursorPosition = 32
; EnableUnicode
; EnableThread
; EnableXP
; EnableCompileCount = 1
; EnableBuildCount = 0