Example #1
0
        public async Task Process(OpenBattle openBattle)
        {
            if (!IsLoggedIn)
            {
                return;
            }

            if (MyBattle != null)
            {
                await Respond("You are already in a battle");

                return;
            }

            openBattle.Header.Title = openBattle.Header.Title.Truncate(200);
            var battle = new ServerBattle(server, Name);

            battle.UpdateWith(openBattle.Header);
            server.Battles[battle.BattleID] = battle;


            await server.Broadcast(server.ConnectedUsers.Keys, new BattleAdded()
            {
                Header = battle.GetHeader()
            });

            await Process(new JoinBattle()
            {
                BattleID = battle.BattleID, Password = openBattle.Header.Password,
            });
        }
 public async Task AddBattle(ServerBattle battle)
 {
     Battles[battle.BattleID] = battle;
     await Broadcast(ConnectedUsers.Keys, new BattleAdded()
     {
         Header = battle.GetHeader()
     });
 }
Example #3
0
        public async Task Process(OpenBattle openBattle)
        {
            if (!IsLoggedIn)
            {
                return;
            }

            if (string.IsNullOrEmpty(openBattle.Header.Password) && User.BanVotes)
            {
                await Respond("Your rights have been restricted. You can only open passworded battles. Check your user page for details.");

                return;
            }

            if (MyBattle != null)
            {
                await Respond("You are already in a battle");

                return;
            }

            if (openBattle.Header.Mode != null &&
                !Enum.IsDefined(typeof(AutohostMode), openBattle.Header.Mode))
            {
                await Respond("Incorrect battle type");

                return;
            }

            openBattle.Header.Title = openBattle.Header.Title.Truncate(200);
            var battle = new ServerBattle(server, Name);

            battle.UpdateWith(openBattle.Header);
            server.Battles[battle.BattleID] = battle;


            await server.Broadcast(server.ConnectedUsers.Keys, new BattleAdded()
            {
                Header = battle.GetHeader()
            });

            await Process(new JoinBattle()
            {
                BattleID = battle.BattleID, Password = openBattle.Header.Password,
            });
        }
        private async Task StartBattle(ProposedBattle bat)
        {
            var battleID = Interlocked.Increment(ref server.BattleCounter);

            var battle = new ServerBattle(server, true);
            battle.UpdateWith(new BattleHeader()
            {
                BattleID = battleID,
                Founder = "#MatchMaker_" + battleID,
                Engine = server.Engine,
                Game = server.Game,
                Title = "MatchMaker " + battleID,
                Mode = bat.Mode,
            });
            server.Battles[battleID] = battle;

            //foreach (var plr in bat.Players) battle.Users[plr.Name] = new UserBattleStatus(plr.Name, plr.LobbyUser) { IsSpectator = false, AllyNumber = 0, };

            // also join in lobby
            await server.Broadcast(server.ConnectedUsers.Keys, new BattleAdded() { Header = battle.GetHeader() });
            foreach (var usr in bat.Players) await server.ForceJoinBattle(usr.Name, battle);

            await battle.StartGame();
        }