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); }
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 }
//-------------------------------------------------------------------------------- //------------------------------------- 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++; * } * } * */ }
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(); }
public void endRightHorizontalMove(PositionComponent posComp, VelocityComponent velComp) { if (velComp.x > 0) { velComp.setVelocity(0, velComp.y); } }
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); } }
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); } }
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()); } }
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(); } }
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(); }
//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); }
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); } }
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; } } }
private void startRise(VelocityComponent velComp, SmushComponent smushComp) { //Console.WriteLine("Setting " + velComp + " vel to " + smushComp.getRiseSpeed()); velComp.setVelocity(smushComp.getRiseSpeed()); smushComp.setStateRise(); }
public void beginMoveRight(PositionComponent posComp, VelocityComponent velComp, VisionInputComponent pelInComp) { velComp.setVelocity(pelInComp.platformerMoveSpeed, velComp.y); }
public void beginMoveDown(PositionComponent posComp, VelocityComponent velComp, VisionInputComponent pelInComp) { velComp.setVelocity(velComp.x, pelInComp.platformerMoveSpeed); }
private void startFall(VelocityComponent velComp, SmushComponent smushComp) { velComp.setVelocity(smushComp.getFallSpeed()); smushComp.setStateFall(); }