예제 #1
0
        public void Show(GameObject skillMaskPrefab, params int[] parameters)
        {
            var cs = PrefabHelper.InstantiateAndReset <BaseSkillMask>(skillMaskPrefab, RespawnParent);

            cs.Show(parameters);
            SkillMasks.Add(cs);
        }
예제 #2
0
 public void Preload(int count = 20)
 {
     while (PopParticleSysPoolList.Count < count)
     {
         Enqueue(PrefabHelper.InstantiateAndReset(Instance.PopParticleSysPrefab, Instance.transform));
     }
 }
예제 #3
0
 void RefreshList2()
 {
     foreach (var friendSlot in _friendSlotList2)
     {
         Destroy(friendSlot.gameObject);
     }
     _friendSlotList2.Clear();
     if (CommonData.FriendData.FriendList != null)
     {
         for (int i = 0; i < CommonData.FriendData.FriendList.Count; i++)
         {
             var friendInfo = CommonData.FriendData.FriendList[i];
             var go         = PrefabHelper.InstantiateAndReset(FriendSlotTemplate, Grid2.transform);
             go.name = i.ToString(CultureInfo.InvariantCulture);
             go.SetActive(true);
             var cs = go.GetComponent <FriendSlot>();
             cs.SetAndRefresh(friendInfo, OnSelectFriend2, null);
             cs.ToggleSelected(false);
             _friendSlotList2.Add(cs);
             go.GetComponent <UIDragPanelContents>().draggablePanel = DraggablePanel2;
         }
     }
     Grid2.repositionNow = true;
     FriendSlotTemplate.SetActive(false);
 }
예제 #4
0
 public void Refresh()
 {
     if (_slotList == null)
     {
         _slotList = new VegetableSlot[CommonData.MyVegetableList.Count];
     }
     else if (_slotList.Length != CommonData.MyVegetableList.Count)
     {
         foreach (var slot in _slotList.Where(slot => slot != null))
         {
             Destroy(slot.gameObject);
         }
         _slotList = new VegetableSlot[CommonData.MyVegetableList.Count];
     }
     for (int i = 0; i < CommonData.MyVegetableList.Count; i++)
     {
         if (_slotList[i] == null)
         {
             var slot = PrefabHelper.InstantiateAndReset <VegetableSlot>(SlotTemplate, Grid.transform);
             slot.gameObject.SetActive(true);
             _slotList[i] = slot;
         }
         _slotList[i].name = i.ToString();
         _slotList[i].SetAndRefresh(CommonData.MyVegetableList[i]);
     }
     SlotTemplate.SetActive(false);
     Grid.repositionNow = true;
 }
예제 #5
0
 void RefreshList1()
 {
     foreach (var friendSlot in _friendSlotList1)
     {
         Destroy(friendSlot.gameObject);
     }
     _friendSlotList1.Clear();
     if (GameData.RandomTeamMemberList != null)
     {
         for (int i = 0; i < GameData.RandomTeamMemberList.Count; i++)
         {
             var friendInfo = GameData.RandomTeamMemberList[i];
             var go         = PrefabHelper.InstantiateAndReset(Reinforce1SlotTemplate, Grid1.transform);
             go.name = i.ToString(CultureInfo.InvariantCulture);
             go.SetActive(true);
             var cs = go.GetComponent <Reinforce1Slot>();
             cs.SetAndRefresh(friendInfo, OnSelectFriend1, null);
             cs.ToggleSelected(false);
             _friendSlotList1.Add(cs);
             go.GetComponent <UIDragPanelContents>().draggablePanel = DraggablePanel1;
         }
     }
     Grid1.repositionNow = true;
     Reinforce1SlotTemplate.SetActive(false);
 }
예제 #6
0
 public void Refresh(List <Mail> mailList)
 {
     if (CommonData.MailList == null)
     {
         foreach (var mailSlot in _mailSlots)
         {
             mailSlot.gameObject.SetActive(false);
         }
     }
     else
     {
         while (_mailSlots.Count < mailList.Count)
         {
             var mailSlot = PrefabHelper.InstantiateAndReset <MailSlot>(MailSlotTemplate, Grid.transform);
             mailSlot.name = "Slot" + _mailSlots.Count;
             _mailSlots.Add(mailSlot);
         }
         for (int i = 0; i < _mailSlots.Count; i++)
         {
             if (i < mailList.Count)
             {
                 _mailSlots[i].gameObject.SetActive(true);
                 _mailSlots[i].SetAndRefresh(mailList[i]);
             }
             else
             {
                 _mailSlots[i].gameObject.SetActive(false);
             }
         }
     }
     Grid.repositionNow = true;
     MailSlotTemplate.SetActive(false);
 }
예제 #7
0
        public void Refresh()
        {
            _challengeLevelConfig =
                ConfigManager.GetConfig(ConfigManager.ConfigType.ChallengeLevelConfig) as ChallengeLevelConfig;
            if (_challengeLevelConfig == null)
            {
                Debug.LogError("没有ChallengeLevelConfig,玩个毛");
                return;
            }
            while (MajorLevelSectorList.Count < _challengeLevelConfig.MajorLevelList.Count)
            {
                MajorLevelSectorList.Add(null);
            }
            for (int i = 0; i < _challengeLevelConfig.MajorLevelList.Count; i++)
            {
                if (MajorLevelSectorList[i] == null)
                {
                    MajorLevelSectorList[i]      = PrefabHelper.InstantiateAndReset(MajorLevelSectorTemplate, transform);
                    MajorLevelSectorList[i].name = "MajorLevelSector " + i;
                    MajorLevelSectorList[i].SetActive(true);
                    MajorLevelSectorList[i].transform.localEulerAngles = new Vector3(0, 0, -i * OffsetAngle);
                }

                var majorLevelId = _challengeLevelConfig.MajorLevelList[i].MajorLevelId;
                var cui          = CommonData.ChallengeUnlockInfoList.Find(
                    x => x.MajorLevelId == majorLevelId);

                MajorLevelSectorList[i].GetComponentInChildren <Island>()
                .SetAndRefresh(PushLevelUI, majorLevelId, cui,
                               _challengeLevelConfig.MajorLevelList[i]);
            }
            //LastNotOpenSign.name = "MajorLevelButton " + CommonData.ChallengeUnlockInfoList.Count;

            MajorLevelSectorTemplate.SetActive(false);
        }
예제 #8
0
    //[Server]
    //只在Server执行
    public void CreateProjectile(Vector3 displacement)
    {
        var ratio = 0.9f;

        //var go = Network.Instantiate(ArrowPrefab, Vector3.zero, Quaternion.identity, 0);
        var go = PrefabHelper.InstantiateAndReset(Info.ProjectilePrefab, null);

        go.transform.position = LaunchPoint.position;
        go.transform.forward  = displacement;
        var rigid      = go.GetComponent <Rigidbody>();
        var projectile = go.GetComponent <Projectile>();

        if (Info.IsSpeedFixed)
        {
            rigid.velocity = Info.InitialSpeed * displacement.normalized;
        }
        else
        {
            var actualDisplacement = displacement.normalized *
                                     (displacement.magnitude - LaunchPoint.localPosition.z);
            const float tanTheta = 1;
            var         vx       = Mathf.Sqrt(actualDisplacement.magnitude * projectile.Gravity / 2 / tanTheta);
            var         vy       = vx * tanTheta;
            rigid.velocity = vx * actualDisplacement.normalized + vy * Vector3.up;
        }
        projectile.Launcher = Caster;
        NetworkServer.Spawn(go);
    }
예제 #9
0
        void SetAndRefresh(Communication.Proto.Leaderboard leaderboard)
        {
            _leaderboard = leaderboard;

            for (int i = 0; i < Count; i++)
            {
                if (i < _leaderboard.ItemList.Count)
                {
                    if (_leaderboardSlots[i] == null)
                    {
                        var go = PrefabHelper.InstantiateAndReset(MySlot.gameObject, Grid.transform);
                        go.name = "Slot " + i;
                        _leaderboardSlots[i] = go.GetComponent <LeaderboardSlot>();
                    }
                    if (_leaderboardSlots[i] != null)
                    {
                        _leaderboardSlots[i].gameObject.SetActive(true);
                        _leaderboardSlots[i].SetAndRefresh(_leaderboard.ItemList[i]);
                    }
                }
                else
                {
                    if (_leaderboardSlots[i] != null)
                    {
                        _leaderboardSlots[i].gameObject.SetActive(false);
                    }
                }
            }
            Grid.repositionNow = true;

            MySlot.SetAndRefresh(_leaderboard.MyItem);
        }
예제 #10
0
 public void Preload(int count = 20)
 {
     while (CandyPoolQueue.Count < count)
     {
         Enqueue(PrefabHelper.InstantiateAndReset(Instance.CandyPrefab, Instance.transform));
     }
 }
예제 #11
0
        public void CreateAddEnergyFloatingLabel(Vector2 localPos, long addEnergy)
        {
            var fl = PrefabHelper.InstantiateAndReset <FloatingLabel>(AddEnergyLabelPrefab, transform);

            fl.Reset(string.Format("{0}蓄力", addEnergy), 1f);
            fl.transform.localPosition = localPos;
        }
예제 #12
0
        public void Refresh()
        {
            var skillConfig = ConfigManager.GetConfig(ConfigManager.ConfigType.SkillConfig) as SkillConfig;

            if (skillConfig != null)
            {
                if (_slotList == null)
                {
                    _slotList = new SkillSlot[skillConfig.SkillList.Count];
                }
                else if (_slotList.Length != skillConfig.SkillList.Count)
                {
                    foreach (var slot in _slotList.Where(slot => slot != null))
                    {
                        Destroy(slot.gameObject);
                    }
                    _slotList = new SkillSlot[skillConfig.SkillList.Count];
                }
                for (var i = 0; i < skillConfig.SkillList.Count; i++)
                {
                    if (_slotList[i] == null)
                    {
                        var slot = PrefabHelper.InstantiateAndReset <SkillSlot>(SlotTemplate, Grid.transform);
                        _slotList[i] = slot;
                    }
                    _slotList[i].name = i.ToString(CultureInfo.InvariantCulture);

                    _slotList[i].SetAndRefresh(skillConfig.SkillList[i]);
                }
            }
            SlotTemplate.SetActive(false);
        }
예제 #13
0
    public void RpcPlayPointEffect(Vector3 location)//TODO:和Destroy同时故无法在客户端生效
    {
        var go = PrefabHelper.InstantiateAndReset(ExplodePrefab, null);

        go.transform.position = location;
        Destroy(go, 10);
    }
예제 #14
0
        public void StripeHSpecialPopEffect(IntVector2 ij, int genre)
        {
            var go = PrefabHelper.InstantiateAndReset(HEffectPrefab, transform);

            go.transform.localPosition = GameManager.Instance.MyGrid.GetCellPosition(ij);
            Destroy(go, 3);
        }
예제 #15
0
    void Refresh(List <LeaderboardItem> leaderboardItems, LeaderboardItem myItem)
    {
        if (leaderboardItems != null)
        {
            var count = Mathf.Min(10, leaderboardItems.Count);
            SlotTemplate.SetActive(false);
            for (int i = 0; i < count; i++)
            {
                var go = PrefabHelper.InstantiateAndReset(SlotTemplate, Grid.transform);
                go.SetActive(true);
                go.name = SlotTemplate.name + i.ToString("000");
                var slot = go.GetComponent <LeaderboardSlot>();
                SlotList.Add(slot);
                var item = leaderboardItems[i];
                slot.Refresh(item.Rank, item.Nickname, item.Score);
            }
        }
        Grid.repositionNow = true;

        if (myItem != null)
        {
            MySlot.Refresh(myItem.Rank, myItem.Nickname, myItem.Score);
            var nickname = "";// ForeverDataHolder.Nickname;
            if (string.IsNullOrEmpty(nickname))
            {
                GrpNoNickname.SetActive(true);
                MySlot.LblNickname.text = "请输入昵称";
            }
            else
            {
                GrpNoNickname.SetActive(false);
                MySlot.LblNickname.text = nickname;
            }
        }
    }
예제 #16
0
        public void CreatePraiseLabel(int multiple)
        {
            var    fl = PrefabHelper.InstantiateAndReset <FloatingLabel>(PraiseLabelPrefab, transform);
            string text;

            switch (multiple)
            {
            case 2:
                text = "Good\n×2";
                break;

            case 3:
                text = "Awesome\n×3";
                break;

            case 4:
                text = "Perfect\n×4";
                break;

            default:
                text = "Holy Shit!!!\n×" + multiple;
                break;
            }
            fl.Reset(text, 0.5f);
        }
예제 #17
0
        public void CreateAddComboLabel(Vector2 localPos, int multiple)
        {
            var fl = PrefabHelper.InstantiateAndReset <FloatingLabel>(ComboLabelPrefab, transform);

            fl.Reset(string.Format("Combo\n蓄力×{0}", multiple), 1f);
            fl.transform.localPosition = localPos;
        }
예제 #18
0
        public static void CreateExplodeEffect(Vector2 pos)
        {
            var go = PrefabHelper.InstantiateAndReset(Instance.ExplodeEffectPrefab, GameManager.Container);

            go.transform.localPosition = pos;
            Destroy(go, 1);
        }
예제 #19
0
        public void SetAndRefresh(int majorId, SubLevelUnlockInfo subLevelUnlockInfo, SubLevelData subLevelData)
        {
            _majorId            = majorId;
            _subLevelUnlockInfo = subLevelUnlockInfo;
            _subLevelData       = subLevelData;
            LblNum.text         = _subLevelData.SubLevelId.ToString();
            var unlocked  = _subLevelUnlockInfo != null && _subLevelUnlockInfo.Unlocked;
            var starCount = _subLevelUnlockInfo != null ? _subLevelUnlockInfo.CurrentStar : 0;

            SprPoint.color = unlocked ? Color.white : Color.gray;
            for (int i = 0; i < 3; i++)
            {
                Stars[i].SetActive(i < starCount);
            }
            if (unlocked && starCount == 0)
            {
                if (!_standOnArrow)
                {
                    _standOnArrow = PrefabHelper.InstantiateAndReset(StandOnArrowPrefab, transform);
                }
            }
            else
            {
                Destroy(_standOnArrow);
            }
        }
예제 #20
0
        public void Bomb5SpecialPopEffect(IntVector2 ij, int genre)
        {
            var go = PrefabHelper.InstantiateAndReset(Bomb5EffectPrefab, transform);

            go.transform.localPosition = GameManager.Instance.MyGrid.GetCellPosition(ij);
            Destroy(go, 3);
            AudioManager.PlayOneShot(BombPopEffectAudio);
        }
예제 #21
0
 protected void ShowIfHidden()
 {
     if (!_noticeNumberLabel)
     {
         _noticeNumberLabel = PrefabHelper.InstantiateAndReset <NoticeLabel>(NoticeLabel.Prefab, transform);
         _noticeNumberLabel.transform.localPosition = Position;
     }
 }
예제 #22
0
        public void CreateDamagePanel(bool isMe, int damage)
        {
            var label = PrefabHelper.InstantiateAndReset <UILabel>(DamageLabelPrefab, transform);

            label.text = string.Format("-{0}", damage);
            label.transform.localPosition = isMe ? DamageLabelPosMine : DamageLabelPosOpponent;
            TweenPosition.Begin(label.gameObject, 2, label.transform.localPosition + new Vector3(0, 50, 0));
            Destroy(label.gameObject, 5);
        }
예제 #23
0
        public void PlayLockBreakEffect(Vector2 localPos)
        {
            var go = PrefabHelper.InstantiateAndReset(LockBreakEffectPrefab, transform);

            go.transform.localPosition = localPos;
            Destroy(go, 3);

            AudioManager.PlayOneShot(GameManager.Instance.MyGrid.LockBreakAudio);
        }
예제 #24
0
 public static BaseUI LoadUI(GameObject prefab, bool useAnimation)
 {
     if (Instance.CurrentUI)
     {
         Instance.CurrentUI.ExitStage(useAnimation);
     }
     Instance.CurrentUI = PrefabHelper.InstantiateAndReset <BaseUI>(prefab, UIParent);
     return(Instance.CurrentUI);
 }
예제 #25
0
        public void CharacterDie(bool isOur, int characterIndex)
        {
            var go = PrefabHelper.InstantiateAndReset(GravePrefab, transform);

            go.transform.localPosition =
                (isOur ? GameManager.Instance.OurCharacterList : GameManager.Instance.RivalCharacterList)[characterIndex
                ].transform.localPosition;
            StartCoroutine(HideCharacter(isOur, characterIndex));
        }
예제 #26
0
 public void PrepareAllCandys(int countEachGenre)
 {
     for (int genre = 0; genre < Candy.MaxGenreCount; genre++)
     {
         while (GenreCandyBAPoolList[genre].Count < countEachGenre)
         {
             Enqueue(PrefabHelper.InstantiateAndReset(Instance.CandyBoneAnimationPrefabList[genre], Instance.transform));
         }
     }
 }
예제 #27
0
    private void _Create(string text)
    {
        Destroy(_toast);
        var mft = PrefabHelper.InstantiateAndReset <MorlnFloatingToast>(ToastTemplate, transform);

        mft.gameObject.SetActive(true);
        mft.SetText(text);
        _toast = mft.gameObject;
        Destroy(_toast, _toast.GetComponent <Animation>().clip.length);
    }
예제 #28
0
    public void RpcPlayPointEffect(Vector3 location)//TODO:和Destroy同时故无法在客户端生效
    {
        Debug.Log("RpcPlayPointEffect(" + location);
        var go = PrefabHelper.InstantiateAndReset(ExplodePrefab, null);

        go.transform.position = location;
        var ptc = go.GetComponent <ParticleSystem>();

        Destroy(go, (ptc ? ptc.duration : 0) + 10);
    }
    public void CreateBunkerGizmo(Bunker bunker)
    {
        var go = PrefabHelper.InstantiateAndReset(BunkerGizmoPrefab, transform);

        go.transform.position = bunker.transform.position.SetV3Y(0.1f);
        var gizmo = go.GetComponent <BunkerGizmo>();

        bunker.Gizmo = gizmo;
        gizmo.Init(bunker);
    }
예제 #30
0
 public static GameObject Dequeue()
 {
     if (Instance.CandyPoolQueue.Count > 0)
     {
         var go = Instance.CandyPoolQueue.Dequeue();
         go.SetActive(true);
         return(go);
     }
     return(PrefabHelper.InstantiateAndReset(Instance.CandyPrefab, Instance.transform));
 }