private void WriteLocalAim(SpaceMarine LocalPlayer) { _crosshairTransfer = LocalPlayer.CrossHair; _packetWriter.Write(_crosshairTransfer.TargetPos); _packetWriter.Write(_crosshairTransfer.Position); _packetWriter.Write(_crosshairTransfer.isFiring); }
private void netSession_GamerJoined(object sender, GamerJoinedEventArgs e) { SpaceMarine playerCharacter = new SpaceMarine(_assetManager); playerCharacter.PlayerName = e.Gamer.Gamertag; if (!e.Gamer.IsLocal) { playerCharacter.isRemote = true; e.Gamer.Tag = playerCharacter; } else { playerCharacter = GetPlayer(e.Gamer.Gamertag); playerCharacter.isLocal = true; e.Gamer.Tag = playerCharacter; } if ((_isHost) && _currWorldState != null) { WriteMapData(_currWorldState); WriteMatchData(_gameManager); WriteLocalItems(_currWorldState); } else if (_isClient) { _packetReader.BaseStream.Flush(); if (doClientConnection() == false) { _failure = true; } } }
private void WriteLocalProperties(SpaceMarine LocalPlayer) { _packetWriter.Write(LocalPlayer.Position); _packetWriter.Write(LocalPlayer.Health); _packetWriter.Write(SendState(LocalPlayer)); _packetWriter.Write(LocalPlayer.Score); _packetWriter.Write(LocalPlayer.Team); if (LocalPlayer.CurrentWeapon != null) { _packetWriter.Write(LocalPlayer.CurrentWeapon.ItemID); _packetWriter.Write(LocalPlayer.CurrentWeapon.SpawnID); } else { _packetWriter.Write(-1); _packetWriter.Write(-1); } if (LocalPlayer.FlagSlot != null) { _packetWriter.Write(LocalPlayer.FlagSlot.ItemID); _packetWriter.Write(LocalPlayer.FlagSlot.Team); } else { _packetWriter.Write(-1); _packetWriter.Write(0); } }
public MatchController() { _teamNull = new Team(0); _teamBlue = new Team(1); _teamRed = new Team(2); _currMatch = MatchType.DM; _endMatch = false; _winner = null; }
public void UpdateScore(SpaceMarine Player) { foreach (SpaceMarine player in _playerList) { if (Player.ID == player.ID) { player.Score = Player.Score; } } }
public void SendLocalUpdate(SpaceMarine LocalPlayer) { foreach (LocalNetworkGamer gamer in _netSession.LocalGamers) { WriteLocalProperties(LocalPlayer); WriteLocalInput(LocalPlayer); WriteLocalAim(LocalPlayer); gamer.SendData(_packetWriter, SendDataOptions.None); } }
static void Main(string[] args) { Character steve = new Knight(); steve.GiveWeapon(new WarHammer()); Character gimli = new Dwarf(); SpaceMarine sm = new SpaceMarine(); Console.WriteLine(steve.UseWeapon(gimli)); Console.WriteLine(sm.UseWeapon(steve)); }
private SpaceMarine GetPlayer(string gamerTag) { SpaceMarine playerCharacter = new SpaceMarine(_assetManager); playerCharacter.PlayerName = gamerTag; foreach (SignedInGamer gamer in SignedInGamer.SignedInGamers) { if (gamer.Gamertag == gamerTag) { return(gamer.Tag as SpaceMarine); } } return(playerCharacter); }
private void WriteLocalInput(SpaceMarine LocalPlayer) { _controlTransfer = LocalPlayer.ActiveControl; _packetWriter.Write(_controlTransfer.DownPressed); _packetWriter.Write(_controlTransfer.DropFlag); _packetWriter.Write(_controlTransfer.DropWeapon); _packetWriter.Write(_controlTransfer.LeftPressed); _packetWriter.Write(_controlTransfer.OnePressed); _packetWriter.Write(_controlTransfer.RightPressed); _packetWriter.Write(_controlTransfer.SpacePressed); _packetWriter.Write(_controlTransfer.TwoPressed); _packetWriter.Write(_controlTransfer.UpPressed); _packetWriter.Write(_controlTransfer.UsePressed); }
private int SendState(SpaceMarine LocalPlayer) { switch (LocalPlayer.State) { case ActorState.Dead: return(0); case ActorState.Floating: return(1); case ActorState.Bound: return(2); } return(-1); }
private void ProcessRemoteGamer(LocalNetworkGamer gamer, GameTime gameTime, World GameWorld) { while (gamer.IsDataAvailable) { gamer.ReceiveData(_packetReader, out _sender); if (!_sender.IsLocal) { SpaceMarine player = _sender.Tag as SpaceMarine; ValidatePlayer(player); player.Update(gameTime, ReadRemoteInput(), GameWorld, ReadRemoteAim()); } else { break; } } }
public void RespawnPlayer(SpaceMarine Player, MatchController Controller) { if (getAvailableSpawn(_spawnList)) { if (Controller.Match != MatchType.CTF) { doSpawn(Player, _selectedSpawn); } else if (_spawnList[_spawnIndex].Team != Player.Team) { RespawnPlayer(Player, Controller); } else { doSpawn(Player, _selectedSpawn); } } }
public override void updateMe(GameManager gameManager, MouseState mState) { if (!_closed) { base.updateMe(gameManager, mState); _player = gameManager.LocalCharacter; if (_lBox.SelectedItem != null) { _selectedLabel = _lBox.SelectedItem.Text; if (_selectedLabel == "Blue Team") { gameManager.MatchController.BlueTeam.AddTeamMember(_player); } if (_selectedLabel == "Red Team") { gameManager.MatchController.RedTeam.AddTeamMember(_player); } if (_selectedLabel == "Auto Assign") { if (gameManager.MatchController.BlueTeam.Members.Count < gameManager.MatchController.RedTeam.Members.Count) { gameManager.MatchController.BlueTeam.AddTeamMember(_player); } else if (gameManager.MatchController.BlueTeam.Members.Count > gameManager.MatchController.RedTeam.Members.Count) { gameManager.MatchController.RedTeam.AddTeamMember(_player); } else { gameManager.MatchController.BlueTeam.AddTeamMember(_player); } } gameManager.LocalCharacter.State = ActorState.Dying; this.Close(); _lBox.SelectedItem = null; } } }
public SpaceMarine GetWinner() { SpaceMarine winner = null; SpaceMarine current = null; for (int x = 0; x < _playerList.Count; x++) { current = _playerList[x]; if (x == 0) { winner = current; } if (current.Score > winner.Score) { winner = current; } } return(winner); }
private void doSpawn(SpaceMarine Player, SpawnPoint spawn) { Player.Position = spawn.Location; Player.Health = 100; Player.State = ActorState.Floating; }
public void updateUI(Game1 Game, GameManager GameManager) { _score = GameManager.LocalCharacter.Score; _scoreLimit = GameManager.MatchController.ScoreLimit; _capLimit = GameManager.MatchController.CapLimit; _Health = GameManager.LocalCharacter.Health; if (GameManager.LocalCharacter.CurrentWeapon != null) { _ammo = GameManager.LocalCharacter.CurrentWeapon.AmmoCount; } _player = GameManager.LocalCharacter; colourStats(_ammo, out _ammoColour); colourStats(_Health, out _healthColour); if (GameManager == null) { _initDone = false; _teamMenu.Close(); _escMenu.Close(); _endGame.Close(); } if (!_initDone) { if (GameManager.MatchController.Match != MatchType.DM) { _teamMenu.Open(); _initDone = true; } } if (_teamMenu.Showing) { _teamMenu.updateMe(GameManager, Game.MouseState); _game.IsMouseVisible = true; } else if (_escMenu.Showing) { _escMenu.updateMe(GameManager, Game.MouseState); _game.IsMouseVisible = true; } else if (_endGame.Showing) { _endGame.updateMe(GameManager, Game.MouseState); _game.IsMouseVisible = true; } else { _game.IsMouseVisible = false; } doEscMenuUI(); if (GameManager.MatchController.MatchDone) { _endGame.Open(); } oldMouse = _game.MouseState; }
public void drawMe(SpriteBatch sBatch, GameManager gameManager) { if (_player != null) { if (_player.isPromptingUser) { if (_player.State == ActorState.Floating) { sBatch.DrawString(_font, "PRESS 'F' TO ENABLE GRAVITY BOOTS", new Vector2(_game.ScreenRes_X / 2 - 100, _game.ScreenRes_Y - 60), Color.White); } else if (_player.State == ActorState.Bound) { sBatch.DrawString(_font, "PRESS 'SPACEBAR' TO DISABLE GRAVITY BOOTS", new Vector2(_game.ScreenRes_X / 2 - 120, _game.ScreenRes_Y - 60), Color.White); } } if (_player.CurrentWeapon != null) { sBatch.DrawString(_font, " AMMO : " + _ammo.ToString(), _ammoPos, _ammoColour); } sBatch.DrawString(_font, "HEALTH : " + _Health.ToString(), _healthPos, _healthColour); if (gameManager.MatchController.Match == MatchType.DM) { sBatch.DrawString(_font, "KILLS : " + _score.ToString(), _scorePos, Color.White); sBatch.DrawString(_font, "LIMIT : " + _scoreLimit.ToString(), new Vector2(_scorePos.X, _scorePos.Y + 20), Color.White); } else { sBatch.DrawString(_font, "SCORE : " + _score.ToString(), _scorePos, Color.White); } if (_player.State == ActorState.Dying) { sBatch.DrawString(_assetManager.FontLib["SegoeUI"], "DEAD!", new Vector2(340, 480), Color.Red); sBatch.DrawString(_assetManager.FontLib["SegoeUI"], "You were killed by " + gameManager.LocalCharacter.Killer, new Vector2(300, 500), Color.White); if (_player.CanSpawn) { sBatch.DrawString(_assetManager.FontLib["SegoeUI"], "Hit [SpaceBar] to Respawn", new Vector2(300, 520), Color.White); } gameManager.Camera.Source = null; } } if ((gameManager.MatchController.Match == MatchType.CTF) || gameManager.MatchController.Match == MatchType.TDM) { _teamMenu.drawMe(sBatch); if (gameManager.MatchController.Match == MatchType.CTF) { sBatch.DrawString(_assetManager.FontLib["SegoeUI"], "Flag Captures", new Vector2(0, 180), Color.White); sBatch.DrawString(_assetManager.FontLib["SegoeUI"], "Blue Team :" + gameManager.MatchController.BlueTeam.Caps.ToString(), new Vector2(0, 200), Color.Blue); sBatch.DrawString(_assetManager.FontLib["SegoeUI"], "Red Team :" + gameManager.MatchController.RedTeam.Caps.ToString(), new Vector2(0, 220), Color.Red); sBatch.DrawString(_assetManager.FontLib["SegoeUI"], "Cap Limit :" + _capLimit, new Vector2(0, 240), Color.SlateGray); } if (gameManager.MatchController.Match == MatchType.TDM) { sBatch.DrawString(_assetManager.FontLib["SegoeUI"], "Team Score", new Vector2(0, 180), Color.White); sBatch.DrawString(_assetManager.FontLib["SegoeUI"], "Blue Team :" + gameManager.MatchController.BlueTeam.TeamScore.ToString(), new Vector2(0, 200), Color.Blue); sBatch.DrawString(_assetManager.FontLib["SegoeUI"], "Red Team :" + gameManager.MatchController.RedTeam.TeamScore.ToString(), new Vector2(0, 220), Color.Red); } } for (int i = 0; i < gameManager.SessionManager.NetSession.AllGamers.Count; i++) { SpaceMarine playerChar = gameManager.SessionManager.NetSession.AllGamers[i].Tag as SpaceMarine; if (playerChar.Team == 1) { _teamColor = Color.Blue; } else if (playerChar.Team == 2) { _teamColor = Color.Red; } else { _teamColor = Color.White; } sBatch.DrawString(_assetManager.FontLib["Normal"], playerChar.PlayerName + " " + playerChar.Score.ToString(), new Vector2(_playerListPos.X, _playerListPos.Y + (i * 15)), _teamColor); } _escMenu.drawMe(sBatch); _endGame.drawMe(sBatch); }
private void ValidatePlayer(SpaceMarine PlayerCharacter) { Weapon currentWeapon; Flag flag; Vector2 remotePosition = _packetReader.ReadVector2(); int remoteHealth = _packetReader.ReadInt32(); ActorState remoteState = GetState(_packetReader.ReadInt32()); int remoteScore = _packetReader.ReadInt32(); int remoteTeam = _packetReader.ReadInt32(); int weaponID = _packetReader.ReadInt32(); int weaponSpawnID = _packetReader.ReadInt32(); int flagID = _packetReader.ReadInt32(); int flagTeam = _packetReader.ReadInt32(); if (PositionInvalid(PlayerCharacter.Position, remotePosition)) { PlayerCharacter.Position = remotePosition; } if (remoteState != PlayerCharacter.State) { PlayerCharacter.State = remoteState; } if (weaponID != -1) { currentWeapon = (Weapon)getItem(weaponID); if (currentWeapon == null) { return; } currentWeapon.User = PlayerCharacter; if (weaponSpawnID != -1) { currentWeapon.SpawnID = weaponSpawnID; } if (PlayerCharacter.CurrentWeapon == null) { PlayerCharacter.CurrentWeapon = currentWeapon; } else if (currentWeapon.Name != PlayerCharacter.CurrentWeapon.Name) { PlayerCharacter.CurrentWeapon = currentWeapon; } } if (flagID != -1) { flag = (Flag)getItem(flagID); flag.Team = flagTeam; PlayerCharacter.FlagSlot = flag; } PlayerCharacter.Health = remoteHealth; PlayerCharacter.Score = remoteScore; PlayerCharacter.Team = remoteTeam; if (PlayerCharacter.Team == 1) { if (!_gameManager.MatchController.BlueTeam.Members.Contains(PlayerCharacter)) { _gameManager.MatchController.BlueTeam.AddTeamMember(PlayerCharacter); } } if (PlayerCharacter.Team == 2) { if (!_gameManager.MatchController.RedTeam.Members.Contains(PlayerCharacter)) { _gameManager.MatchController.RedTeam.AddTeamMember(PlayerCharacter); } } if (PlayerCharacter.Team == 0) { if (!_gameManager.MatchController.NoTeam.Members.Contains(PlayerCharacter)) { _gameManager.MatchController.NoTeam.AddTeamMember(PlayerCharacter); } } }
public void updateMe(World gameWorld) { switch (_currMatch) { case MatchType.DM: if (_teamNull.GetWinner() != null) { SpaceMarine player = _teamNull.GetWinner(); if (player.Score >= _scoreLimit) { _winner = player; _endMatch = true; } } break; case MatchType.TDM: _scoreLimit = 40; if (_teamBlue.TeamScore >= _scoreLimit) { _winningTeam = _teamBlue; } else if (_teamRed.TeamScore >= _scoreLimit) { _winningTeam = _teamRed; } if (_winningTeam != null) { _endMatch = true; } break; case MatchType.CTF: if (gameWorld.BlueBase.MadeGoal) { gameWorld.BlueBase.MadeGoal = false; _teamBlue.Caps++; } if (gameWorld.RedBase.MadeGoal) { gameWorld.RedBase.MadeGoal = false; _teamRed.Caps++; } if (_teamBlue.Caps >= _capLimit) { _winningTeam = _teamBlue; } else if (_teamRed.Caps >= _capLimit) { _winningTeam = _teamRed; } if (_winningTeam != null) { _endMatch = true; } break; } _teamBlue.UpdateRoster(); _teamNull.UpdateRoster(); _teamRed.UpdateRoster(); }
public void AddTeamMember(SpaceMarine Player) { _playerList.Add(Player); Player.Team = _teamID; }
public GameController(Game1 Game, AssetManager assetManager, SessionController sessionManager, GraphicsDevice graphicsDevice) { m_graphicsDevice = graphicsDevice; gameWorld = new World(assetManager); m_crossHair = new CrossHair(assetManager.SpriteLib["Crosshair"]); m_camera = new Camera2D(graphicsDevice.Viewport, Vector2.Zero); m_controller = new PolyInputController(); m_matchController = new MatchController(); m_sessionManager = sessionManager; try { if (sessionManager.RecievedMapName != "") { m_matchController = sessionManager.RecievedMatch; gameWorld.LoadMap(sessionManager.RecievedMapName, m_matchController); } else { setMatch(Game.SelectedMatch); gameWorld.LoadMap(Game.SelectedMap, m_matchController); } } catch (Exception ex) { Game1.currentGameState = GameState.Menu; gameWorld = null; if (sessionManager.isHost) { sessionManager.NetSession.EndGame(); } Game.Exception = ex; return; } m_spawnManager = new SpawnController(); m_spawnManager.SpawnList = gameWorld.SpawnPoints; m_spawnManager.WeaponSpawnList = gameWorld.WeaponSpawns; m_spawnManager.SpawnAllWeapons(gameWorld.PickupItems); foreach (NetworkGamer gamer in sessionManager.NetSession.LocalGamers) { if (gamer.IsLocal) { localPlayer = (SpaceMarine)gamer.Tag; } } m_matchController.NoTeam.AddTeamMember(localPlayer); if (sessionManager.RecievedItemList != null) { gameWorld.PickupItems = sessionManager.RecievedItemList; foreach (PickupItem item in gameWorld.PickupItems) { if (item.GetType().BaseType == typeof(Weapon)) { ((Weapon)item).SpawnPont = getSpawn(item); } else if (item.GetType() == typeof(Flag)) { if (((Flag)item).Team == 1) { ((Flag)item).Base = gameWorld.BlueBase; } if (((Flag)item).Team == 2) { ((Flag)item).Base = gameWorld.RedBase; } } } } if (gameWorld.CurrentMatch == MatchType.CTF) { if (sessionManager.isHost) { gameWorld.BlueBase.SpawnFlag(gameWorld.PickupItems); gameWorld.RedBase.SpawnFlag(gameWorld.PickupItems); } } sessionManager.GameManager = this; }