Beispiel #1
0
    public void DoUpdateCollide()
    {
        hwmBox2D    collideAABB = hwmBox2D.BuildAABB(m_Head.GetPosition(), new Vector2(m_Head.Radius, m_Head.Radius));
        hwmSphere2D headSphere  = new hwmSphere2D(m_Head.GetPosition(), m_Properties.HeadColliderRadius);

        if ((slConstants.DAMAGETYPE_WALL & m_EnableDamageType) != 0 &&
            !slWorld.GetInstance().GetMap().GetMapBox().IsInsideOrOn(m_Head.AABB))
        {
            m_AliveState = AliveState.DeadHitWall;
            return;
        }
        hwmQuadtree <QuadtreeElement> .AABBEnumerator enumerator = new hwmQuadtree <QuadtreeElement> .AABBEnumerator(m_Head.OwnerQuadtree.GetRootNode()
                                                                                                                     , collideAABB);

        while (enumerator.MoveNext())
        {
            hwmQuadtree <QuadtreeElement> .Node iterNode = enumerator.Current;
            hwmBetterList <QuadtreeElement>     elements = iterNode.GetElements();
            for (int iElement = elements.Count - 1; iElement >= 0; iElement--)
            {
                QuadtreeElement iterElement = elements[iElement];
                if ((slConstants.DAMAGETYPE_SNAKE & m_EnableDamageType) != 0 &&
                    iterElement.Owner != m_Guid &&
                    iterElement.NodeType != slConstants.NodeType.Predict &&
                    (iterElement.GetPosition() - m_Head.GetPosition()).sqrMagnitude
                    <= ((m_Head.Radius + iterElement.Radius) * (m_Head.Radius + iterElement.Radius)))
                {
                    m_AliveState = AliveState.DeadHitSnake;
                }
            }
        }
    }
Beispiel #2
0
        public void Update()
        {
            wDown = false;
            if (resetOnce < 6)
            {
                controllerMappings[Keys.R].Execute();
                resetOnce++;
            }
            if (keysEnabled && !myGame.level.scoreSystem.displayMenu)
            {
                KeyboardState NewState = Keyboard.GetState();

                Keys[] pressedKeys = Keyboard.GetState().GetPressedKeys();
                if (myGame.level.mainCharacter.state is AliveState)
                {
                    AliveState f = myGame.level.mainCharacter.state as AliveState;
                    f.beam = false;
                    myGame.level.mainCharacter.state = f;
                }

                foreach (Keys key in pressedKeys)
                {
                    if (key.Equals(Keys.Q) || (key.Equals(Keys.R) && !myGame.level.scoreSystem.displayCollectibles && !myGame.level.scoreSystem.displayCredits && !myGame.level.scoreSystem.displayMenu))
                    {
                        controllerMappings[key].Execute();
                    }

                    if (controllerMappings.ContainsKey(key) && myGame.level.mainCharacter.canMove)
                    {
                        if (key.Equals(Keys.Space))
                        {
                            wDown = true;
                        }

                        if (key.Equals(Keys.N))
                        {
                            if (NewState.IsKeyDown(Keys.N) && OldState.IsKeyUp(Keys.N))
                            {
                                controllerMappings[key].Execute();
                            }
                        }
                        else if (key.Equals(Keys.Space))
                        {
                            if (NewState.IsKeyDown(Keys.Space) && OldState.IsKeyUp(Keys.Space))
                            {
                                controllerMappings[key].Execute();
                            }
                        }
                        else
                        {
                            controllerMappings[key].Execute();
                        }
                    }
                }
                OldState = NewState;
                MainCharJumpCommand c = controllerMappings[Keys.Space] as MainCharJumpCommand;
                controllerMappings[Keys.Space] = c;
            }
        }
Beispiel #3
0
 public Entity(TextureManager textureManager, SpriteBatch spriteBatch)
 {
     _textureManager     = textureManager;
     _spriteBatch        = spriteBatch;
     _currentAliveState  = AliveState.ALIVE;
     _currentMovingState = MoveState.IDLE;
     _dimensions         = new Vector2(32, 32);
     _position           = new Vector2(0, 0);
     //_boundingBox = new BoundingBox()
     _isVisible = true;
 }
 public void getAliveState(out AliveState? @return, out bool returnSpecified)
 {
     throw new NotImplementedException();
 }
Beispiel #5
0
    protected override void HandleInitialize(object additionalData)
    {
        InitializeAdditionalData initializeData = additionalData as InitializeAdditionalData;

        hwmDebug.Assert(initializeData.NodeCount >= slConstants.SNAKE_INITIALIZEZ_NODE_MINCOUNT, "initializeData.NodeCount >= slConstants.SNAKE_INITIALIZEZ_NODE_MINCOUNT");

        m_AliveState = AliveState.Alive;

        m_SnakeName           = initializeData.SnakeName;
        m_TweakableProperties = slWorld.GetInstance().GetSnakeSystem().GetTweakableProperties(initializeData.TweakableProperties);
        m_Properties          = slWorld.GetInstance().GetSnakeSystem().GetProperties(m_SnakeName);

        m_Power = initializeData.NodeCount * m_TweakableProperties.NodeToPower;

        #region Head
        m_Head = slWorld.GetInstance().GetSnakeSystem().GetHeadPool(m_SnakeName).Pop();
        m_Head.Active(this);
        m_Head.SetPositionAndRotation(initializeData.HeadPosition, initializeData.HeadRotation);
        #endregion

        #region Clothes
        m_Clothes = slWorld.GetInstance().GetSnakeSystem().GetClothesPool(m_SnakeName).Pop();
        m_Clothes.Active(this);
        m_Clothes.SetPositionAndRotation(initializeData.HeadPosition + initializeData.HeadRotation * new Vector3(0, -slConstants.SNAKE_NODE_TO_NODE_DISTANCE, 0)
                                         , initializeData.HeadRotation);
        #endregion

        #region Body
        m_BodyPool = slWorld.GetInstance().GetSnakeSystem().GetBodyPool(m_SnakeName);

        m_Bodys = new hwmDeque <BodyNode>(16);
        Vector3 bodyToClothesOffset = initializeData.HeadRotation * new Vector3(0, -slConstants.SNAKE_NODE_TO_NODE_DISTANCE, 0);
        Vector3 bodyToBodyOffset    = initializeData.HeadRotation * new Vector3(0, -slConstants.SNAKE_NODE_TO_NODE_DISTANCE, 0);
        for (int iNode = 3; iNode <= initializeData.NodeCount; iNode++)         // MagicNumber: 1->Head 2->Clothes 3->FirstBody
        {
            BodyNode node = m_BodyPool.Pop();
            node.Active(this);
            node.SetPositionAndRotation(m_Clothes.GetPosition() + bodyToClothesOffset + bodyToBodyOffset * (iNode - 3)
                                        , initializeData.HeadRotation);
            if (node.Sprite != null)
            {
                node.Sprite.sortingOrder = slConstants.SNAKE_SPRITERENDERER_MIN_ORDERINLAYER + initializeData.NodeCount - iNode;
            }

            m_Bodys.PushBack(node);
        }

        #endregion

        if (initializeData.IsBot)
        {
            m_Controller = gameObject.AddComponent <slAIController>();
            m_Controller.Initialize();
        }
        else
        {
            m_Controller = slWorld.GetInstance().GetPlayerController();
        }
        m_Controller.SetControllerSnake(this);

        TargetMoveDirection    = (initializeData.HeadRotation * Vector2.up).normalized;
        m_CurrentMoveDirection = TargetMoveDirection;
        m_SpeedState           = SpeedState.Normal;

        m_EnableDamageType = int.MaxValue;
        m_CanEatFood       = true;

        m_SkillEventArgs = new slSkill.EventArgs();

        m_IsReaminsFoodContamination = false;
    }
Beispiel #6
0
 public void SetAliveState(AliveState state)
 {
     _currentAliveState = state;
     _velocity          = 0;
 }
 public void getAliveState(out AliveState? @return, out bool returnSpecified)
 {
     @return = AliveState.ONLINE;
     returnSpecified = true;
     GetAliveState();
 }