diff --git a/pkg/engine/engine.go b/pkg/engine/engine.go index 90d02656..213f5915 100644 --- a/pkg/engine/engine.go +++ b/pkg/engine/engine.go @@ -176,6 +176,12 @@ type Insert interface { } type Turn interface { + // Returns a list of TargetIDs sorted by their AV + TurnOrder() []key.TargetID + + // Returns the ID of the target that is active/is taking the turn + GetActiveTarget() key.TargetID + // Sets the gauge for the given target. The amount is specified in gauge units (base = 10,000) SetGauge(data info.ModifyAttribute) error diff --git a/pkg/engine/turn/turn.go b/pkg/engine/turn/turn.go index eb5704e3..1d942163 100644 --- a/pkg/engine/turn/turn.go +++ b/pkg/engine/turn/turn.go @@ -97,6 +97,11 @@ func (mgr *manager) TurnOrder() []key.TargetID { return targetOrder } +// GetActiveTarget returns the ID of the target that is active/is taking the turn from the Manager. +func (mgr *manager) GetActiveTarget() key.TargetID { + return mgr.activeTarget +} + // EventTurnStatus returns an array of event.TurnStatus structs populated with the current ID, Gauge, and AV of each target in the Manager's turnOrder. func (mgr *manager) EventTurnStatus() []event.TurnStatus { turnStatus := make([]event.TurnStatus, mgr.orderHandler.Len()) diff --git a/pkg/simulation/attribute.go b/pkg/simulation/attribute.go index f9206843..14a890d7 100644 --- a/pkg/simulation/attribute.go +++ b/pkg/simulation/attribute.go @@ -92,6 +92,14 @@ func (sim *Simulation) ModifyEnergyFixed(data info.ModifyAttribute) error { return sim.Attr.ModifyEnergyFixed(data) } +func (sim *Simulation) TurnOrder() []key.TargetID { + return sim.Turn.TurnOrder() +} + +func (sim *Simulation) GetActiveTarget() key.TargetID { + return sim.Turn.GetActiveTarget() +} + func (sim *Simulation) SetGauge(data info.ModifyAttribute) error { sim.ActionTargets[data.Target] = true return sim.Turn.SetGauge(data) diff --git a/tests/mock/mock_engine.go b/tests/mock/mock_engine.go index 79f71fd5..37cd9114 100644 --- a/tests/mock/mock_engine.go +++ b/tests/mock/mock_engine.go @@ -283,6 +283,20 @@ func (mr *MockEngineMockRecorder) ExtendModifierDuration(arg0, arg1, arg2 interf return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ExtendModifierDuration", reflect.TypeOf((*MockEngine)(nil).ExtendModifierDuration), arg0, arg1, arg2) } +// GetActiveTarget mocks base method. +func (m *MockEngine) GetActiveTarget() key.TargetID { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetActiveTarget") + ret0, _ := ret[0].(key.TargetID) + return ret0 +} + +// GetActiveTarget indicates an expected call of GetActiveTarget. +func (mr *MockEngineMockRecorder) GetActiveTarget() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetActiveTarget", reflect.TypeOf((*MockEngine)(nil).GetActiveTarget)) +} + // GetModifersByBehaviorFlag mocks base method. func (m *MockEngine) GetModifersByBehaviorFlag(arg0 key.TargetID, arg1 model.BehaviorFlag) []info.Modifier { m.ctrl.T.Helper() @@ -829,3 +843,17 @@ func (mr *MockEngineMockRecorder) Stats(arg0 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Stats", reflect.TypeOf((*MockEngine)(nil).Stats), arg0) } + +// TurnOrder mocks base method. +func (m *MockEngine) TurnOrder() []key.TargetID { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "TurnOrder") + ret0, _ := ret[0].([]key.TargetID) + return ret0 +} + +// TurnOrder indicates an expected call of TurnOrder. +func (mr *MockEngineMockRecorder) TurnOrder() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "TurnOrder", reflect.TypeOf((*MockEngine)(nil).TurnOrder)) +} diff --git a/tests/teststub/mock.go b/tests/teststub/mock.go index 220f3c88..f1f106b3 100644 --- a/tests/teststub/mock.go +++ b/tests/teststub/mock.go @@ -11,6 +11,7 @@ import ( type mockTurnManager struct { t *testing.T turnSequence []key.TargetID + activeTarget key.TargetID } type TurnCommand struct { @@ -22,6 +23,7 @@ func newMockManager(t *testing.T) *mockTurnManager { return &mockTurnManager{ t: t, turnSequence: nil, + activeTarget: 0, } } @@ -51,6 +53,7 @@ func (m *mockTurnManager) StartTurn() (key.TargetID, float64, []event.TurnStatus return 1, 100000, nil, nil } tgt := m.turnSequence[0] + m.activeTarget = tgt m.turnSequence = m.turnSequence[1:] return tgt, 0, nil, nil } @@ -63,6 +66,10 @@ func (m *mockTurnManager) ResetTurn() error { return nil } +func (m *mockTurnManager) GetActiveTarget() key.TargetID { + return m.activeTarget +} + func (m *mockTurnManager) SetGauge(data info.ModifyAttribute) error { return nil }