Пример #1
0
    public void OnReceiveRangeAttackPacket(int node, PacketId id, byte[] data)
    {
        if (m_isHost)
        {
            // 호스트의 몬스터는 실행 완료.
            return;
        }

        // 패킷에서 파라미터를 추출해서 ↓의 코드 스니펫을 호출한다.
        GameObject go = GameObject.FindGameObjectWithTag("Boss");

        if (go != null)
        {
            chrControllerEnemyBoss bossController = go.GetComponent <chrControllerEnemyBoss>();
            if (bossController != null)
            {
                BossRangePacket packet = new BossRangePacket(data);
                BossRangeAttack attack = packet.GetPacket();

                float attackPower = attack.power;
                float attackRange = attack.range;

                Debug.Log("Receive boss quick attack[Power:" + attackPower + " Ramge:" + attackRange + "]");
                bossController.cmdBossRangeAttack(attackPower, attackRange);
            }
        }
    }
Пример #2
0
    public void RequestBossRangeAttack(float attackPower, float attackRange)
    {
        // 호스트 측의 보스를 움직인다 : 이 명령을 로컬의 보스 오브젝트에 바이패스한다.
        GameObject go = GameObject.FindGameObjectWithTag("Boss");

        if (go != null)
        {
            chrControllerEnemyBoss bossController = go.GetComponent <chrControllerEnemyBoss>();

            if (bossController != null)
            {
                bossController.cmdBossRangeAttack(attackPower, attackRange);

                // 게스트 측의 보스를 움직인다. 통신 대응(패킷을 만들어 던진다).
                BossRangeAttack attack = new BossRangeAttack();

                attack.power = attackPower;
                attack.range = attackRange;

                BossRangePacket packet = new BossRangePacket(attack);

                if (m_network != null)
                {
                    int serverNode = m_network.GetServerNode();
                    m_network.SendReliable <BossRangeAttack>(serverNode, packet);
                    Debug.Log("Send boss range attack[Power:" + attackPower + " Ramge:" + attackRange + "]");
                }
            }
        }
    }
Пример #3
0
        //
        public bool Serialize(BossRangeAttack packet)
        {
            bool ret = true;

            ret &= Serialize(packet.power);
            ret &= Serialize(packet.range);

            return(ret);
        }
Пример #4
0
        //
        public bool Deserialize(ref BossRangeAttack element)
        {
            if (GetDataSize() == 0)
            {
                // 데이터가 설정되어 있지 않습니다.
                return(false);
            }

            bool ret = true;

            ret &= Deserialize(ref element.power);
            ret &= Deserialize(ref element.range);

            return(ret);
        }
Пример #5
0
	public void RequestBossRangeAttack(float attackPower, float attackRange)
	{
		// 호스트 측의 보스를 움직인다 : 이 명령을 로컬의 보스 오브젝트에 바이패스한다.
		GameObject go = GameObject.FindGameObjectWithTag("Boss");
		if (go != null)
		{
			chrControllerEnemyBoss bossController = go.GetComponent<chrControllerEnemyBoss>();

			if (bossController != null)
			{

				bossController.cmdBossRangeAttack(attackPower, attackRange);
				
				// 게스트 측의 보스를 움직인다. 통신 대응(패킷을 만들어 던진다).
				BossRangeAttack attack = new BossRangeAttack();

				attack.power = attackPower;
				attack.range = attackRange;

				BossRangePacket packet = new BossRangePacket(attack);

				if (m_network != null)
				{
					int serverNode = m_network.GetServerNode();
					m_network.SendReliable<BossRangeAttack>(serverNode, packet);
					Debug.Log("Send boss range attack[Power:" + attackPower + " Ramge:" + attackRange + "]");
				}
			}
		}
	}