예제 #1
0
        private async Task LeaveBattle(ServerBattle battle)
        {
            if (battle.Users.ContainsKey(Name))
            {
                MyBattle = null;
                UserBattleStatus oldVal;
                if (battle.Users.TryRemove(Name, out oldVal))
                {
                    await server.SyncUserToAll(this);

                    var bots = battle.Bots.Values.Where(x => x.owner == Name).ToList();
                    foreach (var b in bots)
                    {
                        BotBattleStatus obs;
                        if (battle.Bots.TryRemove(b.Name, out obs))
                        {
                            await server.Broadcast(battle.Users.Keys, new RemoveBot()
                            {
                                Name = b.Name
                            });
                        }
                    }
                }
                await battle.CheckCloseBattle();
            }
        }