Пример #1
0
        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);
                    }
                }
            }
        }
Пример #2
0
        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);
        }
Пример #3
0
        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();
        }
Пример #4
0
        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);
            }
        }
Пример #5
0
        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);
            }
        }
Пример #6
0
        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);
            }
        }
Пример #7
0
        private void OnSetEntityPositionEvent(Object p_sender, EventArgs p_args)
        {
            BaseObjectEventArgs baseObjectEventArgs = p_args as BaseObjectEventArgs;

            if (baseObjectEventArgs != null && baseObjectEventArgs.Object == MyController)
            {
                SetEntityPosition();
            }
        }
Пример #8
0
 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);
     }
 }
Пример #9
0
        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();
            }
        }
Пример #10
0
        private void OnChangedPlayerPosition(Object p_sender, EventArgs p_args)
        {
            BaseObjectEventArgs baseObjectEventArgs = (BaseObjectEventArgs)p_args;

            if (baseObjectEventArgs != null && baseObjectEventArgs.Object is Party)
            {
                OnPositionChange(baseObjectEventArgs.Position);
            }
        }
Пример #11
0
        private void OnEntityDestroyed(Object p_sender, EventArgs p_args)
        {
            BaseObjectEventArgs baseObjectEventArgs = (BaseObjectEventArgs)p_args;

            if (baseObjectEventArgs.Object == MyController)
            {
                Destroy(gameObject);
            }
        }
Пример #12
0
        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);
        }
Пример #13
0
        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);
            }
        }
Пример #14
0
        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;
            }
        }
Пример #15
0
        private void Init(Object p_sender, EventArgs p_args)
        {
            BaseObjectEventArgs baseObjectEventArgs = (BaseObjectEventArgs)p_args;

            if (baseObjectEventArgs.Object is Party)
            {
                mLastPlayerPos = baseObjectEventArgs.Position;
                OnPositionChange();
            }
        }
Пример #16
0
        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);
            }
        }
Пример #17
0
        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);
            }
        }
Пример #18
0
        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);
        }
Пример #19
0
        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);
        }
Пример #20
0
        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();
            }
        }
Пример #21
0
        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);
            }
        }
Пример #23
0
 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();
         }
     }
 }
Пример #24
0
        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();
            }
        }
Пример #25
0
        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);
        }
Пример #26
0
 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);
         }
     }
 }
Пример #27
0
 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);
     }
 }
Пример #28
0
        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);
            }
        }
Пример #30
0
        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();
            }
        }