public void OnPawnUpdate(NetworkMessage msg)
    {
        GameMsg.MsgPawn pawnMsg = msg.ReadMessage <GameMsg.MsgPawn>();
        Pawn            newPawn = pawnMsg.pawn;
        Pawn            oldPawn = battle.GetPawn(newPawn.GetId());

        EventBus.PawnUpdate.Invoke(battle, newPawn);
        battle.SetPawn(newPawn.GetId(), newPawn);
    }
 public void OpenVendor()
 {
     for (int i = 0; i < battle.allies.Length; i++)
     {
         GameMsg.MsgPawn openVendorMsg = new GameMsg.MsgPawn()
         {
             pawn = battle.allies[i]
         };
         NetworkServer.SendToClient(i, GameMsg.OpenVendor, openVendorMsg);
     }
     game.OpenServerHandler(new VendorServerHandler(game, battle.allies));
 }
 public void OpenChoice(int level)
 {
     for (int i = 0; i < battle.allies.Length; i++)
     {
         GameMsg.MsgPawn openChoiceMsg = new GameMsg.MsgPawn()
         {
             pawn = battle.allies[i]
         };
         NetworkServer.SendToClient(i, GameMsg.OpenChoice, openChoiceMsg);
     }
     game.OpenServerHandler(new ChoiceServerHandler(game, battle.allies, level));
 }
    private void OnPawnDied(Battle b, Pawn pawn)
    {
        bool allAlliesDead = battle.AreAllAlliesDead();

        if (allAlliesDead)
        {
            NetworkServer.SendToAll(GameMsg.EndGame, new StringMessage("You all died."));
            return;
        }
        if (!battle.enemy.IsAlive())
        {
            for (int i = 0; i < battle.allies.Length; i++)
            {
                battle.allies[i].Restore();
            }

            if (Game.enemy % DB.Enemies.Length == DB.Enemies.Length - 1)
            {
                int level = Mathf.FloorToInt((Game.enemy + 1) / DB.Enemies.Length);
                if (level % 2 == 1)
                {
                    OpenChoice(level);
                }
                else
                {
                    OpenVendor();
                }
                return;
            }
            Pawn enemy = game.CreateNextEnemy();
            enemy.SetId(battle.allies.Length);
            //this.battle.enemy.Update(enemy);
            battle.enemy = enemy;
            GameMsg.MsgPawn enemyUpdate = new GameMsg.MsgPawn()
            {
                pawn = enemy
            };
            NetworkServer.SendToAll(GameMsg.UpdatePawn, enemyUpdate);

            /*
             * battle.enemy = game.CreateNextEnemy();
             * battle.enemy.SetId(battle.allies.Length);
             * GameMsg.MsgStartBattle startBattleMsg = new GameMsg.MsgStartBattle() { battle = battle };
             * NetworkServer.SendToAll(GameMsg.StartBattle, startBattleMsg);
             */
            return;
        }
    }