Пример #1
0
        public void fireItem(Entity e, DirectionalComponent dir)
        {
            TimedShooterComponent timedShooterComp = ( TimedShooterComponent )e.getComponent(GlobalVars.TIMED_SHOOTER_COMPONENT_NAME);
            PositionComponent     posComp          = (PositionComponent)e.getComponent(GlobalVars.POSITION_COMPONENT_NAME);
            ShooterBullet         bullet           = new ShooterBullet(level, level.rand.Next(Int32.MinValue, Int32.MaxValue), posComp.x, posComp.y, dir.getDir(), timedShooterComp.state);
            VelocityComponent     bulletVel        = ( VelocityComponent )bullet.getComponent(GlobalVars.VELOCITY_COMPONENT_NAME);

            float bulletSpeed = 160.0f;

            if (dir.isUp())
            {
                bulletVel.setVelocity(0, -bulletSpeed);
            }
            else if (dir.isRight())
            {
                bulletVel.setVelocity(bulletSpeed, 0);
            }
            else if (dir.isDown())
            {
                bulletVel.setVelocity(0, bulletSpeed);
            }
            else if (dir.isLeft())
            {
                bulletVel.setVelocity(-bulletSpeed, 0);
            }
            level.addEntity(bullet);
        }
Пример #2
0
        public bool doorSwitch(Entity e, bool active)
        {
            //Active
            if (active)
            {
                if (e.hasComponent(GlobalVars.COLLIDER_COMPONENT_NAME))
                {
                    e.removeComponent(GlobalVars.COLLIDER_COMPONENT_NAME);
                    level.getCollisionSystem().colliderRemoved(e);
                }
                DrawComponent drawComp = ( DrawComponent )e.getComponent(GlobalVars.DRAW_COMPONENT_NAME);
                drawComp.setSprite(GlobalVars.DOOR_OPEN_SPRITE_NAME);
            }
            //Closed
            else
            {
                //Check for the player within the door.
                PositionComponent posComp    = (PositionComponent)e.getComponent(GlobalVars.POSITION_COMPONENT_NAME);
                PointF            lowerLeft  = new PointF(posComp.x - posComp.width / 2, posComp.y + posComp.height / 2);
                PointF            upperRight = new PointF(posComp.x + posComp.width / 2, posComp.y - posComp.height / 2);
                List <Entity>     cols       = level.getCollisionSystem().findObjectsBetweenPoints(lowerLeft, upperRight);
                //Don't close on player.
                foreach (Entity ent in cols)
                {
                    if (ent is Player)
                    {
                        VelocityComponent velComp    = ( VelocityComponent )ent.getComponent(GlobalVars.VELOCITY_COMPONENT_NAME);
                        PositionComponent playerComp = ( PositionComponent )ent.getComponent(GlobalVars.POSITION_COMPONENT_NAME);

                        float kickOutSpeed = 200.0f;
                        if (playerComp.x > posComp.x)
                        {
                            velComp.setVelocity(kickOutSpeed, velComp.y);
                        }
                        else
                        {
                            velComp.setVelocity(-kickOutSpeed, velComp.y);
                        }

                        return(false);
                    }
                }
                if (!e.hasComponent(GlobalVars.COLLIDER_COMPONENT_NAME))
                {
                    e.addComponent(new ColliderComponent(e, GlobalVars.BASIC_SOLID_COLLIDER_TYPE));
                }
                DrawComponent drawComp = ( DrawComponent )e.getComponent(GlobalVars.DRAW_COMPONENT_NAME);
                drawComp.setSprite(GlobalVars.DOOR_CLOSED_SPRITE_NAME);
            }

            return(true); //Just cuz
        }
Пример #3
0
        //--------------------------------------------------------------------------------



        //------------------------------------- Actions ----------------------------------
        public void playerJump(PositionComponent posComp, VelocityComponent velComp, PlayerInputComponent pelInComp)
        {
            //If it's landed on something, jump
            float checkY = posComp.y + (posComp.height / 2) + GlobalVars.MIN_TILE_SIZE / 2;

            //float buffer = 2;

            if (pelInComp.passedAirjumps < GlobalVars.numAirJumps)
            {
                velComp.setVelocity(velComp.x, pelInComp.jumpStrength);
                pelInComp.passedAirjumps++;
                pelInComp.justJumped = true;
            }

            /*
             * if ( level.getCollisionSystem().findObjectsBetweenPoints( posComp.x - posComp.width / 2 + buffer, checkY, posComp.x + posComp.width / 2 - buffer, checkY ).Count > 0 ) {
             *  velComp.setVelocity( velComp.x, pelInComp.jumpStrength );
             *  pelInComp.passedAirjumps = 0;
             * } else {
             *  if ( pelInComp.passedAirjumps < GlobalVars.numAirJumps ) {
             *      velComp.setVelocity( velComp.x, pelInComp.jumpStrength );
             *      pelInComp.passedAirjumps++;
             *  }
             * }
             * */
        }
Пример #4
0
 public void endLowerMove(PositionComponent posComp, VelocityComponent velComp)
 {
     if (velComp.y > 0)
     {
         velComp.setVelocity(velComp.x, 0);
     }
 }
        public override void Update(float deltaTime)
        {
            if (!hasRunOnce)
            {
                level.getInputSystem().addKey(glideKey);

                //level.getInputSystem().addKey(blockSpawnKey);
                level.getInputSystem().addKey(speedyKey);

                level.getInputSystem().addKey(cycleDownPowerupKey);
                //level.getInputSystem().addKey(cycleUpPowerupKey);
                level.getInputSystem().addKey(equippedPowerupKey);

                level.getInputSystem().addKey(bounceKey);

                hasRunOnce = true;
            }
            if (glideActive)
            {
                VelocityComponent velComp = (VelocityComponent)this.level.getPlayer().getComponent(GlobalVars.VELOCITY_COMPONENT_NAME);
                if (velComp.y > maxVelocity)
                {
                    velComp.setVelocity(velComp.x, maxVelocity);
                }
                glideTimer = glideTimer - deltaTime;
                if (glideTimer < 0.0f)
                {
                    GravityComponent gravComp = (GravityComponent)this.level.getPlayer().getComponent(GlobalVars.GRAVITY_COMPONENT_NAME);
                    gravComp.setGravity(gravComp.x, GlobalVars.STANDARD_GRAVITY);
                    glideActive = false;
                    glideTimer  = glideDuration;
                }
            }

            if (speedyTimer > 0)
            {
                if (level.getPlayer() == null)
                {
                    return;
                }
                speedyTimer -= deltaTime;
                if (!level.getPlayer().hasComponent(GlobalVars.VELOCITY_COMPONENT_NAME))
                {
                    return;
                }
                VelocityComponent velComp = (VelocityComponent)this.level.getPlayer().getComponent(GlobalVars.VELOCITY_COMPONENT_NAME);
                if (speedyTimer <= 0 || Math.Abs(velComp.x) < GlobalVars.SPEEDY_SPEED)
                {
                    velComp.setVelocity(0, velComp.y);
                    speedyTimer  = -1;
                    speedyActive = false;
                    if (!level.getPlayer().hasComponent(GlobalVars.PLAYER_INPUT_COMPONENT_NAME))
                    {
                        level.getPlayer().addComponent(new PlayerInputComponent(level.getPlayer()));
                    }
                }
            }

            checkForInput();
        }
Пример #6
0
 public void endRightHorizontalMove(PositionComponent posComp, VelocityComponent velComp)
 {
     if (velComp.x > 0)
     {
         velComp.setVelocity(0, velComp.y);
     }
 }
Пример #7
0
 public void stopDown(PositionComponent posComp, VelocityComponent velComp)
 {
     level.getMovementSystem().changeY(posComp, level.levelHeight - posComp.height / 2, true);
     if (velComp.y > 0)
     {
         velComp.setVelocity(velComp.x, 0);
     }
 }
Пример #8
0
 public void stopRight(PositionComponent posComp, VelocityComponent velComp)
 {
     level.getMovementSystem().changeX(posComp, level.levelWidth - posComp.width / 2, true);
     if (velComp.x > 0)
     {
         velComp.setVelocity(0, velComp.y);
     }
 }
Пример #9
0
 private void startLowerWait(VelocityComponent velComp, SmushComponent smushComp, TimerComponent timerComp, Entity e)
 {
     velComp.setVelocity(0, 0);
     smushComp.setStateLowerWait();
     if (!timerComp.hasTimer(upperWaitTimer))
     {
         timerComp.addTimer(lowerWaitTimer, smushComp.getLowerWaitTime());
     }
 }
Пример #10
0
 public void beginMoveRight(PositionComponent posComp, VelocityComponent velComp, PlayerInputComponent pelInComp, AnimationComponent animComp)
 {
     if (pelInComp != null && pelInComp.player != null)
     {
         velComp.setVelocity(pelInComp.playerHorizMoveSpeed, velComp.y);
         if (!pelInComp.player.isLookingRight())
         {
             pelInComp.player.faceRight();
         }
         level.getPlayer().startAnimation();
     }
 }
Пример #11
0
 public void endRightHorizontalMove(PositionComponent posComp, VelocityComponent velComp, AnimationComponent animComp)
 {
     if (level.getPlayer() == null)
     {
         return;
     }
     if (velComp.x > 0)
     {
         velComp.setVelocity(0, velComp.y);
     }
     level.getPlayer().stopAnimation();
 }
Пример #12
0
        //You must have this, but it may be empty.
        //What should the entity do in order to revert to its starting state?
        //Common things are:
        //Set position back to startingX and startingY
        //NOTE: If doing this, you probably want to use the MovementSystem's teleportToNoCollisionCheck() method
        //rather than the usual changePosition()
        //Set velocity to 0 in both directions
        //Note: Some things, like ground, dont move, and really don't need anything here.
        //Note: Some things, like a bullet, won't ever exist at the start of a level, so you could probably leave this empty.
        public override void revertToStartingState()
        {
            TimedShooterComponent shooterComp = ( TimedShooterComponent )this.getComponent(GlobalVars.TIMED_SHOOTER_COMPONENT_NAME);
            TimerComponent        timerComp   = ( TimerComponent )this.getComponent(GlobalVars.TIMER_COMPONENT_NAME);

            timerComp.clearAllTimers();
            timerComp.addTimer(shooterComp.fireTimerString, shooterComp.timeBetweenBursts);
            PositionComponent posComp = ( PositionComponent )this.getComponent(GlobalVars.POSITION_COMPONENT_NAME);

            level.getMovementSystem().teleportToNoCollisionCheck(posComp, posComp.startingX, posComp.startingY);
            VelocityComponent velComp = ( VelocityComponent )this.getComponent(GlobalVars.VELOCITY_COMPONENT_NAME);

            velComp.setVelocity(0, 0);
            DrawComponent drawComp = (DrawComponent)this.getComponent(GlobalVars.DRAW_COMPONENT_NAME);

            drawComp.setSprite(startingSprite, true);
        }
Пример #13
0
        public void manageSpeedyTimer(float deltaTime)
        {
            List <Entity> toRemove = new List <Entity>();

            foreach (Entity e in speedyTimers.Keys.ToList())
            {
                if (!(e.hasComponent(GlobalVars.VELOCITY_COMPONENT_NAME)))
                {
                    return;
                }

                VelocityComponent velComp = ( VelocityComponent )e.getComponent(GlobalVars.VELOCITY_COMPONENT_NAME);
                speedyTimers[e] -= deltaTime;
                if (speedyTimers[e] <= 0 || Math.Abs(velComp.x) < GlobalVars.SPEEDY_SPEED)
                {
                    //If it's not in the air, stop horizontal movement.
                    velComp.setVelocity(0, velComp.y);

                    toRemove.Add(e);

                    if (e is Player)
                    {
                        playerSpeedyEnabled = false;
                        if (!(e.hasComponent(GlobalVars.PLAYER_INPUT_COMPONENT_NAME)))
                        {
                            e.addComponent(new PlayerInputComponent(level.getPlayer()));
                        }
                    }

                    if (e.hasComponent(GlobalVars.PUSHABLE_COMPONENT_NAME))
                    {
                        PushableComponent pushComp = ( PushableComponent )e.getComponent(GlobalVars.PUSHABLE_COMPONENT_NAME);
                        pushComp.dontSlow = false;
                    }
                }
            }

            foreach (Entity remEnt in toRemove)
            {
                speedyTimers.Remove(remEnt);
            }
        }
Пример #14
0
 public void manageGlideTimer(float deltaTime)
 {
     if (glideActive && level.getPlayer() != null)
     {
         VelocityComponent velComp = ( VelocityComponent )this.level.getPlayer().getComponent(GlobalVars.VELOCITY_COMPONENT_NAME);
         if (velComp.y > maxVelocity)
         {
             velComp.setVelocity(velComp.x, maxVelocity);
         }
         glideTimer = glideTimer - deltaTime;
         if (glideTimer < 0.0f)
         {
             GravityComponent gravComp = ( GravityComponent )this.level.getPlayer().getComponent(GlobalVars.GRAVITY_COMPONENT_NAME);
             if (gravComp != null)
             {
                 gravComp.setGravity(gravComp.x, GlobalVars.STANDARD_GRAVITY);
             }
             glideActive = false;
             glideTimer  = glideDuration;
         }
     }
 }
Пример #15
0
 private void startRise(VelocityComponent velComp, SmushComponent smushComp)
 {
     //Console.WriteLine("Setting " + velComp + " vel to " + smushComp.getRiseSpeed());
     velComp.setVelocity(smushComp.getRiseSpeed());
     smushComp.setStateRise();
 }
Пример #16
0
 public void beginMoveRight(PositionComponent posComp, VelocityComponent velComp, VisionInputComponent pelInComp)
 {
     velComp.setVelocity(pelInComp.platformerMoveSpeed, velComp.y);
 }
Пример #17
0
 public void beginMoveDown(PositionComponent posComp, VelocityComponent velComp, VisionInputComponent pelInComp)
 {
     velComp.setVelocity(velComp.x, pelInComp.platformerMoveSpeed);
 }
Пример #18
0
 private void startFall(VelocityComponent velComp, SmushComponent smushComp)
 {
     velComp.setVelocity(smushComp.getFallSpeed());
     smushComp.setStateFall();
 }