Exemple #1
0
 public Wall(Vector2 point1, Vector2 point2, Color color, ulong time, Player owner)
 {
     p1 = point1;
     p2 = point2;
     Color = color;
     LayTime = time;
     Owner = owner;
 }
Exemple #2
0
        public void ApplyOnPlayer(Game1 game, Player player)
        {
            ShouldBeRemoved = true;

            List<Player> enemies;
            List<Player> players;
            Player enemy;

            switch (Type)
            {
                case PowerupType.Confuse:
                    for (int i = 0; i < game.Players.Count; i++)
                        if (game.Players[i].Team != player.Team)
                            game.Players[i].ConfuseTimer = 300;
                    //player.ConfuseTimer = 300;
                    break;
                case PowerupType.Slow:
                    player.SlowTimer = 420;
                    player.SpeedTimer = 0;
                    break;
                case PowerupType.Speed:
                    player.SlowTimer = 0;
                    player.SpeedTimer = 420;
                    break;
                case PowerupType.Wallhack:
                    player.WallhackTimer = 300;
                    break;
                case PowerupType.SlowTurn:
                    for (int i = 0; i < game.Players.Count; i++)
                        if (game.Players[i].Team != player.Team)
                            game.Players[i].SlowTurnTimer = 300;
                    break;
                case PowerupType.Party:
                    for (int i = 0; i < game.Players.Count; i++)
                    {
                        game.Players[i].PartyTimer = 300;
                        game.Players[i].SpeedTimer = 300;
                    }
                    break;
                case PowerupType.Satan:
                    players = game.Players.Where(p => !p.Dead).ToList();

                    for (int i = 0; i < players.Count; i++)
                    {
                        if (players[i].WallhackTimer < 15)
                        {
                            players[i].WallhackTimer = 15;
                            players[i].HideIcons = 16;
                        }
                        players[i].LayWall(game, true);
                        players[i].OlderPos = players[i].LastPos;
                        players[i].LastPos = players[i].Position;
                        players[i].LayWallDelay = 0;

                    }

                    for (int i = 1; i < players.Count; i++)
                    {
                        int k = game.rnd.Next(i);
                        Vector2 pos = players[i].Position;
                        players[i].Position = players[k].Position;
                        players[k].Position = pos;
                        pos = players[i].LastPos;
                        players[i].LastPos = players[k].LastPos;
                        players[k].LastPos = pos;
                        float rot = players[i].Angle;
                        players[i].Angle = players[k].Angle;
                        players[k].Angle = rot;
                    }

                    for (int i = 0; i < players.Count; i++)
                    {
                        players[i].OlderPos = players[i].LastPos;
                        players[i].LastPos = players[i].Position;
                    }
                    break;
                case PowerupType.Reverse:
                    enemies = game.Players.Where(p => !p.Dead && (p.Team != player.Team)).ToList();

                    if (enemies.Count == 0)
                        return;

                    enemy = enemies[game.rnd.Next(enemies.Count)];

                    if (enemy.WallhackTimer < 15)
                    {
                        enemy.WallhackTimer = 15;
                        enemy.HideIcons = 16;
                    }
                    enemy.LayWall(game, true);
                    Vector2 oldPos = enemy.Position;
                    float oldAngle = enemy.Angle;
                    enemy.OlderPos = enemy.LastPos = enemy.Position = enemy.ReversePos;
                    enemy.Angle = enemy.ReverseAngle;
                    enemy.ReversePos = oldPos;
                    enemy.ReverseAngle = oldAngle;
                    enemy.LayWallDelay = 0;
                    break;
                case PowerupType.OneDirection:
                    enemies = game.Players.Where(p => !p.Dead && (p.Team != player.Team)).ToList();

                    if (enemies.Count == 0)
                        return;

                    enemy = enemies[game.rnd.Next(enemies.Count)];
                    if (enemy.OneDirectionTimer == 0)
                        enemy.OneDirectionMask = 0;
                    enemy.OneDirectionTimer = 420;
                    break;
            }
        }
Exemple #3
0
 public bool IntersectsPlayer(Player p)
 {
     return !ShouldBeRemoved && (X - p.Position.X) * (X - p.Position.X) + (Y - p.Position.Y) * (Y - p.Position.Y) <= Radius * Radius;
 }
Exemple #4
0
 public bool IsOwner(Player p)
 {
     return Owner != null && p.ID == Owner.ID;
 }
Exemple #5
0
 public static Player FromLine(Game1 game, string line)
 {
     string[] splits = line.Split(' ');
     ControlsType controls = ControlsFromString(splits[0]);
     if (splits.Length == 2) // controls and team
     {
         string team = splits[1];
         Team t = game.Teams.First(tm => tm.Name == team);
         Player p = new Player(Vector2.Zero, 0, controls, t.GetColor(t.Players.Count));
         p.Team = t;
         t.Players.Add(p);
         return p;
     }
     else if (splits.Length == 4) // controls and color
     {
         return new Player(Vector2.Zero, 0, controls, new Color(int.Parse(splits[1]), int.Parse(splits[2]), int.Parse(splits[3]))) { ForceColor = true };
     }
     else// controls, team and color
     {
         string team = splits[1];
         Team t = game.Teams.First(tm => tm.Name == team);
         Player p = new Player(Vector2.Zero, 0, controls, new Color(int.Parse(splits[2]), int.Parse(splits[3]), int.Parse(splits[4])));
         p.Team = t;
         t.Players.Add(p);
         p.ForceColor = true;
         return p;
     }
 }