Merge: Reworked crypto.nit to introduce basic XOR attacks
[nit.git] / contrib / friendz / src / friendz.nit
index f780d74..762eb1d 100644 (file)
@@ -941,7 +941,6 @@ redef class Game
 
        init
        do
-               load_levels
                init_buttons
                entities.clear
                title
@@ -960,6 +959,7 @@ redef class Game
        # Play a level in player mode.
        fun play(l: Level)
        do
+               save # save the previous level grid
                level = l
                grid.load(level.saved_str or else level.str)
                init_play_menu(false)
@@ -1055,6 +1055,7 @@ redef class Game
        # Helper function to initialize the menu (and tile) screen
        fun init_menu
        do
+               save # save the previous level grid
                init_game
                level = null
                var i = levels.first
@@ -1280,6 +1281,14 @@ redef class Game
                        end
                end
        end
+
+       fun save
+       do
+               var l = level
+               if l != null then
+                       l.save
+               end
+       end
 end
 
 # The spash title image
@@ -1594,22 +1603,16 @@ redef class App
                # img loading?
        end
 
-       # Maximum wanted frame per second
-       var max_fps = 30
-
-       # clock used to track FPS
-       private var clock = new Clock
+       redef fun on_pause
+       do
+               super
+               game.save
+       end
 
        redef fun frame_core(display)
        do
                game.step
                game.draw(display)
-               var dt = clock.lapse
-               var target_dt = 1000000000 / max_fps
-               if dt.sec == 0 and dt.nanosec < target_dt then
-                       var sleep_t = target_dt - dt.nanosec
-                       sys.nanosleep(0, sleep_t)
-               end
        end
 
        redef fun input(input_event)
@@ -1651,7 +1654,8 @@ redef class KeyEvent
 end
 
 redef class Level
-       redef fun save
+       # Save the score and grid of the level
+       fun save
        do
                app.data_store["s{str}"] = if score > 0 then score else null
                var saved = game.grid.save