private void CheckForLaunch(AllegianceInterop.ClientConnection client, int iSide, bool isReady) { if (iSide >= 0) { _readyStatus[iSide] = isReady; } int readyTeamCount = 0; Log("Ready Status: "); for (int i = 0; i < MaxTeams; i++) { Console.Write(_readyStatus[i] + " "); if (_readyStatus[i] == true) { readyTeamCount++; } } Console.WriteLine(""); if (readyTeamCount == MaxTeams) { Log("All sides are ready, launching the game."); AllegianceInterop.FMD_C_START_GAME startGame = new AllegianceInterop.FMD_C_START_GAME(); client.SendMessageServer(startGame); } }
// 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); }
// 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); }
// 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; //} }
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); }