Exemplo n.º 1
0
class Main(threading.Thread):

    mStateMachine = None
    mSystemIO = None
    mDoState = 1
    mCapture = None
    mCameraPort = 0
    mUIQueue = []

    #Global Variables For Access Between States
    mBigTime = 0

    def __init__(self,
                 group=None,
                 target=None,
                 name=None,
                 args=(),
                 kwargs=None,
                 daemon=None,
                 pMainWindow=None,
                 pSystemIO=None):
        threading.Thread.__init__(self)
        self.mStateMachine = StateMachine(pMainWindow, self, pSystemIO)
        self.mDoState = 1
        self.mSystemIO = pSystemIO

    #Run state machine in main loop
    def run(self):
        while (1):
            if (len(self.mUIQueue) != 0
                    and self.mUIQueue.pop().text() == "Start"):
                self.mSystemIO.OpenPorts()
                while (self.mDoState):
                    if (self.mStateMachine.Update() == 0):
                        self.mDoState = 0
Exemplo n.º 2
0
class MinersWife(BaseGameEntity):
    m_Location = None
    # an instance of the state machine class
    m_pStateMachine = None

    def __init__(self, EntityNames):
        # super(EntityNames)
        self.m_Location = location_type.shack
        self.m_pStateMachine = StateMachine(self)
        self.m_pStateMachine.SetCurrentState(DoHouseWork.getInstance())
        self.m_pStateMachine.SetGlobalState(WifesGlobalState.getInstance())

    def GetFSM(self):
        return self.m_pStateMachine

    def RevertToPreviousState(self):
        None

    def Update(self):
        self.m_pStateMachine.Update()

    def Location(self):
        return self.m_Location

    def ChangeLocation(self, location_type):
        self.m_Location = location_type
Exemplo n.º 3
0
class Miner(BaseGameEntity):
    ComFortLevel = 5
    MaxNuggets = 3
    ThirstLevel = 5
    TirednessThreshold = 5

    m_Location = None

    m_iGoldCarried = None
    m_iMoneyInBank = None
    m_iThirst = None
    m_iFatigue = None

    ThirstLevel = 5
    TirednessThreshold = 5
    MaxNuggets = 3
    ComfortLevel = 5

    # an instance of the state machine class
    m_pStateMachine = None

    def __init__(self, EntityNames):
        # super(EntityNames)
        self.m_Location = location_type.shack
        self.m_iGoldCarried = 0
        self.m_iMoneyInBank = 0
        self.m_iThirst = 0
        self.m_iFatigue = 0
        self.m_pStateMachine = StateMachine(self)
        self.m_pStateMachine.SetCurrentState(
            GoHomeAndSleepTilRested.getInstance())

    def GetFSM(self):
        # global m_pStateMachine
        return self.m_pStateMachine

    def RevertToPreviousState(self):
        None

    def HandleMessage(self, Telegram):
        return self.m_pStateMachine.HandleMessage(Telegram)

    def Update(self):
        # global m_iThirst, m_pStateMachine
        self.m_iThirst += 1
        self.m_pStateMachine.Update()

    def HandleMessage(self, Telegram):
        return self.m_pStateMachine.HandleMessage(Telegram)

    def AddToGoldCarried(self, val):
        self.m_iGoldCarried += val

        if self.m_iGoldCarried < 0:
            self.m_iGoldCarried = 0

    def AddToWealth(self, val):
        self.m_iMoneyInBank += val

        if self.m_iMoneyInBank < 0:
            self.m_iMoneyInBank = 0

    def Thirsty(self):
        self.ThirstLevel = 5

        if self.m_iThirst >= self.ThirstLevel:
            return True
        else:
            return False

    def Fatigued(self):
        if self.m_iFatigue > 5:
            return True
        else:
            return False

    def Location(self):
        return self.m_Location

    def ChangeLocation(self, location_type):
        self.m_Location = location_type

    def IncreaseFatigue(self):
        self.m_iFatigue += 1

    def DecreaseFatigue(self):
        self.m_iFatigue -= 1

    def PocketsFull(self):
        self.MaxNuggets = 3
        if self.m_iGoldCarried >= self.MaxNuggets:
            return True
        else:
            return False

    def GoldCarried(self):
        return self.m_iGoldCarried

    def SetGoldCarried(self, val):
        self.m_iGoldCarried = val

    def Wealth(self):
        return self.m_iMoneyInBank

    def BuyAndDrinkAWhiskey(self):
        self.m_iThirst = 0
        self.m_iMoneyInBank -= 2