# General Mnit application structure
module mnit_app
+import ::app
import mnit_display
# An App instance serves as base to every Mnit projects.
#
# This class is redefed by plateforme modules and so
# App can be specialized directly in the user app.
-abstract class App
+redef class App
type IE: InputEvent
type D: Display
type I: Image
# Received quit order
var quit: Bool writable = false
- init do end
-
# App is visible? (vs minimized or in background)
fun visible: Bool is abstract
# Main frame method to redef
# Is called between readying display and flipping it
- fun frame_core( display: D ) is abstract
-
- #fun start do end
- #fun stop do end
- #fun destroy do end
-
- # Called when asked by the system (mainly for Android)
- fun save do end
-
- # Called when asked by the system (mainly for Android)
- fun pause do end
-
- # Called when asked by the system (mainly for Android)
- fun resume do end
-
- # System notification
- fun gained_focus do end
-
- # System notification
- fun lost_focus do end
-
- # Main init method for graphical stuff
- # Is called when display is ready so graphical assets
- # can be loaded at this time.
- fun init_window do end
-
- # Called before destroying the window
- fun term_window do end
-
- # Helper function for logging
- fun log_error( msg: String ) do print "#nit error: {msg}"
-
- # Helper function for logging
- fun log_warning( msg: String ) do print "#nit warn: {msg}"
-
- # Helper function for logging
- fun log_info( msg: String ) do print "#nit info: {msg}"
+ fun frame_core( display: D ) do end
# Receive and deal with all inputs
fun input( event: InputEvent ): Bool
protected fun generate_input is abstract
# Main app loop
- # Usually you want to redef framw_core instead of this
- fun main_loop
+ # Usually you want to redef frame_core instead of this
+ redef fun run
do
while not quit do
generate_input