Pārlūkot izejas kodu

*** empty log message ***

David Rose 25 gadi atpakaļ
vecāks
revīzija
67538b7efb
1 mainītis faili ar 10 papildinājumiem un 4 dzēšanām
  1. 10 4
      direct/src/fsm/FSM.py

+ 10 - 4
direct/src/fsm/FSM.py

@@ -118,7 +118,7 @@ class FSM(DirectObject):
         for state in self.__states:
             if (state.getName() == stateName):
                 return state
-        FSM.notify.warning("[%s] : getStateNamed: %s no such state" %
+        FSM.notify.warning("[%s] : getStateNamed: %s, no such state" %
                            (self.__name, str(stateName)))
 
 
@@ -153,7 +153,7 @@ class FSM(DirectObject):
                                aState.getName() + '_entered')
             aState.enter(argList)
         else:
-            FSM.notify.error("[%s]: enter: no such state" % self.__name)
+            FSM.notify.error("[%s]: enter: no such state" % (self.__name))
 
     def __transition(self, aState, enterArgList=[], exitArgList=[]):
         """__transition(self, State, enterArgList, exitArgList)
@@ -167,8 +167,14 @@ class FSM(DirectObject):
         Return true is transition exists to given state,
         false otherwise. 
         """
+
+        aState = self.getStateNamed(aStateName)
+        if aState == None:
+            FSM.notify.error("[%s]: request: %s, no such state" %
+                             (self.__name, aStateName))
+
         if (aStateName in self.__currentState.getTransitions()):
-            self.__transition(self.getStateNamed(aStateName),
+            self.__transition(aState,
                               enterArgList,
                               exitArgList)
             return 1
@@ -176,7 +182,7 @@ class FSM(DirectObject):
         elif (aStateName == self.__finalState.getName()):
             FSM.notify.debug("[%s]: implicit transition to final state: %s" %
                              (self.__name, aStateName))
-            self.__transition(self.getStateNamed(aStateName),
+            self.__transition(aState,
                               enterArgList,
                               exitArgList)
             return 1