| 12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- local function set_scores_state(self, score_state)
- gui.set_text(self.ui_elements.num_score, score_state.score)
- gui.set_text(self.ui_elements.num_best, score_state.best_score)
- end
- function init(self)
- self.current_score_state = { -- < 1 >
- score = math.random(100, 500),
- best_score = math.random(501, 999)
- }
- self.ui_elements = {} -- < 2 >
- self.ui_elements.num_score = gui.get_node("num_score")
- self.ui_elements.num_best = gui.get_node("num_best")
- set_scores_state(self, self.current_score_state) -- < 3 >
- end
- function on_message(self, message_id, message, sender)
- if message_id == hash("layout_changed") then -- < 4 >
- set_scores_state(self, self.current_score_state)
- elseif message_id == hash("update_score") then -- < 5 >
- self.current_score_state.score = self.current_score_state.score + message.score
- if self.current_score_state.score > self.current_score_state.best_score then
- self.current_score_state.best_score = self.current_score_state.score
- end
- set_scores_state(self, self.current_score_state)
- end
- end
- --[[
- 1.-It's important to store the state of the UI separately from the view.
- 2.-Having all the nodes for UI elements makes it easier to work with.
- 3.-This function updates the view with the current state.
- 4.-When the layout changes, all the nodes (view) reset to the corresponding layout setup.
- At this point, we need to restore our state.
- 5.-External code updates the state, and we apply changes of the state to the view.
- --]]
-
|