123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506 |
- """
- Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
- Date: Thu Nov 10 14:05:46 2016
- Model author: Glenn De Jonghe
- Model name: Player Tank
- Model description:
- Handling the player tank.
- """
- from sccd.runtime.statecharts_core import *
- # package "Player Tank"
- class Main(RuntimeClassBase):
- def __init__(self, controller, tank):
- RuntimeClassBase.__init__(self, controller)
-
- self.semantics.big_step_maximality = StatechartSemantics.TakeMany
- self.semantics.internal_event_lifeline = StatechartSemantics.Queue
- self.semantics.input_event_lifeline = StatechartSemantics.FirstComboStep
- self.semantics.priority = StatechartSemantics.SourceParent
- self.semantics.concurrency = StatechartSemantics.Single
-
- # build Statechart structure
- self.build_statechart_structure()
-
- # user defined attributes
- self.tank = None
-
- # call user defined constructor
- Main.user_defined_constructor(self, tank)
-
- def user_defined_constructor(self, tank):
- self.tank = tank
-
- def user_defined_destructor(self):
- pass
-
-
- # builds Statechart structure
- def build_statechart_structure(self):
-
- # state <root>
- self.states[""] = State(0, "", self)
-
- # state /state_1
- self.states["/state_1"] = State(1, "/state_1", self)
-
- # state /state_2
- self.states["/state_2"] = State(2, "/state_2", self)
-
- # state /state_3
- self.states["/state_3"] = State(3, "/state_3", self)
-
- # state /state_4
- self.states["/state_4"] = State(4, "/state_4", self)
-
- # state /end
- self.states["/end"] = State(5, "/end", self)
-
- # add children
- self.states[""].addChild(self.states["/state_1"])
- self.states[""].addChild(self.states["/state_2"])
- self.states[""].addChild(self.states["/state_3"])
- self.states[""].addChild(self.states["/state_4"])
- self.states[""].addChild(self.states["/end"])
- self.states[""].fixTree()
- self.states[""].default_state = self.states["/state_1"]
-
- # transition /state_1
- _state_1_0 = Transition(self, self.states["/state_1"], [self.states["/state_2"]])
- _state_1_0.setAction(self._state_1_0_exec)
- _state_1_0.setTrigger(None)
- self.states["/state_1"].addTransition(_state_1_0)
-
- # transition /state_2
- _state_2_0 = Transition(self, self.states["/state_2"], [self.states["/state_3"]])
- _state_2_0.setTrigger(Event("instance_created", None))
- self.states["/state_2"].addTransition(_state_2_0)
-
- # transition /state_3
- _state_3_0 = Transition(self, self.states["/state_3"], [self.states["/state_4"]])
- _state_3_0.setAction(self._state_3_0_exec)
- _state_3_0.setTrigger(None)
- self.states["/state_3"].addTransition(_state_3_0)
-
- # transition /state_4
- _state_4_0 = Transition(self, self.states["/state_4"], [self.states["/end"]])
- _state_4_0.setAction(self._state_4_0_exec)
- _state_4_0.setTrigger(Event("instance_created", None))
- self.states["/state_4"].addTransition(_state_4_0)
-
- def _state_1_0_exec(self, parameters):
- self.big_step.outputEventOM(Event("create_instance", None, [self, 'cannon', 'Cannon', self.tank]))
-
- def _state_3_0_exec(self, parameters):
- self.big_step.outputEventOM(Event("create_instance", None, [self, 'body', 'Body', self.tank]))
-
- def _state_4_0_exec(self, parameters):
- self.big_step.outputEventOM(Event("start_instance", None, [self, 'cannon']))
- self.big_step.outputEventOM(Event("start_instance", None, [self, 'body']))
-
- def initializeStatechart(self):
- # enter default state
- self.default_targets = self.states["/state_1"].getEffectiveTargetStates()
- RuntimeClassBase.initializeStatechart(self)
- class Cannon(RuntimeClassBase):
- def __init__(self, controller, tank):
- RuntimeClassBase.__init__(self, controller)
-
- self.semantics.big_step_maximality = StatechartSemantics.TakeMany
- self.semantics.internal_event_lifeline = StatechartSemantics.Queue
- self.semantics.input_event_lifeline = StatechartSemantics.FirstComboStep
- self.semantics.priority = StatechartSemantics.SourceParent
- self.semantics.concurrency = StatechartSemantics.Single
-
- # build Statechart structure
- self.build_statechart_structure()
-
- # user defined attributes
- self.tank = None
- self.reload_time = None
-
- # call user defined constructor
- Cannon.user_defined_constructor(self, tank)
-
- def user_defined_constructor(self, tank):
- self.tank = tank
- self.reload_time = tank.getReloadTime()
-
- def user_defined_destructor(self):
- pass
-
-
- # builds Statechart structure
- def build_statechart_structure(self):
-
- # state <root>
- self.states[""] = State(0, "", self)
-
- # state /container
- self.states["/container"] = ParallelState(1, "/container", self)
-
- # state /container/rotating
- self.states["/container/rotating"] = State(2, "/container/rotating", self)
-
- # state /container/rotating/none
- self.states["/container/rotating/none"] = State(3, "/container/rotating/none", self)
-
- # state /container/rotating/left
- self.states["/container/rotating/left"] = State(4, "/container/rotating/left", self)
-
- # state /container/rotating/both
- self.states["/container/rotating/both"] = State(5, "/container/rotating/both", self)
-
- # state /container/rotating/right
- self.states["/container/rotating/right"] = State(6, "/container/rotating/right", self)
-
- # state /container/shoot
- self.states["/container/shoot"] = State(7, "/container/shoot", self)
-
- # state /container/shoot/hold
- self.states["/container/shoot/hold"] = State(8, "/container/shoot/hold", self)
-
- # state /container/shoot/shoot
- self.states["/container/shoot/shoot"] = State(9, "/container/shoot/shoot", self)
-
- # state /container/ammo
- self.states["/container/ammo"] = State(10, "/container/ammo", self)
-
- # state /container/ammo/loaded
- self.states["/container/ammo/loaded"] = State(11, "/container/ammo/loaded", self)
-
- # state /container/ammo/unloaded
- self.states["/container/ammo/unloaded"] = State(12, "/container/ammo/unloaded", self)
- self.states["/container/ammo/unloaded"].setEnter(self._container_ammo_unloaded_enter)
- self.states["/container/ammo/unloaded"].setExit(self._container_ammo_unloaded_exit)
-
- # add children
- self.states[""].addChild(self.states["/container"])
- self.states["/container"].addChild(self.states["/container/rotating"])
- self.states["/container"].addChild(self.states["/container/shoot"])
- self.states["/container"].addChild(self.states["/container/ammo"])
- self.states["/container/rotating"].addChild(self.states["/container/rotating/none"])
- self.states["/container/rotating"].addChild(self.states["/container/rotating/left"])
- self.states["/container/rotating"].addChild(self.states["/container/rotating/both"])
- self.states["/container/rotating"].addChild(self.states["/container/rotating/right"])
- self.states["/container/shoot"].addChild(self.states["/container/shoot/hold"])
- self.states["/container/shoot"].addChild(self.states["/container/shoot/shoot"])
- self.states["/container/ammo"].addChild(self.states["/container/ammo/loaded"])
- self.states["/container/ammo"].addChild(self.states["/container/ammo/unloaded"])
- self.states[""].fixTree()
- self.states[""].default_state = self.states["/container"]
- self.states["/container/rotating"].default_state = self.states["/container/rotating/none"]
- self.states["/container/shoot"].default_state = self.states["/container/shoot/hold"]
- self.states["/container/ammo"].default_state = self.states["/container/ammo/loaded"]
-
- # transition /container/rotating/none
- _container_rotating_none_0 = Transition(self, self.states["/container/rotating/none"], [self.states["/container/rotating/left"]])
- _container_rotating_none_0.setTrigger(Event("cannon-left-pressed", "input"))
- self.states["/container/rotating/none"].addTransition(_container_rotating_none_0)
- _container_rotating_none_1 = Transition(self, self.states["/container/rotating/none"], [self.states["/container/rotating/right"]])
- _container_rotating_none_1.setTrigger(Event("cannon-right-pressed", "input"))
- self.states["/container/rotating/none"].addTransition(_container_rotating_none_1)
-
- # transition /container/rotating/left
- _container_rotating_left_0 = Transition(self, self.states["/container/rotating/left"], [self.states["/container/rotating/none"]])
- _container_rotating_left_0.setTrigger(Event("cannon-left-released", "input"))
- self.states["/container/rotating/left"].addTransition(_container_rotating_left_0)
- _container_rotating_left_1 = Transition(self, self.states["/container/rotating/left"], [self.states["/container/rotating/both"]])
- _container_rotating_left_1.setTrigger(Event("cannon-right-pressed", "input"))
- self.states["/container/rotating/left"].addTransition(_container_rotating_left_1)
- _container_rotating_left_2 = Transition(self, self.states["/container/rotating/left"], [self.states["/container/rotating/left"]])
- _container_rotating_left_2.setAction(self._container_rotating_left_2_exec)
- _container_rotating_left_2.setTrigger(Event("update", "engine"))
- self.states["/container/rotating/left"].addTransition(_container_rotating_left_2)
-
- # transition /container/rotating/both
- _container_rotating_both_0 = Transition(self, self.states["/container/rotating/both"], [self.states["/container/rotating/right"]])
- _container_rotating_both_0.setTrigger(Event("cannon-left-released", "input"))
- self.states["/container/rotating/both"].addTransition(_container_rotating_both_0)
- _container_rotating_both_1 = Transition(self, self.states["/container/rotating/both"], [self.states["/container/rotating/left"]])
- _container_rotating_both_1.setTrigger(Event("cannon-right-released", "input"))
- self.states["/container/rotating/both"].addTransition(_container_rotating_both_1)
-
- # transition /container/rotating/right
- _container_rotating_right_0 = Transition(self, self.states["/container/rotating/right"], [self.states["/container/rotating/both"]])
- _container_rotating_right_0.setTrigger(Event("cannon-left-pressed", "input"))
- self.states["/container/rotating/right"].addTransition(_container_rotating_right_0)
- _container_rotating_right_1 = Transition(self, self.states["/container/rotating/right"], [self.states["/container/rotating/none"]])
- _container_rotating_right_1.setTrigger(Event("cannon-right-released", "input"))
- self.states["/container/rotating/right"].addTransition(_container_rotating_right_1)
- _container_rotating_right_2 = Transition(self, self.states["/container/rotating/right"], [self.states["/container/rotating/right"]])
- _container_rotating_right_2.setAction(self._container_rotating_right_2_exec)
- _container_rotating_right_2.setTrigger(Event("update", "engine"))
- self.states["/container/rotating/right"].addTransition(_container_rotating_right_2)
-
- # transition /container/shoot/hold
- _container_shoot_hold_0 = Transition(self, self.states["/container/shoot/hold"], [self.states["/container/shoot/shoot"]])
- _container_shoot_hold_0.setAction(self._container_shoot_hold_0_exec)
- _container_shoot_hold_0.setTrigger(Event("shoot-pressed", "input"))
- self.states["/container/shoot/hold"].addTransition(_container_shoot_hold_0)
-
- # transition /container/shoot/shoot
- _container_shoot_shoot_0 = Transition(self, self.states["/container/shoot/shoot"], [self.states["/container/shoot/hold"]])
- _container_shoot_shoot_0.setTrigger(Event("shoot-released", "input"))
- self.states["/container/shoot/shoot"].addTransition(_container_shoot_shoot_0)
- _container_shoot_shoot_1 = Transition(self, self.states["/container/shoot/shoot"], [self.states["/container/shoot/shoot"]])
- _container_shoot_shoot_1.setAction(self._container_shoot_shoot_1_exec)
- _container_shoot_shoot_1.setTrigger(Event("loaded", None))
- self.states["/container/shoot/shoot"].addTransition(_container_shoot_shoot_1)
-
- # transition /container/ammo/loaded
- _container_ammo_loaded_0 = Transition(self, self.states["/container/ammo/loaded"], [self.states["/container/ammo/unloaded"]])
- _container_ammo_loaded_0.setAction(self._container_ammo_loaded_0_exec)
- _container_ammo_loaded_0.setTrigger(Event("shoot", None))
- self.states["/container/ammo/loaded"].addTransition(_container_ammo_loaded_0)
-
- # transition /container/ammo/unloaded
- _container_ammo_unloaded_0 = Transition(self, self.states["/container/ammo/unloaded"], [self.states["/container/ammo/loaded"]])
- _container_ammo_unloaded_0.setAction(self._container_ammo_unloaded_0_exec)
- _container_ammo_unloaded_0.setTrigger(Event("_0after"))
- self.states["/container/ammo/unloaded"].addTransition(_container_ammo_unloaded_0)
-
- def _container_ammo_unloaded_enter(self):
- self.addTimer(0, self.reload_time)
-
- def _container_ammo_unloaded_exit(self):
- self.removeTimer(0)
-
- def _container_rotating_left_2_exec(self, parameters):
- self.tank.turnCannonLeft()
-
- def _container_rotating_right_2_exec(self, parameters):
- self.tank.turnCannonRight()
-
- def _container_shoot_hold_0_exec(self, parameters):
- self.raiseInternalEvent(Event("shoot", None, []))
-
- def _container_shoot_shoot_1_exec(self, parameters):
- self.raiseInternalEvent(Event("shoot", None, []))
-
- def _container_ammo_loaded_0_exec(self, parameters):
- self.tank.shoot()
- self.big_step.outputEvent(Event("reloading", "gui", []))
-
- def _container_ammo_unloaded_0_exec(self, parameters):
- self.raiseInternalEvent(Event("loaded", None, []))
- self.big_step.outputEvent(Event("loaded", "gui", []))
-
- def initializeStatechart(self):
- # enter default state
- self.default_targets = self.states["/container"].getEffectiveTargetStates()
- RuntimeClassBase.initializeStatechart(self)
- class Body(RuntimeClassBase):
- def __init__(self, controller, tank):
- RuntimeClassBase.__init__(self, controller)
-
- self.semantics.big_step_maximality = StatechartSemantics.TakeMany
- self.semantics.internal_event_lifeline = StatechartSemantics.Queue
- self.semantics.input_event_lifeline = StatechartSemantics.FirstComboStep
- self.semantics.priority = StatechartSemantics.SourceParent
- self.semantics.concurrency = StatechartSemantics.Single
-
- # build Statechart structure
- self.build_statechart_structure()
-
- # user defined attributes
- self.tank = None
-
- # call user defined constructor
- Body.user_defined_constructor(self, tank)
-
- def user_defined_constructor(self, tank):
- self.tank = tank
-
- def user_defined_destructor(self):
- pass
-
-
- # builds Statechart structure
- def build_statechart_structure(self):
-
- # state <root>
- self.states[""] = State(0, "", self)
-
- # state /container
- self.states["/container"] = ParallelState(1, "/container", self)
-
- # state /container/horizontal
- self.states["/container/horizontal"] = State(2, "/container/horizontal", self)
-
- # state /container/horizontal/none
- self.states["/container/horizontal/none"] = State(3, "/container/horizontal/none", self)
-
- # state /container/horizontal/left
- self.states["/container/horizontal/left"] = State(4, "/container/horizontal/left", self)
-
- # state /container/horizontal/both
- self.states["/container/horizontal/both"] = State(5, "/container/horizontal/both", self)
-
- # state /container/horizontal/right
- self.states["/container/horizontal/right"] = State(6, "/container/horizontal/right", self)
-
- # state /container/vertical
- self.states["/container/vertical"] = State(7, "/container/vertical", self)
-
- # state /container/vertical/none
- self.states["/container/vertical/none"] = State(8, "/container/vertical/none", self)
-
- # state /container/vertical/down
- self.states["/container/vertical/down"] = State(9, "/container/vertical/down", self)
-
- # state /container/vertical/both
- self.states["/container/vertical/both"] = State(10, "/container/vertical/both", self)
-
- # state /container/vertical/up
- self.states["/container/vertical/up"] = State(11, "/container/vertical/up", self)
-
- # add children
- self.states[""].addChild(self.states["/container"])
- self.states["/container"].addChild(self.states["/container/horizontal"])
- self.states["/container"].addChild(self.states["/container/vertical"])
- self.states["/container/horizontal"].addChild(self.states["/container/horizontal/none"])
- self.states["/container/horizontal"].addChild(self.states["/container/horizontal/left"])
- self.states["/container/horizontal"].addChild(self.states["/container/horizontal/both"])
- self.states["/container/horizontal"].addChild(self.states["/container/horizontal/right"])
- self.states["/container/vertical"].addChild(self.states["/container/vertical/none"])
- self.states["/container/vertical"].addChild(self.states["/container/vertical/down"])
- self.states["/container/vertical"].addChild(self.states["/container/vertical/both"])
- self.states["/container/vertical"].addChild(self.states["/container/vertical/up"])
- self.states[""].fixTree()
- self.states[""].default_state = self.states["/container"]
- self.states["/container/horizontal"].default_state = self.states["/container/horizontal/none"]
- self.states["/container/vertical"].default_state = self.states["/container/vertical/none"]
-
- # transition /container/horizontal/none
- _container_horizontal_none_0 = Transition(self, self.states["/container/horizontal/none"], [self.states["/container/horizontal/left"]])
- _container_horizontal_none_0.setTrigger(Event("left-pressed", "input"))
- self.states["/container/horizontal/none"].addTransition(_container_horizontal_none_0)
- _container_horizontal_none_1 = Transition(self, self.states["/container/horizontal/none"], [self.states["/container/horizontal/right"]])
- _container_horizontal_none_1.setTrigger(Event("right-pressed", "input"))
- self.states["/container/horizontal/none"].addTransition(_container_horizontal_none_1)
-
- # transition /container/horizontal/left
- _container_horizontal_left_0 = Transition(self, self.states["/container/horizontal/left"], [self.states["/container/horizontal/none"]])
- _container_horizontal_left_0.setTrigger(Event("left-released", "input"))
- self.states["/container/horizontal/left"].addTransition(_container_horizontal_left_0)
- _container_horizontal_left_1 = Transition(self, self.states["/container/horizontal/left"], [self.states["/container/horizontal/both"]])
- _container_horizontal_left_1.setTrigger(Event("right-pressed", "input"))
- self.states["/container/horizontal/left"].addTransition(_container_horizontal_left_1)
- _container_horizontal_left_2 = Transition(self, self.states["/container/horizontal/left"], [self.states["/container/horizontal/left"]])
- _container_horizontal_left_2.setAction(self._container_horizontal_left_2_exec)
- _container_horizontal_left_2.setTrigger(Event("update", "engine"))
- self.states["/container/horizontal/left"].addTransition(_container_horizontal_left_2)
-
- # transition /container/horizontal/both
- _container_horizontal_both_0 = Transition(self, self.states["/container/horizontal/both"], [self.states["/container/horizontal/right"]])
- _container_horizontal_both_0.setTrigger(Event("left-released", "input"))
- self.states["/container/horizontal/both"].addTransition(_container_horizontal_both_0)
- _container_horizontal_both_1 = Transition(self, self.states["/container/horizontal/both"], [self.states["/container/horizontal/left"]])
- _container_horizontal_both_1.setTrigger(Event("right-released", "input"))
- self.states["/container/horizontal/both"].addTransition(_container_horizontal_both_1)
-
- # transition /container/horizontal/right
- _container_horizontal_right_0 = Transition(self, self.states["/container/horizontal/right"], [self.states["/container/horizontal/both"]])
- _container_horizontal_right_0.setTrigger(Event("left-pressed", "input"))
- self.states["/container/horizontal/right"].addTransition(_container_horizontal_right_0)
- _container_horizontal_right_1 = Transition(self, self.states["/container/horizontal/right"], [self.states["/container/horizontal/none"]])
- _container_horizontal_right_1.setTrigger(Event("right-released", "input"))
- self.states["/container/horizontal/right"].addTransition(_container_horizontal_right_1)
- _container_horizontal_right_2 = Transition(self, self.states["/container/horizontal/right"], [self.states["/container/horizontal/right"]])
- _container_horizontal_right_2.setAction(self._container_horizontal_right_2_exec)
- _container_horizontal_right_2.setTrigger(Event("update", "engine"))
- self.states["/container/horizontal/right"].addTransition(_container_horizontal_right_2)
-
- # transition /container/vertical/none
- _container_vertical_none_0 = Transition(self, self.states["/container/vertical/none"], [self.states["/container/vertical/down"]])
- _container_vertical_none_0.setTrigger(Event("down-pressed", "input"))
- self.states["/container/vertical/none"].addTransition(_container_vertical_none_0)
- _container_vertical_none_1 = Transition(self, self.states["/container/vertical/none"], [self.states["/container/vertical/up"]])
- _container_vertical_none_1.setTrigger(Event("up-pressed", "input"))
- self.states["/container/vertical/none"].addTransition(_container_vertical_none_1)
-
- # transition /container/vertical/down
- _container_vertical_down_0 = Transition(self, self.states["/container/vertical/down"], [self.states["/container/vertical/none"]])
- _container_vertical_down_0.setTrigger(Event("down-released", "input"))
- self.states["/container/vertical/down"].addTransition(_container_vertical_down_0)
- _container_vertical_down_1 = Transition(self, self.states["/container/vertical/down"], [self.states["/container/vertical/both"]])
- _container_vertical_down_1.setTrigger(Event("up-pressed", "input"))
- self.states["/container/vertical/down"].addTransition(_container_vertical_down_1)
- _container_vertical_down_2 = Transition(self, self.states["/container/vertical/down"], [self.states["/container/vertical/down"]])
- _container_vertical_down_2.setAction(self._container_vertical_down_2_exec)
- _container_vertical_down_2.setTrigger(Event("update", "engine"))
- self.states["/container/vertical/down"].addTransition(_container_vertical_down_2)
-
- # transition /container/vertical/both
- _container_vertical_both_0 = Transition(self, self.states["/container/vertical/both"], [self.states["/container/vertical/up"]])
- _container_vertical_both_0.setTrigger(Event("down-released", "input"))
- self.states["/container/vertical/both"].addTransition(_container_vertical_both_0)
- _container_vertical_both_1 = Transition(self, self.states["/container/vertical/both"], [self.states["/container/vertical/down"]])
- _container_vertical_both_1.setTrigger(Event("up-released", "input"))
- self.states["/container/vertical/both"].addTransition(_container_vertical_both_1)
-
- # transition /container/vertical/up
- _container_vertical_up_0 = Transition(self, self.states["/container/vertical/up"], [self.states["/container/vertical/both"]])
- _container_vertical_up_0.setTrigger(Event("down-pressed", "input"))
- self.states["/container/vertical/up"].addTransition(_container_vertical_up_0)
- _container_vertical_up_1 = Transition(self, self.states["/container/vertical/up"], [self.states["/container/vertical/none"]])
- _container_vertical_up_1.setTrigger(Event("up-released", "input"))
- self.states["/container/vertical/up"].addTransition(_container_vertical_up_1)
- _container_vertical_up_2 = Transition(self, self.states["/container/vertical/up"], [self.states["/container/vertical/up"]])
- _container_vertical_up_2.setAction(self._container_vertical_up_2_exec)
- _container_vertical_up_2.setTrigger(Event("update", "engine"))
- self.states["/container/vertical/up"].addTransition(_container_vertical_up_2)
-
- def _container_horizontal_left_2_exec(self, parameters):
- self.tank.turnLeft()
-
- def _container_horizontal_right_2_exec(self, parameters):
- self.tank.turnRight()
-
- def _container_vertical_down_2_exec(self, parameters):
- self.tank.moveDown()
-
- def _container_vertical_up_2_exec(self, parameters):
- self.tank.moveUp()
-
- def initializeStatechart(self):
- # enter default state
- self.default_targets = self.states["/container"].getEffectiveTargetStates()
- RuntimeClassBase.initializeStatechart(self)
- class ObjectManager(ObjectManagerBase):
- def __init__(self, controller):
- ObjectManagerBase.__init__(self, controller)
-
- def instantiate(self, class_name, construct_params):
- if class_name == "Main":
- instance = Main(self.controller, construct_params[0])
- instance.associations = {}
- instance.associations["cannon"] = Association("Cannon", 1, 1)
- instance.associations["body"] = Association("Body", 1, 1)
- elif class_name == "Cannon":
- instance = Cannon(self.controller, construct_params[0])
- instance.associations = {}
- elif class_name == "Body":
- instance = Body(self.controller, construct_params[0])
- instance.associations = {}
- else:
- raise Exception("Cannot instantiate class " + class_name)
- return instance
- class Controller(EventLoopControllerBase):
- def __init__(self, tank, event_loop_callbacks, finished_callback = None, behind_schedule_callback = None):
- if finished_callback == None: finished_callback = None
- if behind_schedule_callback == None: behind_schedule_callback = None
- EventLoopControllerBase.__init__(self, ObjectManager(self), event_loop_callbacks, finished_callback, behind_schedule_callback)
- self.addInputPort("engine")
- self.addInputPort("input")
- self.addOutputPort("gui")
- self.object_manager.createInstance("Main", [tank])
|