Ejemplo n.º 1
0
 private void WriteLocalAim(SpaceMarine LocalPlayer)
 {
     _crosshairTransfer = LocalPlayer.CrossHair;
     _packetWriter.Write(_crosshairTransfer.TargetPos);
     _packetWriter.Write(_crosshairTransfer.Position);
     _packetWriter.Write(_crosshairTransfer.isFiring);
 }
Ejemplo n.º 2
0
        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;
                }
            }
        }
Ejemplo n.º 3
0
        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);
            }
        }
Ejemplo n.º 4
0
 public MatchController()
 {
     _teamNull  = new Team(0);
     _teamBlue  = new Team(1);
     _teamRed   = new Team(2);
     _currMatch = MatchType.DM;
     _endMatch  = false;
     _winner    = null;
 }
Ejemplo n.º 5
0
 public void UpdateScore(SpaceMarine Player)
 {
     foreach (SpaceMarine player in _playerList)
     {
         if (Player.ID == player.ID)
         {
             player.Score = Player.Score;
         }
     }
 }
Ejemplo n.º 6
0
 public void SendLocalUpdate(SpaceMarine LocalPlayer)
 {
     foreach (LocalNetworkGamer gamer in _netSession.LocalGamers)
     {
         WriteLocalProperties(LocalPlayer);
         WriteLocalInput(LocalPlayer);
         WriteLocalAim(LocalPlayer);
         gamer.SendData(_packetWriter, SendDataOptions.None);
     }
 }
Ejemplo n.º 7
0
        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));
        }
Ejemplo n.º 8
0
        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);
        }
Ejemplo n.º 9
0
        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);
        }
Ejemplo n.º 10
0
        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);
        }
Ejemplo n.º 11
0
        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;
                }
            }
        }
Ejemplo n.º 12
0
 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);
         }
     }
 }
Ejemplo n.º 13
0
        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;
                }
            }
        }
Ejemplo n.º 14
0
        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);
        }
Ejemplo n.º 15
0
 private void doSpawn(SpaceMarine Player, SpawnPoint spawn)
 {
     Player.Position = spawn.Location;
     Player.Health   = 100;
     Player.State    = ActorState.Floating;
 }
Ejemplo n.º 16
0
        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;
        }
Ejemplo n.º 17
0
        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);
        }
Ejemplo n.º 18
0
        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);
                }
            }
        }
Ejemplo n.º 19
0
        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();
        }
Ejemplo n.º 20
0
 public void AddTeamMember(SpaceMarine Player)
 {
     _playerList.Add(Player);
     Player.Team = _teamID;
 }
Ejemplo n.º 21
0
        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;
        }