コード例 #1
0
 void putChessOnBoard(NPC n, NPC.PropertyData ndata)
 {
     n.initial(ndata);
     GetPlayer(n).chars[n.pData.teamSequence].gamestate = NPC.GameState.INCOMBAT;
     if (GetPlayer(n).playerID == 0)
     {
         charList1[n.pData.teamSequence].GetComponent <chessUI>().combat.gameObject.SetActive(true);
     }
     else
     {
         charList2[n.pData.teamSequence].GetComponent <chessUI>().combat.gameObject.SetActive(true);
     }
     n.OnNPCDead = OnNPCDead;
 }
コード例 #2
0
    IEnumerator _OnNPCDead(NPC npc)
    {
        if (npc.gamestate == NPC.GameState.DEFEAT)
        {
            yield break;
        }
        npc.gamestate = NPC.GameState.DEFEAT;
        GetPlayer(npc).chars[npc.pData.teamSequence].gamestate = NPC.GameState.DEFEAT;
        print(npc.name + "is dead");

        if (GetPlayer(npc).playerID == 0)
        {
            charList1[npc.pData.teamSequence].GetComponent <chessUI>().combat.gameObject.SetActive(false);
            charList1[npc.pData.teamSequence].GetComponent <chessUI>().Dead.gameObject.SetActive(true);
        }
        else if (GetPlayer(npc).playerID == 1)
        {
            charList2[npc.pData.teamSequence].GetComponent <chessUI>().combat.gameObject.SetActive(false);
            charList2[npc.pData.teamSequence].GetComponent <chessUI>().Dead.gameObject.SetActive(true);
        }

        yield return(StartCoroutine(npc._playDeath()));

        Player p = GetPlayer(npc);

        if (p == null)
        {
            yield break;
        }

        NPC.PropertyData data = null;
        for (int i = 0; i < p.chars.Count; ++i)
        {
            if (p.chars[i].gamestate == NPC.GameState.WAITING)
            {
                data = p.chars[i];
                p.chars[i].gamestate = NPC.GameState.INCOMBAT;
                break;
            }
        }

        p = Enemy(p);
        if (data == null)
        {
            for (int i = 0; i < p.chars.Count; ++i)
            {
                if (p.chars[i].gamestate == NPC.GameState.WAITING)
                {
                    data = p.chars[i];
                    p.chars[i].gamestate = NPC.GameState.INCOMBAT;
                    break;
                }
            }
        }



        if (data == null)
        {
            npc.gameObject.GetComponent <chessUI>().NPC.gameObject.SetActive(false);
            npc.playertype = playerType.NUTUAL;
            npc.pData.atk  = 0;
            npc.OnNPCDead  = null;
            npc.hpbar.gameObject.SetActive(false);
        }
        else
        {
            putChessOnBoard(npc, data);
        }
        StartCoroutine(npc._playInitial());


//		print("player1");
//		for( int i=0; i< GetPlayer(playerType.PLAYER1).chars.Count; ++i )
//		{
//			print(i.ToString() + ":" + GetPlayer(playerType.PLAYER1).chars[i].gamestate.ToString() );
//		}
//
//		print("player2");
//		for( int i=0; i< GetPlayer(playerType.PLAYER2).chars.Count; ++i )
//		{
//			print(i.ToString() + ":" + GetPlayer(playerType.PLAYER2).chars[i].gamestate.ToString() );
//		}

        if (GetPlayer(npc) != null && playerLose(GetPlayer(npc)))
        {
            OnGameEnd(Enemy(GetPlayer(npc)), GetPlayer(npc));
        }
    }