You've already forked HeurAMS-legacy
实现 Reactor
This commit is contained in:
37
src/heurams/kernel/reactor/procession.py
Normal file
37
src/heurams/kernel/reactor/procession.py
Normal file
@@ -0,0 +1,37 @@
|
||||
import heurams.kernel.particles as pt
|
||||
from .states import PhaserState, ProcessionState
|
||||
|
||||
class Procession():
|
||||
"""队列: 标识单次记忆流程"""
|
||||
def __init__(self, atoms: list, phase: PhaserState, name: str = ""):
|
||||
self.atoms = atoms
|
||||
self.queue = atoms.copy()
|
||||
self.current_atom = atoms[0]
|
||||
self.cursor = 0
|
||||
self.name = name
|
||||
self.phase = phase
|
||||
self.state: ProcessionState = ProcessionState.RUNNING
|
||||
|
||||
def forward(self, step = 1):
|
||||
self.cursor += step
|
||||
if self.cursor == len(self.queue):
|
||||
self.state: ProcessionState = ProcessionState.FINISHED
|
||||
else:
|
||||
self.state: ProcessionState = ProcessionState.RUNNING
|
||||
try:
|
||||
self.current_atom = self.queue[self.cursor]
|
||||
return 1 # 成功
|
||||
except IndexError:
|
||||
return 0
|
||||
|
||||
def append(self, atom = None):
|
||||
if atom == None:
|
||||
self.queue.append(self.current_atom)
|
||||
else:
|
||||
self.queue.append(atom)
|
||||
|
||||
def __len__(self):
|
||||
return (len(self.queue) - self.cursor)
|
||||
|
||||
def is_empty(self):
|
||||
return len(self.queue)
|
||||
Reference in New Issue
Block a user