root/src/stateAnalysis.py @ 494

Revision 494, 1.6 KB (checked in by ecoughlan, 2 years ago)

Updated tutorial arrows

Line 
1'''
2Created on Mar 24, 2012
3
4@author: Michael
5'''
6
7import os
8
9from event import Event
10from heuristic import Heuristic, loadHeuristic
11from globals import *
12
13
14class StateAnalysis:
15    def __init__(self):
16        self.events = []
17        self.heuristics = []
18        self.loadAllHeuristics()
19
20    def loadAllHeuristics(self):
21        heurFiles = os.listdir(heurDir)
22        for heur in heurFiles:
23            fileExt = os.path.splitext(heur)[1]
24            if fileExt == heurExt:
25                heuristic = loadHeuristic(heur)
26                if heuristic is not False:
27                    self.heuristics.append(heuristic)
28
29    def addEvent(self, event):
30        self.events.append(event)
31
32    def addPriorityEvent(self, event):
33        self.events.insert(0, event)
34
35    def analyze(self, state):
36        heurIndex = -1
37        for i, heuristic in enumerate(self.heuristics):
38            if heuristic.trigger(state):
39                print "Heuristic %s triggered" % heuristic.name
40                if heuristic.priority:
41                    heurIndex = i
42                    self.addPriorityEvent(heuristic.event)
43                    break
44                else:
45                    if heurIndex < 0:
46                        heurIndex = i
47                    self.addEvent(heuristic.event)
48        if heurIndex >= 0 and not self.heuristics[heurIndex].repeat:
49            self.heuristics.pop(heurIndex)
50
51    def popAndFlushEvent(self):
52        if len(self.events) != 0:
53            priority = self.events[0]
54            self.events = []
55            return priority
56        else:
57            return None
Note: See TracBrowser for help on using the browser.