Exemplo n.º 1
0
    private async void OnStreamerRaid(StreamRaidInfo raidInfo, bool raidWar)
    {
        var players = Players.GetAllPlayers();

        if (raidInfo.Players.Count == 0)
        {
            Server.Client?.SendCommand("", "message", raidInfo.RaiderUserName + " raided but without any players. Kappa");
            return;
        }

        // only one active raid war at a time.
        raidWar = raidWar && !StreamRaid.Started && !StreamRaid.IsWar;
        StreamRaid.AnnounceRaid(raidInfo, raidWar && players.Count > 0);

        if (players.Count == 0 && raidWar)
        {
            Server.Client?.SendCommand("", "message",
                                       raidInfo.RaiderUserName + " raided with intent of war but we don't have any players. FeelsBadMan");
        }

        StreamRaid.ClearTeams();

        if (!StreamRaid.Started && raidWar)
        {
            foreach (var player in players)
            {
                if (raidInfo.Players.Contains(player.UserId))
                {
                    continue;
                }
                StreamRaid.AddToStreamerTeam(player);
            }
        }

        var raiders = new List <PlayerController>();

        foreach (var user in raidInfo.Players)
        {
            var existingPlayer = Players.GetPlayerByUserId(user);
            if (existingPlayer)
            {
                RemovePlayer(existingPlayer);
            }

            var player = await AddPlayerByUserIdAsync(user, raidInfo);

            if (player && raidWar)
            {
                raiders.Add(player);
            }
        }

        if (raidWar)
        {
            StartCoroutine(StartRaidWar(raiders));
        }
    }
Exemplo n.º 2
0
    private IEnumerator StartRaidWar(IReadOnlyList <PlayerController> raiders)
    {
        yield return(new WaitForEndOfFrame());

        foreach (var raider in raiders)
        {
            StreamRaid.AddToRaiderTeam(raider);
            yield return(new WaitForEndOfFrame());
        }

        StreamRaid.StartRaidWar();
    }