public SpectatorPlayerState(Player _player) { player = _player; cameraPosition = nullPosition; cameraView = nullView; cameraUp = nullUp; index = 0; controls = new AutoTexture2D(ContentLoadManager.loadTexture("Textures/spectator_mode"), new Vector2(27, 433)); cameraPositionOffset = new Vector3(0, 15, -50); cameraLookAt = new Vector3(0, 0, 1000); // Find a team to start on Random random = new Random(System.DateTime.Now.Millisecond); if (random.Next() % 2 == 0) { currentTeam = Ship.Team.Esxolus; } else { currentTeam = Ship.Team.Halk; } follow = null; }
private void AcquireTarget() { Ship[] ships = FindObjectsOfType <Ship>(); Ship.Team myTeam = myShip.currentTeam; Ship closestShip = null; float closestDistance = range; foreach (Ship ship in ships) { if (!ship.Active || ship.currentTeam == myTeam || ship.currentTeam == Ship.Team.Neutral) { continue; } float distance = Vector3.Distance(transform.position, ship.transform.position); if (distance <= range && distance < closestDistance) { closestShip = ship; closestDistance = distance; } } if (closestShip == null) { currentTarget = null; } else { currentTarget = closestShip; } }
public override void ProcessInput() { if (InputManager.isCombinedPrimaryFirePressed(player.PlayerNumber)) { switch (currentTeam) { case Ship.Team.Esxolus: currentTeam = Ship.Team.Halk; break; case Ship.Team.Halk: currentTeam = Ship.Team.Esxolus; break; } follow = null; index = 0; } else { } if (InputManager.isCombinedLeftBumperPressed(player.PlayerNumber) || InputManager.isCombinedRightBumperPressed(player.PlayerNumber)) { follow = null; List<Fighter> fighters = null; switch (currentTeam) { case Ship.Team.Esxolus: fighters = ((GameScene)Space394Game.GameInstance.CurrentScene).EsxolusFighters; break; case Ship.Team.Halk: fighters = ((GameScene)Space394Game.GameInstance.CurrentScene).HalkFighters; break; } if (InputManager.isCombinedLeftBumperPressed(player.PlayerNumber)) { if (index < 0 || index >= fighters.Count) { index = fighters.Count - 1; follow = null; } else { } while (fighters != null && follow == null && fighters.Count > 0 && index >= 0) { if (fighters[index].Active) { follow = fighters[index]; } else { } index--; } if (index < 0 || index >= fighters.Count) { index = fighters.Count-1; follow = null; } else { } } else if (InputManager.isCombinedRightBumperPressed(player.PlayerNumber)) { if (index < 0 || index >= fighters.Count) { index = fighters.Count - 1; follow = null; } else { } while (fighters != null && follow == null && fighters.Count > 0 && index < fighters.Count) { if (fighters[index].Active) { follow = fighters[index]; } else { } index++; } if (index < 0 || index >= fighters.Count) { index = 0; follow = null; } else { } } else { } } else { } if (InputManager.isCombinedToggleObjectivesPressed(player.PlayerNumber)) { player.ObjectivesDrawActive = !player.ObjectivesDrawActive; } else { } if (InputManager.isCombinedPausePressed(player.PlayerNumber)) { player.pause(); } else { } }
public override void Update(float deltaTime) { HandleInput(); #if DEBUG if (murder) { foreach (SceneObject item in SceneObjects.Values) { if (item is Fighter) { if (!((Fighter)item).PlayerControlled) { item.onCollide(null, HYPERBEAM); } else { } } else { } } murder = false; } else { } if (waveNow) { waveTimer = 0; waveNow = false; } else { } if (invincibility) { foreach (SceneObject item in SceneObjects.Values) { if (item is Fighter) { if (((Fighter)item).PlayerControlled) { ((Fighter)item).Health = STAR_POWER; ((Fighter)item).SecondaryAmmo = (int)STAR_POWER; } else { } } else { } } invincibility = false; } else { } #endif updateAI(deltaTime); updateParticles(deltaTime); if (currentState == state.game) { waveReleased = false; waveTimer -= deltaTime; if (waveTimer <= 0) { foreach (SpawnShip ship in spawnShips) { ship.SpawnWave(); } waveTimer = WAVE_TIMER; waveReleased = true; } else { } } else { } collisionManager.Update(deltaTime); Turret.updateGlobalTurretTimer(deltaTime); AI.updateGlobalAITimer(deltaTime); if (esxolusEvents.Count != 0) { esxolusEvents.Peek().Update(deltaTime); if (esxolusEvents.Peek().IsComplete()) { esxolusEvents.Dequeue(); } else { } } else { } if (halkEvents.Count != 0) { halkEvents.Peek().Update(deltaTime); if (halkEvents.Peek().IsComplete()) { halkEvents.Dequeue(); } else { } } base.Update(deltaTime); LogCat.updateValue("WaveTimer", "" + waveTimer); LogCat.updateValue("Exsolus Spawn Points", "" + esxolusSpawnPointsRemaining); LogCat.updateValue("Halk Spawn Points", "" + halkSpawnPointsRemaining); if (currentState == state.game) { //if (esxolusSpawnPointsRemaining <= 0) if (esxolusEvents.Count == 0) { currentState = state.victory; victor = Ship.Team.Halk; foreach (Player player in Space394Game.GameInstance.Players) { player.CurrentState = new ScoreboardPlayerState(player); } } else if (halkEvents.Count == 0) //(halkSpawnPointsRemaining <= 0) { currentState = state.victory; victor = Ship.Team.Esxolus; foreach (Player player in Space394Game.GameInstance.Players) { player.CurrentState = new ScoreboardPlayerState(player); } } else { } } // Let's only have one winner, huh else { } if (currentState == state.loading) { currentState = state.game; } else { } }