Advertisement
Guest User

Jungle Fading

a guest
Aug 29th, 2017
492
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
BlitzMax 17.52 KB | None | 0 0
  1. ' This demo is a wip!
  2.  
  3. #Import "gui/"
  4. #Import "scene/"
  5. #Import "sprites/"
  6.  
  7. ''#Import "../../../modules-test.monkey2"
  8. #Import "<std>"
  9. #Import "<mojo>"
  10. #Import "<pyro-framework>"
  11. #Import "<pyro-gui>"
  12. #Import "<pyro-scenegraph>"
  13.  
  14. Using std..
  15. Using mojo..
  16. Using pyro.framework..
  17. Using pyro.gui..
  18. Using pyro.scenegraph..
  19.  
  20. Const FACEBOOK:="https://www.facebook.com/pages/Playniax/289410737764922"
  21. Const PLAYNIAX:="http://www.playniax.com"
  22. Const TWITTER:="https://twitter.com/playniax"
  23.  
  24. Const SPEED:=3
  25. Const FADE_SPEED:Float = 0.075
  26.  
  27. Global camera:Camera
  28. Global collisionLayer:Layer
  29. Global font:Font
  30. Global game:Game
  31. Global level:=0
  32. Global levels:=New String[]( "asset::level01/scene.txt" )
  33. Global menu:Menu
  34. Global pauseButton:Button
  35. Global pickups:=0
  36. Global player:Player
  37. Global scene:Scene
  38. Global sceneBuilder:SceneLoader
  39. Global virtualResolution:=New Vec2i( 1024,768 )
  40.  
  41. Class Button Extends GuiButton
  42.  
  43.     Method OnReleased() Override
  44.         Select Name
  45.             Case "start"
  46.                 menu.fading = Menu.FADE_OUT
  47.                 menu.fadeValue = 1
  48.             '   game.Set()
  49.             Case "pause"
  50.                 If Pause()
  51.                     Game.guiPage=0
  52.                     Pause( False )
  53.                 Else
  54.                     Game.guiPage=1
  55.                     Pause( True )
  56.                 Endif
  57.             Case "continue"
  58.                 Game.guiPage=0
  59.                 Pause( False )
  60.             Case "home"
  61.                 Game.guiPage=0
  62.                 Pause( False )
  63.                 'menu.Set()
  64.                 game.fading = Menu.FADE_OUT
  65.                 game.fadeValue = 1
  66.             Case "info"
  67.                 Menu.guiPage=1
  68.             Case "back"
  69.                 Menu.guiPage=0
  70.             Case "facebook"
  71.                 OpenUrl( FACEBOOK )
  72.             Case "twitter"
  73.                 OpenUrl( TWITTER )
  74.             Case "playniax"
  75.                 OpenUrl( PLAYNIAX )
  76.         End Select
  77.     End
  78.  
  79. End
  80.  
  81. Class Checkbox Extends GuiCheckbox
  82.  
  83.     Method OnReleased() Override
  84.         If Frame=0 Print Name+" = On ( Frame 0 )"
  85.         If Frame=1 Print Name+" = Off ( Frame 1 )"
  86.     End
  87.  
  88. End
  89.  
  90. Class Game Extends Screen
  91.  
  92.     Global fade:=1.0
  93.     Global guiLayer:=New GuiLayer[3]
  94.     Global guiPage:=0
  95.     Field fadeValue:Float = 0
  96.     Const FADE_IN:Int = 1
  97.     Const FADE_OUT:Int = 2
  98.     Const NOT_FADING:Int = 0
  99.     Field fading:Int = NOT_FADING
  100.  
  101.     Method New()
  102.  
  103.         scene=New Scene( ScreenManager )
  104.  
  105.         camera=New Camera( scene )
  106.         camera.ClearColor=New Color( .25,0,0,1 )
  107.  
  108.         ' The game screen uses 3 layers to display in-game pause button, home button, game over message etc:
  109.         guiLayer[0]=New GuiLayer( ScreenManager )                                                                                                                                       ' Create the gui layer for the pause button.
  110.         guiLayer[1]=New GuiLayer( ScreenManager )                                                                                                                                       ' Create the gui layer for the paused mode.
  111.         guiLayer[2]=New GuiLayer( ScreenManager )                                                                                                                                       ' Create the gui layer for the game over screen.
  112.  
  113.         ' Create the paused window:
  114.         Local pausedWindow:=New GuiImage
  115.         pausedWindow.Layer=guiLayer[1]
  116.         pausedWindow.Location=New Vec2f( PercentageOf( 50,virtualResolution.X ),PercentageOf( 50,virtualResolution.Y ) )                                                                ' Uses PercentageOf to calculate location.
  117.         pausedWindow.Surface.DrawData( GuiState.Idle ).Image=Content.GetImage( "asset::paused_window.png" )
  118.  
  119.         ' Create the 'pause' button:
  120.         pauseButton=New Button
  121.         pauseButton.Layer=guiLayer[0]
  122.         pauseButton.Name="pause"
  123.         pauseButton.Surface.DrawData( GuiState.Idle ).Image=Content.GetImage( "asset::pause_idle.png" )
  124.         pauseButton.Surface.DrawData( GuiState.Down ).Image=Content.GetImage( "asset::pause_down.png" )
  125.         pauseButton.Location=New Vec2f( PercentageOf( 95,virtualResolution.X ),PercentageOf( 5,virtualResolution.Y ) )
  126.         pauseButton.Pausable=False                                                                                                                                                      ' Button ignores pause mode.
  127.  
  128.         ' Create the 'sound' button:
  129.         Local soundButton:=New Checkbox
  130.         soundButton.Layer=guiLayer[1]
  131.         soundButton.Name="sound"
  132.         soundButton.Surface.DrawData( GuiState.Idle,0 ).Image=Content.GetImage( "asset::sound_on_idle.png" )
  133.         soundButton.Surface.DrawData( GuiState.Down,0 ).Image=Content.GetImage( "asset::sound_on_down.png" )
  134.         soundButton.Surface.DrawData( GuiState.Idle,1 ).Image=Content.GetImage( "asset::sound_off_idle.png" )
  135.         soundButton.Surface.DrawData( GuiState.Down,1 ).Image=Content.GetImage( "asset::sound_off_down.png" )
  136.         soundButton.Location=New Vec2f( pausedWindow.X-pausedWindow.Width*.5+PercentageOf( 50,pausedWindow.Width ),pausedWindow.Y-pausedWindow.Height*.5+PercentageOf( 71,pausedWindow.Height ) )
  137.         soundButton.Pausable=False                                                                                                                                                      ' Button ignores pause mode.
  138.  
  139.         ' Create the 'continue' button:
  140.         Local homeButton:=New Button
  141.         homeButton.Layer=guiLayer[1]
  142.         homeButton.Name="home"
  143.         homeButton.Surface.DrawData( GuiState.Idle ).Image=Content.GetImage( "asset::home_idle.png" )
  144.         homeButton.Surface.DrawData( GuiState.Down ).Image=Content.GetImage( "asset::home_down.png" )
  145.         homeButton.Location=New Vec2f( soundButton.X-soundButton.Width-8,soundButton.Y )
  146.         homeButton.Pausable=False                                                                                                                                                       ' Button ignores pause mode.
  147.  
  148.         ' Create the 'continue' button:
  149.         Local continueButton:=New Button
  150.         continueButton.Layer=guiLayer[1]
  151.         continueButton.Name="continue"
  152.         continueButton.Surface.DrawData( GuiState.Idle ).Image=Content.GetImage( "asset::right_idle.png" )
  153.         continueButton.Surface.DrawData( GuiState.Down ).Image=Content.GetImage( "asset::right_down.png" )
  154.         continueButton.Location=New Vec2f( soundButton.X+soundButton.Width+8,soundButton.Y )
  155.         continueButton.Pausable=False                                                                                                                                                   ' Button ignores pause mode.
  156.  
  157.         sceneBuilder=New SceneLoader
  158.         sceneBuilder.Load( "asset::background.txt" )
  159.         sceneBuilder.Build( scene )
  160.  
  161.         scene.Layers.Get( 0 ).Multiplier=New Vec2f( .2, 1 )
  162.         scene.Layers.Get( 1 ).Multiplier=New Vec2f( .4, 1 )
  163.         scene.Layers.Get( 2 ).Multiplier=New Vec2f( .6, 1 )
  164.         scene.Layers.Get( 3 ).Multiplier=New Vec2f( .8, 1 )
  165.         scene.Layers.Get( 5 ).Multiplier=New Vec2f
  166.  
  167.         ' Load the monkey frames
  168.         Local image:=Image.Load( "asset::monkey.png" )
  169.         Local data:=LoadString( "asset::monkey.txt" )
  170.  
  171.         Local gfxMonkey:=TexturePacker.GrabImages( image,data )
  172.  
  173.         player=New Player
  174.         player.Layer=scene.Layers.Get( 6 )
  175.         player.Images=gfxMonkey
  176.         player.TaskManager=scene.TaskManager
  177.         player.Tattooed=True
  178.         player.Floating=True
  179.        
  180.     End
  181.  
  182.     Method LoadLevel( path:String )
  183.  
  184.         sceneBuilder.Load( path )
  185.         sceneBuilder.Build( scene )
  186.  
  187.         collisionLayer=scene.GetLayer( "collision" )
  188.         collisionLayer.Enabled=False
  189.  
  190.         pickups=Count( player.Layer,141 )
  191.  
  192.     End
  193.  
  194.     Method OnKeyEvent( event:KeyEvent ) Override
  195.         guiLayer[guiPage].SendKeyEvent( event )
  196.     End
  197.  
  198.     Method OnMouseEvent( event:MouseEvent ) Override
  199.         guiLayer[guiPage].SendMouseEvent( event )
  200.     End
  201.  
  202.     Method OnRender( canvas:Canvas ) Override
  203.  
  204.         scene.Draw( canvas )
  205.  
  206.         DrawFader( canvas,fade )                                                                                            ' Fade overlay.
  207.  
  208.         guiLayer[guiPage].Draw( canvas )                                                                                    ' Render the gui components.
  209.  
  210.         If player.state=0
  211.             canvas.Font=font
  212.             canvas.Color=New Color( .5,1,0 )
  213.             canvas.DrawText( "Tap left mouse or space to start / jump",ScreenManager.Width*.5,ScreenManager.Height-font.Height-8,.5,0 )
  214.         Endif
  215.         If fading > NOT_FADING
  216.             DrawFader( canvas, fadeValue )
  217.         Endif
  218.  
  219.  
  220.     End
  221.  
  222.     Method OnStart() Override
  223.  
  224.         LoadLevel( levels[level] )
  225.  
  226.         ' Set player start values:
  227.         player.FlippedX=1
  228.         player.Frame=0
  229.         player.Location=New Vec2f( 96,640 )
  230.         player.state=0
  231.         player.jumpY=0.0
  232.  
  233.         camera.X=0
  234.         camera.Y=scene.Height-virtualResolution.Y
  235.  
  236.     End
  237.  
  238.     Method OnStop() Override
  239.         scene.ClearLayers()
  240.         level=0
  241.         fade=1
  242.         GCCollect()
  243.     End
  244.  
  245.     Method OnUpdate() Override
  246.  
  247.         scene.Update()                                                                                                          ' Update the scenegraph.
  248.         guiLayer[guiPage].Update()                                                                                              ' Update the gui components.
  249.  
  250.         If Keyboard.KeyHit( Key.Escape )
  251.             If Pause()
  252.                 Pause( False )
  253.                 guiPage=0
  254.             Else
  255.                 Pause( True )
  256.                 guiPage=1
  257.             Endif
  258.         Endif
  259.  
  260.         ' Fade logic:
  261.         If Pause()
  262.             fade-=.1
  263.             If fade<.25 fade=.25
  264.         Else
  265.             fade+=.1
  266.             If fade>1 fade=1
  267.         Endif
  268.         If fading > NOT_FADING
  269.             If fading = FADE_IN
  270.                 If fadeValue<1
  271.                     fadeValue+=FADE_SPEED
  272.                 Else
  273.                     fadeValue=1.0
  274.                     fading = NOT_FADING
  275.                 Endif
  276.             Else
  277.                 If fadeValue>0
  278.                     fadeValue-=FADE_SPEED
  279.                 Else
  280.                     fadeValue=0
  281.                     menu.Set()
  282.                     fading = NOT_FADING
  283.                     menu.fading = Menu.FADE_IN
  284.                     menu.fadeValue = 0
  285.                 Endif
  286.             Endif
  287.         Endif
  288.     End
  289.  
  290. End
  291.  
  292. Class Menu Extends Screen
  293.  
  294.     Global guiLayer:=New GuiLayer[2]
  295.     Global guiPage:=0
  296.    
  297.     Field fadeValue:Float = 0
  298.     Const FADE_IN:Int = 1
  299.     Const FADE_OUT:Int = 2
  300.     Const NOT_FADING:Int = 0
  301.     Field fading:Int = NOT_FADING
  302.    
  303.     Method New()
  304.  
  305.         ' Create the gui layers:
  306.         guiLayer[0]=New GuiLayer( ScreenManager )
  307.         guiLayer[1]=New GuiLayer( ScreenManager )
  308.  
  309.         ' Create the background:
  310.         Local background1:=New GuiImage
  311.         background1.Layer=guiLayer[0]
  312.         background1.Location=New Vec2f( PercentageOf( 50,virtualResolution.X ),PercentageOf( 50,virtualResolution.Y ) )
  313.         background1.Surface.DrawData( GuiState.Idle ).Image=Content.GetImage( "asset::gui_background.png" )
  314.    
  315.         Local logo:=New GuiImage
  316.         logo.Layer=guiLayer[0]
  317.         logo.Location=New Vec2f( PercentageOf( 50,virtualResolution.X ),PercentageOf( 50,virtualResolution.Y ) )
  318.         logo.Surface.DrawData( GuiState.Idle ).Image=Content.GetImage( "asset::logo.png" )
  319.  
  320.         ' Create the 'sound' button:
  321.         Local soundButton:=New Checkbox
  322.         soundButton.Layer=guiLayer[0]
  323.         soundButton.Surface.DrawData( GuiState.Idle,0 ).Image=Content.GetImage( "asset::sound_on_idle.png" )
  324.         soundButton.Surface.DrawData( GuiState.Down,0 ).Image=Content.GetImage( "asset::sound_on_down.png" )
  325.         soundButton.Surface.DrawData( GuiState.Idle,1 ).Image=Content.GetImage( "asset::sound_off_idle.png" )
  326.         soundButton.Surface.DrawData( GuiState.Down,1 ).Image=Content.GetImage( "asset::sound_off_down.png" )
  327.         soundButton.Location=New Vec2f( PercentageOf( 8,virtualResolution.X ),PercentageOf( 90,virtualResolution.Y ) )
  328.         soundButton.Pausable=False                                                                                              ' Button ignores pause mode
  329.  
  330.         ' Create the 'info' button
  331.         Local infoButton:=New Button
  332.         infoButton.Layer=guiLayer[0]
  333.         infoButton.Name="info"
  334.         infoButton.Surface.DrawData( GuiState.Idle ).Image=Content.GetImage( "asset::info_idle.png" )
  335.         infoButton.Surface.DrawData( GuiState.Down ).Image=Content.GetImage( "asset::info_down.png" )
  336.         infoButton.Location=New Vec2f( soundButton.X+soundButton.Width+8,soundButton.Y )
  337.         infoButton.Pausable=False                                                                                               ' Button ignores pause mode.
  338.  
  339.         ' Create the 'start game' button
  340.         Local startButton:=New Button
  341.         startButton.Layer=guiLayer[0]
  342.         startButton.Name="start"
  343.         startButton.Surface.DrawData( GuiState.Idle ).Image=Content.GetImage( "asset::start_idle.png" )
  344.         startButton.Surface.DrawData( GuiState.Down ).Image=Content.GetImage( "asset::start_down.png" )
  345.         startButton.Location=New Vec2f( 521,521 )
  346.         startButton.Pausable=False                                                                                              ' Button ignores pause mode.
  347.  
  348.         ' Create the 'twitter' button
  349.         Local twitterButton:=New Button
  350.         twitterButton.Layer=guiLayer[0]
  351.         twitterButton.Name="twitter"
  352.         twitterButton.Surface.DrawData( GuiState.Idle ).Image=Content.GetImage( "asset::twitter_idle.png" )
  353.         twitterButton.Surface.DrawData( GuiState.Down ).Image=Content.GetImage( "asset::twitter_down.png" )
  354.         twitterButton.Location=New Vec2f( PercentageOf( 83,virtualResolution.X ),PercentageOf( 90,virtualResolution.Y ) )
  355.         twitterButton.Pausable=False                                                                                ' Button ignores pause mode.
  356.  
  357.         ' Create the 'facebook' button
  358.         Local facebookButton:=New Button
  359.         facebookButton.Layer=guiLayer[0]
  360.         facebookButton.Name="facebook"
  361.         facebookButton.Surface.DrawData( GuiState.Idle ).Image=Content.GetImage( "asset::facebook_idle.png" )
  362.         facebookButton.Surface.DrawData( GuiState.Down ).Image=Content.GetImage( "asset::facebook_down.png" )
  363.         facebookButton.Location=New Vec2f( twitterButton.X+twitterButton.Width+8,twitterButton.Y )
  364.         facebookButton.Pausable=False                                                                               ' Button ignores pause mode.
  365.  
  366.         ' Create the background:
  367.         Local background2:=New GuiImage
  368.         background2.Layer=guiLayer[1]
  369.         background2.Location=New Vec2f( PercentageOf( 50,virtualResolution.X ),PercentageOf( 50,virtualResolution.Y ) )
  370.         background2.Surface.DrawData( GuiState.Idle ).Image=Content.GetImage( "asset::gui_background.png" )
  371.    
  372.         Local info:=New GuiImage
  373.         info.Layer=guiLayer[1]
  374.         info.Location=New Vec2f( PercentageOf( 50,virtualResolution.X ),PercentageOf( 50,virtualResolution.Y )  )   ' Uses PercentageOf to calculate location.
  375.         info.Surface.DrawData( GuiState.Idle ).Image=Content.GetImage( "asset::info.png" )
  376.  
  377.         ' Create the 'back' button
  378.         Local backButton:=New Button
  379.         backButton.Layer=guiLayer[1]
  380.         backButton.Name="back"
  381.         backButton.Surface.DrawData( GuiState.Idle ).Image=Content.GetImage( "asset::left_idle.png" )
  382.         backButton.Surface.DrawData( GuiState.Down ).Image=Content.GetImage( "asset::left_down.png" )
  383.         backButton.Location=New Vec2f( PercentageOf( 8,virtualResolution.X ),PercentageOf( 90,virtualResolution.Y ) )
  384.         backButton.Pausable=False                                                                                   ' Button ignores pause mode.
  385.  
  386.         ' Create the 'playniax' button
  387.         Local playniaxButton:=New Button
  388.         playniaxButton.Layer=guiLayer[1]
  389.         playniaxButton.Name="playniax"
  390.         playniaxButton.Surface.DrawData( GuiState.Idle ).Image=Content.GetImage( "asset::logo_playniax.png" )
  391.         playniaxButton.Surface.DrawData( GuiState.Down ).Scale=New Vec2f( .95,.95 )
  392.         playniaxButton.Location=New Vec2f( PercentageOf( 92,virtualResolution.X ),PercentageOf( 90,virtualResolution.Y ) )
  393.         playniaxButton.Pausable=False                                                                               ' Button ignores pause mode.
  394.  
  395.     End
  396.  
  397.     Method OnKeyEvent( event:KeyEvent ) Override
  398.         guiLayer[guiPage].SendKeyEvent( event )
  399.     End
  400.  
  401.     Method OnMouseEvent( event:MouseEvent ) Override
  402.         guiLayer[guiPage].SendMouseEvent( event )
  403.     End
  404.  
  405.     Method OnRender( canvas:Canvas ) Override
  406.    
  407.         guiLayer[guiPage].Draw( canvas )
  408.         If fading > NOT_FADING
  409.             DrawFader( canvas, fadeValue )
  410.         Endif
  411.     End
  412.  
  413.     Method OnUpdate() Override
  414.  
  415.         guiLayer[guiPage].Update()
  416.         If fading > NOT_FADING
  417.             If fading = FADE_IN
  418.                 If fadeValue<1
  419.                     fadeValue+=FADE_SPEED
  420.                 Else
  421.                     fadeValue=1.0
  422.                     fading = NOT_FADING
  423.                 Endif
  424.             Else
  425.                 If fadeValue>0
  426.                     fadeValue-=FADE_SPEED
  427.                 Else
  428.                     fadeValue=0
  429.                     fading = NOT_FADING
  430.                     game.Set()
  431.                     game.fading = Menu.FADE_IN
  432.                     game.fadeValue = 0
  433.                 Endif
  434.             Endif
  435.         Endif
  436.     End
  437.  
  438. End
  439.  
  440. Class Player Extends LayerSprite
  441.  
  442.     Field jumpY:=0.0
  443.     Field state:=0
  444.  
  445.     Method OnUpdate() Override
  446.  
  447.         If state>0
  448.  
  449.             For Local s:=0 Until SPEED
  450.    
  451.                 X+=FlippedX
  452.  
  453.                 For Local y:=-32 To 32 Step 32
  454.                     Local objects:=collisionLayer.GetLayerObjects( X+32,Y+y )
  455.                     If objects.Length>0 And FlippedX=1 And objects.Get( 0 ).GlobalProperties And objects.Get( 0 ).GlobalProperties.ReadInt( "gid" )=161
  456.                         X+=32
  457.                         FlippedX=-1
  458.                     Endif
  459.                 Next
  460.  
  461.                 For Local y:=-32 To 32 Step 32
  462.                     Local objects:=collisionLayer.GetLayerObjects( X-32,Y+y )
  463.                     If objects.Length>0 And FlippedX=-1 And objects.Get( 0 ).GlobalProperties And objects.Get( 0 ).GlobalProperties.ReadInt( "gid" )=161
  464.                         X-=32
  465.                         FlippedX=1
  466.                     Endif
  467.                 Next
  468.  
  469.                 If state=1
  470.                
  471.                     Frame+=.3
  472.                     Frame=Frame Mod Frames
  473.                    
  474.                     If ( Not pauseButton.PointInside( View.MouseLocation ) And Mouse.ButtonHit( MouseButton.Left ) ) Or Keyboard.KeyHit( Key.Space )
  475.                         jumpY=-6
  476.                         state=2
  477.                     Endif
  478.    
  479.                 Endif
  480.    
  481.                 If state=1
  482.  
  483.                     Local sprites:=collisionLayer.GetLayerObjects( X,Y+64 )
  484.                     If sprites.Length=0
  485.                         jumpY=1
  486.                         state=2
  487.                     Endif
  488.  
  489.                 Endif
  490.                
  491.                 If state=2
  492.                
  493.                     Y+=jumpY
  494.    
  495.                     jumpY+=.1
  496.  
  497.                     Local sprites:=collisionLayer.GetLayerObjects( X,Y+64 )
  498.                     If sprites.Length>0
  499.                         Local sprite:=sprites.Get( 0 )
  500.                         If sprite And Y+64<sprite.Y And jumpY>0
  501.                             Y=sprite.Y-80
  502.                             state=1
  503.                         Endif
  504.                     Endif
  505.  
  506.                 Endif
  507.  
  508.                 For Local x:=-32 To 32 Step 32
  509.                     For Local y:=-32 To 32 Step 32
  510.                         Local objects:=Layer.GetLayerObjects( X+x,Y+y )
  511.                         If objects.Length>0
  512.                             If objects.Get( 0 ).GlobalProperties And objects.Get( 0 ).GlobalProperties.ReadInt( "gid" )=141
  513.                                 objects.Get( 0 ).Remove()
  514.                                 pickups-=1
  515.                                 Print pickups
  516.                             Endif
  517.                         Endif
  518.                     Next
  519.                 Next
  520.  
  521.             Next
  522.    
  523.             UpdateCamera()
  524.  
  525.         Endif
  526.  
  527.         If state=0
  528.             If ( Not pauseButton.PointInside( View.MouseLocation ) And Mouse.ButtonHit( MouseButton.Left ) ) Or Keyboard.KeyHit( Key.Space )
  529.                 state=1
  530.             Endif
  531.         Endif
  532.  
  533.     End
  534.  
  535.     Method UpdateCamera()
  536.  
  537.         If FlippedX=1
  538.  
  539.             If X>virtualResolution.x*.5 And X<=scene.Width-virtualResolution.X*.5
  540.                 camera.X=X-virtualResolution.X*.5
  541.             Endif
  542.  
  543.         Endif
  544.  
  545.         If FlippedX=-1
  546.  
  547.             If X>virtualResolution.x*.5+32 And X<=scene.Width-virtualResolution.X*.5+32
  548.                 camera.X=X-virtualResolution.X*.5-32
  549.             Endif
  550.  
  551.         Endif
  552. #rem
  553.         If Y<scene.Height-virtualResolution.Y*.5
  554.             camera.Y=Y-virtualResolution.Y*.5
  555.         Else
  556.             camera.Y=scene.Height-virtualResolution.Y
  557.         Endif
  558. #end
  559.     End
  560.  
  561. End
  562.  
  563. Class PyroDemo Extends ScreenManager
  564.  
  565.     Method New( title:String,width:Int,height:Int,flags:WindowFlags=WindowFlags.Resizable )
  566.  
  567.         Super.New( title,width,height,flags )
  568.  
  569.         ClearColor=New Color( 0,0,.2 )
  570.  
  571.         Layout="letterbox"
  572.  
  573.         font=Font.Load( "asset::fonts/DejaVuSans.ttf",40 )
  574.  
  575.         game=New Game
  576.         menu=New Menu
  577.         menu.fading = Menu.FADE_IN
  578.         menu.fadeValue = 0
  579. ''      game.Set()
  580.  
  581.     End
  582.  
  583.     Method OnMeasure:Vec2i() Override
  584.         Return virtualResolution
  585.     End
  586.  
  587. End
  588.  
  589. Function Count:Int( layer:Layer,gid:Int )
  590.  
  591.     Local count:=0
  592.  
  593.     For Local obj:=Eachin layer.GetLayerObjects()
  594.         If obj.GlobalProperties And obj.GlobalProperties.ReadInt( "gid" )=gid count+=1
  595.     Next
  596.  
  597.     Return count
  598.  
  599. End
  600.  
  601. Function Main()
  602.  
  603.     New AppInstance
  604.    
  605.     New PyroDemo( "Jungle",640,480 )
  606.  
  607.     App.Run()
  608.  
  609. End
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement