protected override void OnSetEntityPositionEvent(Object p_sender, EventArgs p_args) { BaseObjectEventArgs baseObjectEventArgs = p_args as BaseObjectEventArgs; if (p_args != null && baseObjectEventArgs.Object == MyController) { if (baseObjectEventArgs.Animation == "APPEARING") { PlaceMonster(); m_animatorControl.EventSummon(1); m_State.ChangeState(EState.APPEAR); } else if (baseObjectEventArgs.Animation == "VANISHING") { if (m_State.CurrentState.Id == EState.APPEAR) { m_doLateVanish = true; } else { m_animatorControl.EventSummon(3); m_State.ChangeState(EState.VANISH); } } } }
protected override void DoExecute() { SetStates(); BaseObjectEventArgs p_eventArgs = new BaseObjectEventArgs(m_targetLever, m_targetLever.Position); LegacyLogic.Instance.EventManager.InvokeEvent(this, EEventType.LEVER_STATE_CHANGED, p_eventArgs); }
protected override void DoExecute() { SetStates(); BaseObjectEventArgs p_eventArgs = new BaseObjectEventArgs(m_targetButton, m_targetButton.Position); LegacyLogic.Instance.EventManager.InvokeEvent(this, EEventType.OBJECT_STATE_CHANGED, p_eventArgs); FinishExecution(); }
private void OnChangedPlayerTeleport(Object p_sender, EventArgs p_args) { BaseObjectEventArgs baseObjectEventArgs = (BaseObjectEventArgs)p_args; if (baseObjectEventArgs != null && p_sender is Party) { OnPositionChange(baseObjectEventArgs.Position, false); } }
private void OnInteractiveObjectStateChanged(Object p_sender, EventArgs p_args) { BaseObjectEventArgs baseObjectEventArgs = p_args as BaseObjectEventArgs; if (baseObjectEventArgs != null && baseObjectEventArgs.Object == MyController) { ObjectState(MyController.State == EInteractiveObjectState.CONTAINER_OPENED, false); } }
private void OnContainerLooted(Object p_sender, EventArgs p_args) { BaseObjectEventArgs baseObjectEventArgs = p_args as BaseObjectEventArgs; if (baseObjectEventArgs != null && baseObjectEventArgs.Object == MyController && MyController.IsEmpty() && m_lootObject != null) { m_lootObject.SetActive(false); } }
private void OnSetEntityPositionEvent(Object p_sender, EventArgs p_args) { BaseObjectEventArgs baseObjectEventArgs = p_args as BaseObjectEventArgs; if (baseObjectEventArgs != null && baseObjectEventArgs.Object == MyController) { SetEntityPosition(); } }
public void Open() { if (State == EInteractiveObjectState.BARREL_CLOSED) { State = EInteractiveObjectState.BARREL_OPEN; BaseObjectEventArgs p_eventArgs = new BaseObjectEventArgs(this, Position); LegacyLogic.Instance.EventManager.InvokeEvent(this, EEventType.BARREL_STATE_CHANGE, p_eventArgs); } }
private void OnRotateOrSetPosEvent(Object p_sender, EventArgs p_args) { BaseObjectEventArgs baseObjectEventArgs = p_args as BaseObjectEventArgs; if (baseObjectEventArgs != null && baseObjectEventArgs.Object == LegacyLogic.Instance.WorldManager.Party && enabled) { TurnToDefaultView(); } }
private void OnChangedPlayerPosition(Object p_sender, EventArgs p_args) { BaseObjectEventArgs baseObjectEventArgs = (BaseObjectEventArgs)p_args; if (baseObjectEventArgs != null && baseObjectEventArgs.Object is Party) { OnPositionChange(baseObjectEventArgs.Position); } }
private void OnEntityDestroyed(Object p_sender, EventArgs p_args) { BaseObjectEventArgs baseObjectEventArgs = (BaseObjectEventArgs)p_args; if (baseObjectEventArgs.Object == MyController) { Destroy(gameObject); } }
public override void DoEffect(Monster p_monster, Character p_target, SpellEventArgs p_spellArgs) { Grid grid = LegacyLogic.Instance.MapLoader.Grid; Position position = LegacyLogic.Instance.WorldManager.Party.Position; Int32 num = 0; EDirection direction = EDirectionFunctions.GetDirection(position, p_monster.Position); Position position2 = p_monster.Position + direction; GridSlot slot = grid.GetSlot(position2); while (slot != null && slot.IsPassable(p_monster, false) && num < 4) { num++; position2 += direction; slot = grid.GetSlot(position2); } Int32 num2 = 0; EDirection direction2 = EDirectionFunctions.GetDirection(p_monster.Position, position); position2 = position + direction2; slot = grid.GetSlot(position2); while (slot != null && slot.IsPassable(p_monster, false) && num2 < 3) { num2++; position2 += direction2; slot = grid.GetSlot(position2); } if (num2 > 0) { num2++; } Position position3 = p_monster.Position; if (num2 > num) { for (Int32 i = 0; i < num2; i++) { position3 += direction2; } } else { for (Int32 i = 0; i < num; i++) { position3 += direction; } } Position position4 = p_monster.Position; grid.GetSlot(p_monster.Position).RemoveEntity(p_monster); grid.GetSlot(position3).AddEntity(p_monster); p_monster.Position = position3; p_monster.Direction = EDirectionFunctions.GetDirection(p_monster.Position, position); BaseObjectEventArgs p_eventArgs = new BaseObjectEventArgs(p_monster, p_monster.Position); LegacyLogic.Instance.EventManager.InvokeEvent(p_monster, EEventType.SET_ENTITY_POSITION, p_eventArgs); }
private void OnInteractiveObjectStateChanged(Object p_sender, EventArgs p_args) { BaseObjectEventArgs baseObjectEventArgs = p_args as BaseObjectEventArgs; if (baseObjectEventArgs != null && baseObjectEventArgs.Object == MyController) { m_interaction = (BaseInteraction)p_sender; ObjectState(MyController.State == EInteractiveObjectState.LEVER_DOWN, false); } }
private void OnAggroTriggered(Object p_sender, EventArgs p_args) { BaseObjectEventArgs baseObjectEventArgs = (BaseObjectEventArgs)p_args; Monster monster = (Monster)baseObjectEventArgs.Object; if (monster.StaticData.StaticID == m_MonsterID) { m_StopByTrigger = false; } }
private void Init(Object p_sender, EventArgs p_args) { BaseObjectEventArgs baseObjectEventArgs = (BaseObjectEventArgs)p_args; if (baseObjectEventArgs.Object is Party) { mLastPlayerPos = baseObjectEventArgs.Position; OnPositionChange(); } }
private void OnInteractiveObjectStateChanged(Object p_sender, EventArgs p_args) { BaseObjectEventArgs baseObjectEventArgs = p_args as BaseObjectEventArgs; if (baseObjectEventArgs != null && baseObjectEventArgs.Object == MyController) { m_interaction = (BaseInteraction)p_sender; m_state = !m_state; ObjectState(m_state); } }
private void OnRotateEntityEvent(Object p_sender, EventArgs p_args) { BaseObjectEventArgs baseObjectEventArgs = p_args as BaseObjectEventArgs; if (baseObjectEventArgs != null && baseObjectEventArgs.Object == MyController) { MovingEntity movingEntity = (MovingEntity)MyController; RotateTo(movingEntity.Direction); PlayMoveSound(true); } }
public void StopCutscene() { if (m_currentState == ECutsceneState.Stopped) { throw new InvalidOperationException(); } m_currentState = ECutsceneState.Stopped; m_startCutsceneInteraction.FinishExecution(); m_startCutsceneInteraction = null; BaseObjectEventArgs p_eventArgs = new BaseObjectEventArgs(this, Position); LegacyLogic.Instance.EventManager.InvokeEvent(this, EEventType.CUTSCENE_STOPPED, p_eventArgs); }
public void DoVanish() { Grid grid = LegacyLogic.Instance.MapLoader.Grid; Position position = m_owner.Position; grid.GetSlot(m_owner.Position).RemoveEntity(m_owner); grid.GetSlot(Position.Zero).AddEntity(m_owner); m_owner.Position = Position.Zero; m_owner.m_stateMachine.ChangeState(Monster.EState.MOVING); BaseObjectEventArgs p_eventArgs = new BaseObjectEventArgs(m_owner, m_owner.Position, "VANISHING"); LegacyLogic.Instance.EventManager.InvokeEvent(m_owner, EEventType.SET_ENTITY_POSITION, p_eventArgs); }
private void OnChangedPlayerPosition(Object p_sender, EventArgs p_args) { BaseObjectEventArgs baseObjectEventArgs = p_args as BaseObjectEventArgs; if (baseObjectEventArgs != null && baseObjectEventArgs.Object is Party) { mLastPlayerPos = baseObjectEventArgs.Position; if (IsInvoking("OnPositionChange")) { CancelInvoke("OnPositionChange"); } OnPositionChange(); } }
private void UpdateIdleState(Grid grid, Party party) { if (m_monsters.Count <= 0) { m_stateMachine.ChangeState(EState.FINISHED); return; } Boolean firstAgroProcessed = false; Boolean hasAgroBeforeTurn = false; foreach (Monster monster in m_monsters) { if (monster.IsAggro) { hasAgroBeforeTurn = true; } } InitMonsterTurns(); m_oneAggro = false; foreach (Monster monster in m_monsters) { if (monster.IsAggro) { m_oneAggro = true; if (!firstAgroProcessed) { firstAgroProcessed = true; LegacyLogic.Instance.EventManager.InvokeEvent(this, EEventType.MONSTER_ROUND_STARTED, EventArgs.Empty); if (!hasAgroBeforeTurn) { BaseObjectEventArgs p_eventArgs = new BaseObjectEventArgs(monster, monster.Position); LegacyLogic.Instance.EventManager.InvokeEvent(this, EEventType.MONSTERS_TURNED_AGGRO, p_eventArgs); } } monster.AiHandler.DoTurn(grid, party); } else { monster.SkipMovement.Trigger(); } } AvoidPermanentAgro(); m_stateMachine.ChangeState(EState.RUNNING); }
private void OnPartyPositionSet(Object p_sender, EventArgs p_args) { LegacyLogic.Instance.EventManager.UnregisterEvent(EEventType.FINISH_SCENE_LOAD, new EventHandler(OnPartyPositionSet)); Position position = m_SpiritBeacon.Position; Grid grid = LegacyLogic.Instance.MapLoader.Grid; Party party = LegacyLogic.Instance.WorldManager.Party; Position position2 = party.Position; if (grid.AddMovingEntity(position, party)) { Boolean flag = grid.GetSlot(position2).RemoveEntity(party); party.Position = position; BaseObjectEventArgs p_eventArgs = new BaseObjectEventArgs(party, position); LegacyLogic.Instance.EventManager.InvokeEvent(party, EEventType.SET_ENTITY_POSITION, p_eventArgs); } }
protected void OnDiscoverHighlight(Object sender, EventArgs e) { if (sender == MyController) { Highlight(); } else if (m_IsTwoSided) { InteractiveObject interactiveObject = (InteractiveObject)MyController; BaseObjectEventArgs baseObjectEventArgs = (BaseObjectEventArgs)e; if (baseObjectEventArgs.Position == interactiveObject.Position + interactiveObject.Location) { Highlight(); } } }
private void OnTeleport(Object p_sender, EventArgs p_args) { BaseObjectEventArgs baseObjectEventArgs = p_args as BaseObjectEventArgs; if (baseObjectEventArgs != null && baseObjectEventArgs.Object == MyController) { m_state.ChangeState(EState.IDLE); FXMainCamera.Instance.StopWalkFX(); ((MovingEntity)MyController).MovementDone.Trigger(); enabled = false; MovingEntity movingEntity = (MovingEntity)baseObjectEventArgs.Object; transform.localPosition = Helper.SlotLocalPosition(baseObjectEventArgs.Position, movingEntity.Height); transform.localRotation = Helper.GridDirectionToQuaternion(movingEntity.Direction); LegacyLogic.Instance.CommandManager.ClearQueue(); } }
public void StartCutscene(CutsceneInteraction startCutsceneInteraction) { if (startCutsceneInteraction == null) { throw new ArgumentNullException(); } if (m_currentState == ECutsceneState.Started) { throw new InvalidOperationException(); } m_currentState = ECutsceneState.Started; m_startCutsceneInteraction = startCutsceneInteraction; BaseObjectEventArgs p_eventArgs = new BaseObjectEventArgs(this, Position); LegacyLogic.Instance.EventManager.InvokeEvent(this, EEventType.CUTSCENE_STARTED, p_eventArgs); }
public void OnTeleportButtonClick() { if (m_inputPosX != null && m_inputPosY != null) { Position position = new Position(Int32.Parse(m_inputPosX.text), Int32.Parse(m_inputPosY.text)); Grid grid = LegacyLogic.Instance.MapLoader.Grid; Party party = LegacyLogic.Instance.WorldManager.Party; Position position2 = party.Position; if (grid.AddMovingEntity(position, party)) { grid.GetSlot(position2).RemoveEntity(party); party.Position = position; BaseObjectEventArgs p_eventArgs = new BaseObjectEventArgs(party, position); LegacyLogic.Instance.EventManager.InvokeEvent(party, EEventType.SET_ENTITY_POSITION, p_eventArgs); } } }
private void Appear() { if (m_targetSlot != null) { Grid grid = LegacyLogic.Instance.MapLoader.Grid; Position position = m_owner.Position; grid.GetSlot(m_owner.Position).RemoveEntity(m_owner); m_targetSlot.AddEntity(m_owner); m_owner.Position = m_targetSlot.Position; m_owner.Direction = EDirectionFunctions.GetDirection(m_owner.Position, LegacyLogic.Instance.WorldManager.Party.Position); m_state = EErebosState.APPEARING; UpdateDistanceToParty(LegacyLogic.Instance.WorldManager.Party, grid); m_owner.m_stateMachine.ChangeState(Monster.EState.MOVING); BaseObjectEventArgs p_eventArgs = new BaseObjectEventArgs(m_owner, m_owner.Position, "APPEARING"); LegacyLogic.Instance.EventManager.InvokeEvent(m_owner, EEventType.SET_ENTITY_POSITION, p_eventArgs); } }
private void MoveParty(GridSlot p_targetSlot) { Party party = LegacyLogic.Instance.WorldManager.Party; GridSlot slot = m_grid.GetSlot(party.Position); slot.RemoveEntity(party); p_targetSlot.AddEntity(party); if (!p_targetSlot.VisitedByParty) { p_targetSlot.VisitedByParty = true; LegacyLogic.Instance.EventManager.InvokeEvent(this, EEventType.UNCOVERED_TILES, EventArgs.Empty); } party.Position = p_targetSlot.Position; BaseObjectEventArgs p_eventArgs = new BaseObjectEventArgs(party, party.Position); LegacyLogic.Instance.EventManager.InvokeEvent(party, EEventType.TELEPORT_ENTITY, p_eventArgs); }
private void OnInteractiveObjectStateChanged(Object p_sender, EventArgs p_args) { InteractiveObject interactiveObject; if (p_sender is InteractiveObject) { interactiveObject = (InteractiveObject)p_sender; } else { BaseObjectEventArgs baseObjectEventArgs = (BaseObjectEventArgs)p_args; interactiveObject = (InteractiveObject)baseObjectEventArgs.Object; } if (interactiveObject == MyController) { ObjectState(interactiveObject.State, false); } }
private void OnInteractiveObjectSelected(Object p_sender, EventArgs p_args) { BaseObjectEventArgs baseObjectEventArgs = (BaseObjectEventArgs)p_args; InteractiveObject interactiveObject = baseObjectEventArgs.Object as InteractiveObject; if (interactiveObject != null) { if (interactiveObject != LegacyLogic.Instance.WorldManager.Party.SelectedInteractiveObject) { return; } UpdateName(interactiveObject); Show(interactiveObject); } else { Hide(); } }