Пример #1
0
    protected override void OnInit(params object[] parameters)
    {
        base.OnInit(parameters);

        foreach (object element in parameters)
        {
            if (element is GunPartsType)
            {
                m_gunPartsType = (GunPartsType)element;
            }
            if (element is KGPlayer)
            {
                GetPlayer = (KGPlayer)element;
            }
        }
    }
Пример #2
0
    public IEnumerator MoveVaccine()
    {
        yield return(new WaitForSeconds(1f));

        cor = StartCoroutine(VaccineRotate());

        KGPlayer[] player = new KGPlayer[PlayerManager.Instance.GetPlayerList.Count];

        float speed       = 0.5f;
        float elapsedTime = 0f;

        Vector3 target = transform.position + Vector3.up * 2.5f;

        while (elapsedTime <= 5f)
        {
            yield return(new WaitForSeconds(0.01f));

            elapsedTime       += Time.deltaTime;
            transform.position = Vector3.MoveTowards(transform.position, target, Time.deltaTime * speed);

            if (transform.position.y == target.y)
            {
                break;
            }
        }

        yield return(new WaitForSeconds(2f));

        DirectionManager.Instance.OpenNarration(220070);

        //StartCoroutine(DelayNarr());

        StopCoroutine(cor);

        //originVaccine.SetActive(false);

        (originVaccine.GetComponent("MfxController2") as MonoBehaviour).enabled = true;

        yield return(new WaitForSeconds(2f));

        vaccineEffect.SetActive(false);

        for (int i = 0; i < player.Length; ++i)
        {
            player[i] = PlayerManager.Instance.GetPlayerList[i];
            vaccineLight[i].SetActive(true);
        }

        int count = player.Length;

        while (count > 0)
        {
            yield return(new WaitForSeconds(0.01f));

            speed += 0.06f;

            for (int i = 0; i < player.Length; ++i)
            {
                if (!vaccineLight[i].activeSelf)
                {
                    continue;
                }

                //float playerCenter = (int)player[i].Height / 2;
                Vector3 pos = player[i].transform.position + Vector3.up * 1.2f;

                vaccineLight[i].transform.position = Vector3.MoveTowards(vaccineLight[i].transform.position, pos, Time.deltaTime * speed);

                if (vaccineLight[i].transform.position == pos)
                {
                    effect[i] = AssetManager.Effect.Retrieve("FX_Direction_VaccineShield", pos);
                    vaccineLight[i].SetActive(false);
                    --count;
                }
            }
        }

        StartCoroutine(ShieldTrackingPlayer());

        yield return(new WaitForSeconds(3f));

        if (GameData.Instance.UserType == UserType.Host)
        {
            EventManager.Instance.Notify <IEventAfterDirecting>((receiver) => receiver.AfterDirecting());
        }

        //Restore();
    }
Пример #3
0
    public void ProcessDirectionPacketData(JObject packetData)
    {
        ItemState itemState = (ItemState)packetData.Value <int>("type");
        int       itemID    = packetData.Value <int>("id");
        Item      item      = FindItemByID(itemID);

        string   PartsGetplayer = packetData.Value <string>("playerid");
        KGPlayer GetPlayer      = PlayerManager.Instance.FindPlayerByID(PartsGetplayer) as KGPlayer;

        switch (itemState)
        {
        case ItemState.Spwan:
            string itemName = packetData.Value <string>("name");

            if (GetPlayer == null)     //파츠가 아닐때
            {
                if (item != null)
                {
                    return;
                }
            }
            else     //파츠일때만 겟플레이어가 있음. 플레이어 아이디가 같으면 리턴
            {
                if (GameData.Instance.UserType == UserType.User)
                {
                    if (GetPlayer.m_id == GameData.Instance.Player.m_id)
                    {
                        return;
                    }
                }
            }

            if (GameData.Instance.UserType == UserType.Host && itemName != "GunParts")
            {
                return;
            }

            ItemType itemType = (ItemType)packetData.Value <int>("itemtype");

            if (ItemType.Heal == itemType)
            {
                float hp = packetData.Value <float>("heal");
                item = AssetManager.Items.Retrieve(itemName, hp) as Item;
            }
            else if (ItemType.GunParts == itemType && GetPlayer != null)
            {
                GunPartsType type = (GunPartsType)packetData.Value <int>("gunpartsType");
                item = AssetManager.Items.Retrieve(itemName, GetPlayer, type) as Item;
            }
            else
            {
                item = AssetManager.Items.Retrieve(itemName) as Item;
            }

            item.m_itemID = itemID;
            item.SetItemTransformFromPacket(packetData);

            break;

        case ItemState.Restore:
            if (null == item)
            {
                return;
            }
            item.Restore();
            break;

        case ItemState.GunPartsSet:

            GunPartsType partsType = (GunPartsType)packetData.Value <int>("parts");
            //GunPartsType partsType = packetData.Value<int>("")

            Rifle rifle = GetPlayer.CurrentWeapon as Rifle;

            switch (partsType)
            {
            case GunPartsType.None:
                break;

            case GunPartsType.LaserParts:
                rifle.m_laserPart.gameObject.SetActive(true);
                rifle.m_laserPart.Init(GetPlayer, 20f);
                break;

            case GunPartsType.FireParts:
                rifle.m_firePart.gameObject.SetActive(true);
                rifle.m_firePart.Init(GetPlayer, 20f);
                break;

            case GunPartsType.GrenadeParts:
                rifle.m_grenadePart.gameObject.SetActive(true);
                rifle.m_grenadePart.Init(GetPlayer, 20f);
                break;
            }

            rifle.DissolveStart();
            break;
        }
    }