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; } } } } } }
public void beginMoveDown(PositionComponent posComp, VelocityComponent velComp, VisionInputComponent pelInComp) { velComp.setVelocity(velComp.x, pelInComp.platformerMoveSpeed); }
public void beginMoveRight(PositionComponent posComp, VelocityComponent velComp, VisionInputComponent pelInComp) { velComp.setVelocity(pelInComp.platformerMoveSpeed, velComp.y); }
//----------------------------------------------------------------------------- //----------------------------------- 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); } }