Aight I’m coming somewhere now and is about to start on the three mode/view classes that will be called View, ViewController and ViewModel and they will work after the Model-View-Controller concept and first one to be made is the ViewModel which will be the configuration script interface to the application.
It will work like this that the game is going to open the folder “data/views” and in there it’s going to look up all the files that fit *.view and load each and one of them into their own ViewModel class.
Here’s an example script:
OnInit = self.NewMethod("OnInit")
OnInit < Standard.Kernel.PrintLine("YAY! =D")
OnInit < quit_button.RegisterSignalHandler("Signal.Button.Click", OnButtonClick)
OnInit < background.FitToWindow()
OnDeinit = self.NewMethod("OnDeinit")
OnDeinit < Standard.Kernel.PrintLine("Auuw! D=")
OnDeinit < quit_button.UnregisterSignalHandler("Signal.Button.Click", OnButtonClick)
OnButtonClick = self.NewMethod("OnButtonClick", "b")
OnButtonClick < Application.Quit()
background = self.AddImage("data/graphics/background.png")
background.x = 0
background.y = 0
background.visible = true
quit_button = self.AddButton("Quit", "data/graphics/button.png")
quit_button.x = 100
quit_button.y = 50
There’s a lot more to be done here and some parts that I don’t show. For example I will also allow the ViewModel to receive the signal “Signal.Controller.Update” which is a signal from the controller that the view
is being updated. And the view always get updated once each frame. Though I would prefer to avoid the use of this signal as it will slow down the engine significantly if this method needs to be called each frame. And what if we got 100 objects showing that needs their own OnUpdate method called, and so on and so on. It will end up with that we only got 5 FPS or something like that. So instead I will add a lot of stuff like the “SetBackgroundImage” and the “AddButton” methods so that we prepare before it starts instead of working every frame.