示例#1
0
        private void MessageReceiver_FMD_S_TEAM_READY(AllegianceInterop.ClientConnection client, AllegianceInterop.FMD_S_TEAM_READY message)
        {
            // Only the game controller can launch the game.
            if (IsGameController == false)
            {
                // If we are not the game controller, then re-send the ready message in case the other side joined after we readied up the first time.
                AllegianceInterop.FMD_CS_FORCE_TEAM_READY forceReady = new AllegianceInterop.FMD_CS_FORCE_TEAM_READY(SideIndex, true);
                client.SendMessageServer(forceReady);
                return;
            }

            Log($"FMD_S_TEAM_READY - Received ready status: {message.fReady} for side: {message.iSide}");

            CheckForLaunch(client, message.iSide, message.fReady);
        }
示例#2
0
        // Set the game parameters back to their proper defaults (map to hihigher, etc.)
        private void ResetGameParameters(AllegianceInterop.ClientConnection client)
        {
            AllegianceInterop.FMD_CS_MISSIONPARAMS missionParameters = new AllegianceInterop.FMD_CS_MISSIONPARAMS(
                GameName,
                AllegianceInterop.MapType.c_mmHiHigher,
                MaxPlayersPerGame,
                MaxPlayersPerGame / 2
                );

            client.SendMessageServer(missionParameters);

            Log($"ResetGameParameters: SideIndex = {SideIndex}");

            AllegianceInterop.FMD_CS_FORCE_TEAM_READY forceReady = new AllegianceInterop.FMD_CS_FORCE_TEAM_READY(SideIndex, true);
            client.SendMessageServer(forceReady);
        }
示例#3
0
        // When a bot comm is made team leader, then it should set it's team name and faction.
        private void MessageReceiver_FMD_CS_SET_TEAM_LEADER(AllegianceInterop.ClientConnection client, AllegianceInterop.FMD_CS_SET_TEAM_LEADER message)
        {
            if (message.shipID <= 0)
            {
                return;
            }

            AllegianceInterop.FMD_S_PLAYERINFO playerInfo;
            if (message.shipID == _shipID)
            {
                Log($"This player is now the team leader of side index: {message.sideID}, _hasSetTeamAndCiv: {_hasSetTeamAndCiv}");

                if (_hasSetTeamAndCiv == false)
                {
                    int noSquad = -1;

                    string[] teamNames = { "Yellow Pigs", "Blue Pigs" };
                    AllegianceInterop.FMD_CS_SET_TEAM_INFO teamInfo = new AllegianceInterop.FMD_CS_SET_TEAM_INFO(noSquad, SideIndex, teamNames[SideIndex]);
                    client.SendMessageServer(teamInfo);


                    var enumValues = Enum.GetValues(typeof(Civilization));

                    _targetCivID = (short)enumValues.GetValue(_random.Next(0, enumValues.Length));

                    AllegianceInterop.FMD_CS_CHANGE_TEAM_CIV teamCiv = new AllegianceInterop.FMD_CS_CHANGE_TEAM_CIV(SideIndex, _targetCivID, false);
                    client.SendMessageServer(teamCiv);

                    AllegianceInterop.FMD_CS_FORCE_TEAM_READY forceReady = new AllegianceInterop.FMD_CS_FORCE_TEAM_READY(SideIndex, true);
                    client.SendMessageServer(forceReady);

                    _hasSetTeamAndCiv = true;

                    //_isCurrentCommander = true;
                }
            }
            //else if (message.sideID == SideIndex) // Someone else was made the leader of our side. This is an outrage!
            //{
            //    _isCurrentCommander = false;
            //}
        }
示例#4
0
        private void MessageReceiver_FMD_CS_FORCE_TEAM_READY(AllegianceInterop.ClientConnection client, AllegianceInterop.FMD_CS_FORCE_TEAM_READY message)
        {
            Log($"FMD_CS_FORCE_TEAM_READY - side: {message.iSide}, ready: {message.fForceReady}");

            _readyStatus[message.iSide] = message.fForceReady;

            if (IsGameController == true)
            {
                CheckForLaunch(client, message.iSide, message.fForceReady);
            }
        }