-
Notifications
You must be signed in to change notification settings - Fork 0
/
actionchain.nim
35 lines (30 loc) · 1.06 KB
/
actionchain.nim
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
from model.move import Move
from analyze import WorldState
from pbehavior import PlayerBehavior, Action
from enhanced import Group, VehicleId, FacilityId
from groupcounter import GroupCounter
from utils import Area, Point
type
ActionChain* = seq[Action]
proc initActionChain*(actions: ActionChain): PlayerBehavior
from model.action_type import ActionType
from pbehavior import PBResult, PBRType
from utils import debug
proc initActionChain(actions: ActionChain): PlayerBehavior =
var counter = 0
result.tick =
proc (ws: WorldState, gc: var GroupCounter, m: var Move): PBResult =
while counter < actions.len():
let status = actions[counter](ws, gc, m)
debug($actions.len() & ": Action " & $counter & " returned " & $status)
case status.kind
of PBRType.priority:
counter += 1
if m.action != ActionType.NONE:
return PBResult(kind: PBRType.priority)
of PBRType.empty:
return status
else:
counter += 1
return status
return PBResult(kind: PBRType.removeMe)