Ejemplo n.º 1
0
        GetReadyToPlayAllArgs(Error error)
        {
            Player[] players;
            VoxelAbilitiesArray[]          abilities;
            SerializedTaskArray[]          taskInfo;
            SerializedTaskTemplatesArray[] taskTemplateInfo;
            AssignmentGroupArray[]         assignmentGroupArray;
            if (m_room != null)
            {
                enabled        = true;
                m_prevTickTime = m_time.Time;
                m_initialized  = true;

                error.Code = StatusCode.OK;
                players    = new Player[m_players.Count];

                List <IBotController> bots = new List <IBotController>();

                //Will override or
                abilities            = new VoxelAbilitiesArray[m_players.Count];
                taskInfo             = new SerializedTaskArray[m_players.Count];
                taskTemplateInfo     = new SerializedTaskTemplatesArray[m_players.Count];
                assignmentGroupArray = new AssignmentGroupArray[players.Length];
                for (int i = 0; i < m_players.Count; ++i)
                {
                    Player player = m_players[m_room.Players[i]];

                    players[i]              = player;
                    abilities[i]            = m_abilities[m_room.Players[i]];
                    taskInfo[i]             = m_taskTemplates[m_room.Players[i]];
                    taskTemplateInfo[i]     = m_taskTemplatesInfo[m_room.Players[i]];
                    assignmentGroupArray[i] = new AssignmentGroupArray
                    {
                        Groups = m_engine.GetPlayerView(i).AssignmentsController.GetGroups()
                    };
                    if (player.IsBot && player.BotType != BotType.Replay)
                    {
                        bots.Add(MatchFactory.CreateBotController(player, m_engine.GetTaskEngine(i)));
                    }
                }

                m_bots = bots.ToArray();
            }
            else
            {
                error.Code           = StatusCode.NotFound;
                error.Message        = "Room not found";
                players              = new Player[0];
                abilities            = new VoxelAbilitiesArray[0];
                taskInfo             = new SerializedTaskArray[0];
                taskTemplateInfo     = new SerializedTaskTemplatesArray[0];
                assignmentGroupArray = new AssignmentGroupArray[0];
            }


            var readyToPlayAllArgs = new ServerEventArgs <Player[], Dictionary <Guid, Dictionary <Guid, Player> >, VoxelAbilitiesArray[], SerializedTaskArray[], SerializedTaskTemplatesArray[], AssignmentGroupArray[], Room>();

            readyToPlayAllArgs.Arg    = players;
            readyToPlayAllArgs.Arg2   = m_clientIdToPlayers;
            readyToPlayAllArgs.Arg3   = abilities;
            readyToPlayAllArgs.Arg4   = taskInfo;
            readyToPlayAllArgs.Arg5   = taskTemplateInfo;
            readyToPlayAllArgs.Arg6   = assignmentGroupArray;
            readyToPlayAllArgs.Arg7   = m_room;
            readyToPlayAllArgs.Except = Guid.Empty;
            return(readyToPlayAllArgs);
        }