Browse Source

fixed the door state open event problem

Asad M. Zaman 22 years ago
parent
commit
1ad304e914
1 changed files with 17 additions and 5 deletions
  1. 17 5
      direct/src/fsm/FourState.py

+ 17 - 5
direct/src/fsm/FourState.py

@@ -127,16 +127,28 @@ class FourState:
                           )
                           )
         self.fsm.enterInitialState()
         self.fsm.enterInitialState()
     
     
+    def setIsOn(self, isOn):
+        assert(self.debugPrint("setIsOn(isOn=%s)"%(isOn,)))
+        if self.isOn != isOn:
+            self.isOn = isOn
+            self.changedOnState()
+    
     def getIsOn(self):
     def getIsOn(self):
         assert(self.debugPrint("getIsOn() returning %s"%(self.isOn,)))
         assert(self.debugPrint("getIsOn() returning %s"%(self.isOn,)))
         return self.isOn
         return self.isOn
+
+    def changedOnState(self):
+        """
+        Allow derived classes to overide the this.
+        """
+        pass
     
     
     ##### state 0 #####
     ##### state 0 #####
     
     
     def enterState0(self):
     def enterState0(self):
         assert(self.debugPrint("enter0()"))
         assert(self.debugPrint("enter0()"))
         self.stateIndex = 0
         self.stateIndex = 0
-        self.isOn = 0
+        self.setIsOn(0)
     
     
     def exitState0(self):
     def exitState0(self):
         assert(self.debugPrint("exit0()"))
         assert(self.debugPrint("exit0()"))
@@ -145,7 +157,7 @@ class FourState:
     
     
     def enterState1(self):
     def enterState1(self):
         self.stateIndex = 1
         self.stateIndex = 1
-        self.isOn = 0
+        self.setIsOn(0)
     
     
     def exitState1(self):
     def exitState1(self):
         assert(self.debugPrint("exitState1()"))
         assert(self.debugPrint("exitState1()"))
@@ -154,7 +166,7 @@ class FourState:
     
     
     def enterState2(self):
     def enterState2(self):
         self.stateIndex = 2
         self.stateIndex = 2
-        self.isOn = 0
+        self.setIsOn(0)
     
     
     def exitState2(self):
     def exitState2(self):
         assert(self.debugPrint("exitState2()"))
         assert(self.debugPrint("exitState2()"))
@@ -163,7 +175,7 @@ class FourState:
     
     
     def enterState3(self):
     def enterState3(self):
         self.stateIndex = 2
         self.stateIndex = 2
-        self.isOn = 0
+        self.setIsOn(0)
     
     
     def exitState3(self):
     def exitState3(self):
         assert(self.debugPrint("exitState3()"))
         assert(self.debugPrint("exitState3()"))
@@ -172,7 +184,7 @@ class FourState:
     
     
     def enterState4(self):
     def enterState4(self):
         self.stateIndex = 4
         self.stateIndex = 4
-        self.isOn = 1
+        self.setIsOn(1)
     
     
     def exitState4(self):
     def exitState4(self):
         assert(self.debugPrint("exitState4()"))
         assert(self.debugPrint("exitState4()"))