@@ -234,14 +234,25 @@ private static async System.Threading.Tasks.Task HandleSendCommandModded(
234234
235235 var serializedGameSummary = SerializationHelpers . ToByteArray ( stateSummary , gameState . Version ) ;
236236
237- var setupGameDataViewModel = new SetupGameStateViewModel
237+
238+ client . GameState . TryGetPlayer ( client . GameState . CurrentPlayer , out PlayerState playerState ) ;
239+ var currentPlayerId = "" ;
240+ if ( playerState . AccountId . HasValue )
241+ {
242+ currentPlayerId = playerState . AccountId . Value . ToString ( ) ;
243+ }
244+ var setupGameDataViewModel = new ModdedGameStateViewModel
238245 {
239246 gameId = client . gameId . ToString ( ) ,
240247 serializedGameState = serializedGameState ,
241248 serializedGameSummary = serializedGameSummary ,
242- gameSettingsJson = ""
249+ gameSettingsJson = "" ,
250+ currentPlayerId = currentPlayerId ,
251+ IsEndTurnCommand = command . GetCommandType ( ) == CommandType . EndTurn
243252 } ;
244253
254+
255+
245256 var setupData = System . Text . Json . JsonSerializer . Serialize ( setupGameDataViewModel ) ;
246257
247258 var serverResponse = await PolytopiaBackendAdapter . Instance . HubConnection . InvokeAsync < ServerResponse < BoolResponseViewModel > > (
@@ -303,7 +314,7 @@ private static async System.Threading.Tasks.Task HandleStartLobbyGameModded(
303314 out GameStateSummary stateSummary , out var gameState ) ;
304315
305316 var serializedGameSummary = SerializationHelpers . ToByteArray ( stateSummary , gameState . Version ) ;
306- var setupGameDataViewModel = new SetupGameStateViewModel
317+ var setupGameDataViewModel = new ModdedGameStateViewModel
307318 {
308319 lobbyId = lobbyGameViewModel . Id . ToString ( ) ,
309320 serializedGameState = serializedGameState ,
@@ -346,7 +357,7 @@ public static (byte[] serializedGameState, string gameSettingsJson) CreateMultip
346357 state = PlayerDataFriendshipState . Accepted ,
347358 knownTribe = true ,
348359 tribe = ( TribeType ) participatorViewModel . SelectedTribe ,
349- tribeMix = ( TribeType ) participatorViewModel . SelectedTribe ,
360+ tribeMix = TribeType . None , // TribeMix is byte too
350361 skinType = ( SkinType ) participatorViewModel . SelectedTribeSkin ,
351362 defaultName = participatorViewModel . GetNameInternal ( )
352363 } ;
@@ -454,4 +465,36 @@ public static (byte[] serializedGameState, string gameSettingsJson) CreateMultip
454465 return ( serializedGameState ,
455466 JsonConvert . SerializeObject ( gameState . Settings ) ) ;
456467 }
468+
469+ // FIX FOR NATURE PLAYER. BOTS ARENT IMPLEMENTED YET
470+
471+ [ HarmonyPrefix ]
472+ [ HarmonyPatch ( typeof ( GameState ) , nameof ( GameState . EndPlayerTurn ) ) ]
473+ private static bool GameState_EndPlayerTurn ( GameState __instance , bool newTurn = false )
474+ {
475+ Console . Write ( "GameState_EndPlayerTurn" ) ;
476+ __instance . CurrentPlayerIndex ++ ;
477+ if ( __instance . CurrentPlayerIndex >= __instance . PlayerStates . Count )
478+ {
479+ __instance . CurrentPlayerIndex = 0 ;
480+ newTurn = true ;
481+ }
482+
483+ var currentPlayer = __instance . PlayerStates [ __instance . CurrentPlayerIndex ] ;
484+ if ( ! currentPlayer . IsAlive ( __instance ) )
485+ {
486+ __instance . EndPlayerTurn ( newTurn ) ;
487+ }
488+ else if ( newTurn )
489+ {
490+ __instance . CurrentTurn ++ ;
491+ }
492+
493+ if ( currentPlayer . AutoPlay )
494+ {
495+ __instance . CommandStack . Add ( new EndTurnCommand ( currentPlayer . Id ) ) ;
496+ }
497+ Console . Write ( "finished" ) ;
498+ return false ;
499+ }
457500}
0 commit comments