Exemple #1
0
        public override void Update(float deltaTime)
        {
            if (!hasRunOnce)
            {
                level.getInputSystem().addKey(visionKey);
                level.getInputSystem().addKey(toggleControlKey);

                mainWinPlayerZoomWidth  = level.sysManager.drawSystem.getMainView().width;
                mainWinPlayerZoomHeight = level.sysManager.drawSystem.getMainView().height;
                mainWinOrbZoomWidth     = level.sysManager.drawSystem.getMainView().width + 100;
                mainWinOrbZoomHeight    = level.sysManager.drawSystem.getMainView().height + 100;

                float proportion = mainWinOrbZoomWidth / mainWinPlayerZoomWidth;

                miniWinPlayerZoomWidth  = plWinWidth;
                miniWinPlayerZoomHeight = plWinHeight;
                miniWinOrbZoomWidth     = plWinWidth + plWinWidth / proportion;
                miniWinOrbZoomHeight    = plWinHeight + plWinHeight / proportion;



                hasRunOnce = true;
            }

            if (doFade && fadeTimer >= 0)
            {
                fadeTimer -= deltaTime;
                if (fadeTimer < 0)
                {
                    fadeTimer = -1.0f;
                    if (orbActive)
                    {
                        destroyVisionOrb();
                        orbActive = false;
                    }
                    else
                    {
                        createVisionOrb();
                        orbActive = true;
                    }
                }
            }

            if (orbUnlocked && level.getInputSystem().myKeys[visionKey].down)
            {
                if (doFade)
                {
                    Color flashCol = toOrbCol;
                    if (orbActive)
                    {
                        flashCol = toPlayerCol;
                    }
                    level.sysManager.drawSystem.setFlash(flashCol, fadeTime * 2);
                    fadeTimer = fadeTime;
                }
                else
                {
                    if (orbActive)
                    {
                        destroyVisionOrb();
                        orbActive = false;
                    }
                    else
                    {
                        createVisionOrb();
                        orbActive = true;
                    }
                }
            }

            if (orbUnlocked && level.getInputSystem().myKeys[toggleControlKey].down)
            {
                switchControl(!orbControl);
            }

            foreach (Entity e in getApplicableEntities())
            {
                PositionComponent    posComp = ( PositionComponent )e.getComponent(GlobalVars.POSITION_COMPONENT_NAME);
                VelocityComponent    velComp = ( VelocityComponent )e.getComponent(GlobalVars.VELOCITY_COMPONENT_NAME);
                VisionInputComponent visComp = ( VisionInputComponent )e.getComponent(GlobalVars.VISION_ORB_INPUT_COMPONENT_NAME);

                if (orbActive && orbControl)
                {
                    checkForInput(posComp, velComp, visComp);
                }

                if (orbActive && doPlayerWindow)
                {
                    checkPlayerWindowLocation();
                }

                //If there's a key down and the player isn't moving horizontally, check to make sure there's a collision
                if (orbControl)
                {
                    if (Math.Abs(velComp.x) < Math.Abs(visComp.platformerMoveSpeed))
                    {
                        if (level.getInputSystem().myKeys[GlobalVars.KEY_RIGHT].pressed)
                        {
                            float leftX  = (posComp.x - posComp.width / 2 - 1);
                            float upperY = (posComp.y - posComp.height / 2);
                            float lowerY = (posComp.y + posComp.height / 2);

                            if (!(level.getCollisionSystem().findObjectsBetweenPoints(leftX, upperY, leftX, lowerY).Count > 0))
                            {
                                beginMoveRight(posComp, velComp, visComp);
                            }
                        }
                        if (level.getInputSystem().myKeys[GlobalVars.KEY_LEFT].pressed)
                        {
                            float rightX = (posComp.x + posComp.width / 2 + 1);
                            float upperY = (posComp.y - posComp.height / 2);
                            float lowerY = (posComp.y + posComp.height / 2);

                            if (!(level.getCollisionSystem().findObjectsBetweenPoints(rightX, upperY, rightX, lowerY).Count > 0))
                            {
                                beginMoveLeft(posComp, velComp, visComp);
                            }
                        }
                    }

                    if (Math.Abs(velComp.y) < Math.Abs(visComp.platformerMoveSpeed))
                    {
                        if (level.getInputSystem().myKeys[GlobalVars.KEY_JUMP].pressed)
                        {
                            ColliderComponent colComp = ( ColliderComponent )e.getComponent(GlobalVars.COLLIDER_COMPONENT_NAME);

                            float rightX = (colComp.getX(posComp) + colComp.width / 2);
                            float upperY = (colComp.getY(posComp) - colComp.height / 2 - 1);
                            float leftX  = (colComp.getX(posComp) + colComp.width / 2);

                            if (!(level.getCollisionSystem().findObjectsBetweenPoints(leftX, upperY, rightX, upperY).Count > 0))
                            {
                                beginMoveUp(posComp, velComp, visComp);
                            }
                        }
                    }

                    //Slow horizontal if no left/right key down
                    if (velComp.x != 0 && !level.getInputSystem().myKeys[GlobalVars.KEY_LEFT].pressed && !level.getInputSystem().myKeys[GlobalVars.KEY_RIGHT].pressed)
                    {
                        if (velComp.x < 0)
                        {
                            velComp.x += horizSlowSpeed;
                            if (velComp.x > 0)
                            {
                                velComp.x = 0;
                            }
                        }
                        else
                        {
                            velComp.x -= horizSlowSpeed;
                            if (velComp.x < 0)
                            {
                                velComp.x = 0;
                            }
                        }
                    }
                }
            }
        }
Exemple #2
0
 public void beginMoveDown(PositionComponent posComp, VelocityComponent velComp, VisionInputComponent pelInComp)
 {
     velComp.setVelocity(velComp.x, pelInComp.platformerMoveSpeed);
 }
Exemple #3
0
 public void beginMoveRight(PositionComponent posComp, VelocityComponent velComp, VisionInputComponent pelInComp)
 {
     velComp.setVelocity(pelInComp.platformerMoveSpeed, velComp.y);
 }
Exemple #4
0
        //-----------------------------------------------------------------------------

        //----------------------------------- Input -----------------------------------
        public void checkForInput(PositionComponent posComp, VelocityComponent velComp, VisionInputComponent visInComp)
        {
            if (level.getInputSystem().myKeys[GlobalVars.KEY_JUMP].down)
            {
                beginMoveUp(posComp, velComp, visInComp);
            }
            if (level.getInputSystem().myKeys[GlobalVars.KEY_DOWN].down)
            {
                beginMoveDown(posComp, velComp, visInComp);
            }
            if (level.getInputSystem().myKeys[GlobalVars.KEY_LEFT].down)
            {
                beginMoveLeft(posComp, velComp, visInComp);
            }
            if (level.getInputSystem().myKeys[GlobalVars.KEY_RIGHT].down)
            {
                beginMoveRight(posComp, velComp, visInComp);
            }
            if (level.getInputSystem().myKeys[GlobalVars.KEY_JUMP].up)
            {
                endUpperMove(posComp, velComp);
            }
            if (level.getInputSystem().myKeys[GlobalVars.KEY_DOWN].up)
            {
                endLowerMove(posComp, velComp);
            }
            if (level.getInputSystem().myKeys[GlobalVars.KEY_RIGHT].up)
            {
                endRightHorizontalMove(posComp, velComp);
            }
            if (level.getInputSystem().myKeys[GlobalVars.KEY_LEFT].up)
            {
                endLeftHorizontalMove(posComp, velComp);
            }
        }