23314f85e1a617299c77b1d53dfdef896b68498c
1 # This file is part of NIT ( http://www.nitlanguage.org ).
3 # Copyright 2012-2013 Alexis Laferrière <alexis.laf@xymus.net>
5 # Licensed under the Apache License, Version 2.0 (the "License");
6 # you may not use this file except in compliance with the License.
7 # You may obtain a copy of the License at
9 # http://www.apache.org/licenses/LICENSE-2.0
11 # Unless required by applicable law or agreed to in writing, software
12 # distributed under the License is distributed on an "AS IS" BASIS,
13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 # See the License for the specific language governing permissions and
15 # limitations under the License.
17 # App for the Dino game, manages App lifecyle and inputs
19 app_version
(0, 2, git_revision
)
31 var cavemen_at_first_level
= 6
34 var target_dt
= 12000000
36 var game
: nullable Game = null
37 var score
= new Container[Int](0)
38 var imgs
: nullable ImageSet = null
39 var splash
: nullable SplashScreen = null
41 redef fun window_created
46 assert display
!= null
48 # load only splash images
49 splash
= new SplashScreen( self )
50 splash
.draw
( display
, false )
53 imgs
= new ImageSet( self )
55 splash
.draw
( display
, true )
58 redef fun frame_core
( display
)
64 var turn
= game
.do_turn
65 game
.draw
( display
, imgs
.as(not null), turn
)
68 if dt
.sec
== 0 and dt
.nanosec
< target_dt
then
69 var sleep_t
= target_dt
- dt
.nanosec
70 sys
.nanosleep
(0, sleep_t
)
73 splash
.draw
( display
, true )
77 redef fun input
( input_event
)
79 if input_event
isa QuitEvent then # close window button
80 quit
= true # orders system to quit
81 return true # this event has been handled
83 else if input_event
isa PointerEvent then
86 game
= new Game( cavemen_at_first_level
, score
)
87 else if game
.over
and game
.ready_to_start_over
then
89 var next_nbr_caveman
= game
.nbr_wanted_cavemen
91 next_nbr_caveman
+= cavemen_incr
93 score
= new Container[Int](0)
94 next_nbr_caveman
= cavemen_at_first_level
96 game
= new Game( next_nbr_caveman
, score
)
99 game
.dino
.going_to
= (new ScreenPos( input_event
.x
, input_event
.y
)).to_game
( display
.as(not null) )
103 else if input_event
isa KeyEvent then
107 return false # unknown event, can be handled by something else