/*Only the server recieves this event. * Similar to NextTurnEvent, but doesn't update the turn. * Used for network disconnection. * Sends the current spellcasterId. */ public override void OnEvent(NotifyTurnEvent evnt) { BoltConsole.Write("SERVER: Recieved a Notify turn event"); int currentSpellcaster = gameStateEntity.GetComponent <NetworkGameState>().getCurrentTurn(); var nextTurnEvnt = NextPlayerTurnEvent.Create(Bolt.GlobalTargets.Everyone); nextTurnEvnt.NextSpellcaster = currentSpellcaster; nextTurnEvnt.Send(); }
//input: the >>permanently<< disconnected spellcaster ID public void onRemovePlayer(int sID) { BoltConsole.Write("Removing spellcasterID " + sID); numOfPlayers--; state.NumOfPlayers--; //combatOrder[sID] = 0; spellcasterList[sID] = 0; bool currentDisconnected = false; int curSpellcasterID = state.CurrentSpellcasterTurn; if (curSpellcasterID == sID) { currentDisconnected = true; curSpellcasterID = getNextTurn(); } //Refresh the turn order list determineTurnOrder(curSpellcasterID); //Update the pointer for (int i = 0; i < turnOrder.Count; i++) { if (turnOrder[i] == curSpellcasterID) { turn_i = i; } } state.CurrentSpellcasterTurn = turnOrder[turn_i]; BoltConsole.Write(state.CurrentSpellcasterTurn + "==" + curSpellcasterID); if (currentDisconnected) { BoltConsole.Write("The turn was the spellcaster that logged out"); var nextTurnEvnt = NotifyTurnEvent.Create(Bolt.GlobalTargets.OnlyServer); nextTurnEvnt.Send(); } //If the current turn spellcaster is the one that disconnected, notify the next spellcaster }