示例#1
0
    int SortByMultiple(Fishing_Fish a, Fishing_Fish b)//按倍率从大到小排列
    {
        FishingFishData dataA = Fishing_Data.GetInstance().m_FishData[a.m_nTypeId];
        FishingFishData dataB = Fishing_Data.GetInstance().m_FishData[b.m_nTypeId];

        return(dataB.m_nMultiple - dataA.m_nMultiple);
    }
示例#2
0
    public void Init(CGame_Fishing game, splineMove move, uint index, byte typeId)
    {
        AssetBundle ab = game.FishingAssetBundle;

        m_Animator       = GetComponent <Animator>();
        m_Animator.speed = 0f;
        m_SplineMove     = move;
        m_nOnlyId        = index;
        m_nTypeId        = typeId;

        m_Renderers = gameObject.GetComponentsInChildren <Renderer>();
        foreach (Renderer child in m_Renderers)
        {
            child.enabled = false;
        }

        if (m_SplineMove != null)
        {
            if (m_SplineMove.loopType != splineMove.LoopType.loop)
            {
                m_SplineMove.tween.OnComplete(OnComplete);
            }
            m_SplineMove.tween.OnPlay(OnPlay);
        }
        else
        {
            OnPlay();
        }

        m_LockSitList.Clear();
        m_LockPointTfm = transform.parent.Find("Point_LockTarget");

        FishingFishData fd = Fishing_Data.GetInstance().m_FishData[m_nTypeId];

        if (fd.m_nHitAudio != 0)
        {
            m_HitSound      = gameObject.AddComponent <AudioSource>();
            m_HitSound.clip = ab.LoadAsset <AudioClip>(CustomAudioDataManager.GetInstance().GetSoundName(fd.m_nHitAudio));
        }
        if (fd.m_nDeadAudio != 0)
        {
            m_DeadSound      = gameObject.AddComponent <AudioSource>();
            m_DeadSound.clip = ab.LoadAsset <AudioClip>(CustomAudioDataManager.GetInstance().GetSoundName(fd.m_nDeadAudio));
        }
        if (fd.m_szTalk.Length > 0)
        {
            m_TalkObj = (GameObject)ab.LoadAsset("talk_Image_BG");
            m_TalkObj = (GameObject)Instantiate(m_TalkObj);
            m_TalkObj.GetComponentInChildren <Text>().text = fd.m_szTalk;
            m_TalkObj.transform.SetParent(game.MainUITfm.Find("point_talk"), false);
            Invoke("ShowTalk", fd.m_nTalkInterval);
            Invoke("HideTalk", fd.m_nTalkInterval + fd.m_nTalkShowTime);
            UpdateTalk();
            m_TalkObj.SetActive(false);
        }
    }
示例#3
0
    Fishing_Fish[] CreatFish(byte fishTypeId, FishingPathData pd, Transform parent, PathManager pm, uint fishId, int count, float passTime, byte group, byte index)
    {
        if (!Fishing_Data.GetInstance().m_FishData.ContainsKey(fishTypeId))
        {
            DebugLog.LogError("fish:" + fishTypeId + " data is error!!");
            return(null);
        }

        FishingFishData fd     = Fishing_Data.GetInstance().m_FishData[fishTypeId];
        GameObject      prefab = (GameObject)m_GameBase.FishingAssetBundle.LoadAsset(fd.m_szFish);

        int arrayCount = pd.m_Offsets.Count > 0 ? pd.m_Offsets.Count : 1;

        Debug.Assert(count != 0 && count <= arrayCount, "create fish count wrong!!");

        Fishing_Fish[] fishs = new Fishing_Fish[count];
        for (uint j = 0; j < count; j++)
        {
            GameObject go = (GameObject)GameMain.instantiate(prefab);
            go.transform.SetParent(parent, false);
            splineMove sm = go.AddComponent <splineMove>();
            sm.local            = true;
            sm.lookAhead        = 0.01f;
            sm.forwardDir       = Vector3.right;
            sm.pathMode         = PathMode.Ignore;
            sm.offset           = index < pd.m_Offsets.Count ? pd.m_Offsets[index] : Vector3.zero;
            sm.waypointRotation = (fd.m_nRotType == 1) ? splineMove.RotationType.all : splineMove.RotationType.none;
            if (m_GameBase.IsMirror())
            {
                sm.eulerAngles = (fd.m_nRotType == 1) ? new Vector3(180f, 0f, 0f) : new Vector3(0f, 0f, 180f);
            }
            else
            {
                sm.eulerAngles = Vector3.zero;
            }
            sm.speed    = fd.m_GroupSpeed[group];
            sm.loopType = pd.m_bLoop ? splineMove.LoopType.loop : splineMove.LoopType.none;
            sm.SetPath(pm);
            sm.GoTo(GetPathPassTime(passTime, sm, pd));

            if (FishPause)
            {
                sm.Pause();
            }

            Fishing_Fish fish = go.transform.Find("skin").gameObject.AddComponent <Fishing_Fish>();
            fish.Init(m_GameBase, sm, fishId + j, fishTypeId);
            fish.OnDeath += RemoveFish;
            fishs[j]      = fish;
            m_FishDict.Add(fish.m_nOnlyId, fish);
        }
        return(fishs);
    }
示例#4
0
    IEnumerator PopCoin(Fishing_Fish fish, FishingFishData fd, bool bLocal, long getCoin, Vector3 center, Vector3 targetPos, byte getSkillId)
    {
        //DebugLog.Log("num:" + num + " center:" + center + " target:" + targetPos);

        if (getCoin <= 0)
        {
            yield break;
        }

        CGame_Fishing game = fish.m_CatchRole.GameBase;
        AssetBundle   ab   = game.FishingAssetBundle;
        Canvas        cv   = game.GameCanvas;
        Transform     root = cv.transform.Find("Root");

        GameObject prefab;

        GameObject big = null;

        if (fd.m_nMultiple >= 20)
        {
            prefab = (GameObject)ab.LoadAsset("FishCoin_big");
            big    = ((GameObject)GameMain.instantiate(prefab));
            big.transform.SetParent(root, false);
            big.transform.localPosition = center;
            game.m_AddItems.Add(big);

            Camera.main.DOShakePosition(1f, 1f).OnComplete(() =>
            {
                Camera.main.transform.position = game.CameraSourcePos;
            });

            CustomAudioDataManager.GetInstance().PlayAudio(1004);
        }
        else
        {
            CustomAudioDataManager.GetInstance().PlayAudio(1003);
        }

        yield return(new WaitUntil(() => m_bDeathEnd));

        Transform effectTfm = fish.transform.parent.Find("Effect");

        if (effectTfm != null)
        {
            effectTfm.DOScale(Vector3.zero, 1f);
        }
        fish.transform.parent.DOScale(Vector3.zero, 1f);

        prefab = (GameObject)ab.LoadAsset(bLocal ? "Text_HurtNum" : "Text_HurtNum_other");
        GameObject textObj = ((GameObject)GameMain.instantiate(prefab));

        textObj.transform.SetParent(root.Find("HurtNum"), false);
        textObj.transform.localPosition = center;
        textObj.transform.localScale    = Vector3.zero;
        textObj.transform.GetComponent <Text>().text = GameFunction.FormatCoinText(getCoin, true, false);
        game.m_AddItems.Add(textObj);
        textObj.transform.DOScale(new Vector3(1f, 1f, 1f), 0.5f).OnComplete(() =>
        {
            textObj.transform.DOScale(new Vector3(1f, 1f, 1f), 0.5f).OnComplete(() =>
            {
                game.m_AddItems.Remove(textObj);
                Destroy(textObj);
            });
        });

        bool bCoin = true;

        if (getSkillId > 0 && bLocal)
        {
            if (getSkillId == RoomInfo.NoSit)//lottery
            {
                prefab = (GameObject)ab.LoadAsset("Skill_Ticket");
                bCoin  = false;
            }
            else
            {
                prefab = (GameObject)ab.LoadAsset("Skill_" + getSkillId);
            }
            if (prefab != null)
            {
                GameObject skillObj = Instantiate(prefab);
                skillObj.transform.SetParent(root, false);
                skillObj.transform.localPosition = center;
                game.m_AddItems.Add(skillObj);
                skillObj.transform.DOLocalMove(center + new Vector3(0, 100f, 0f), 1f).OnComplete(() =>
                {
                    game.m_AddItems.Remove(skillObj);
                    Destroy(skillObj);
                });
            }
        }

        if (bCoin)
        {
            int   num    = Mathf.CeilToInt((float)fd.m_nMultiple / 5) + 2;
            float radius = (num - 1) * 10f;
            float halfPi = Mathf.PI * 0.5f;
            float angle;
            prefab = (GameObject)ab.LoadAsset("FishCoin");
            GameObject coin;
            Vector3    pos;

            List <GameObject> coinList = new List <GameObject>();

            for (int i = 0; i < num; i++)
            {
                angle = Random.Range(0f, halfPi) * 4f;
                coin  = ((GameObject)GameMain.instantiate(prefab));
                coin.transform.SetParent(root, false);
                coin.transform.localPosition = center;
                pos = center + new Vector3(Mathf.Sin(angle), Mathf.Cos(angle)) * Random.Range(0f, radius);
                coin.transform.DOLocalMove(pos, 0.5f);
                //DebugLog.Log(i + ": angle:" + angle + " pos:" + pos);

                coinList.Add(coin);
                game.m_AddItems.Add(coin);

                yield return(new WaitForEndOfFrame());
            }

            yield return(new WaitForSecondsRealtime(1f));

            CustomAudioDataManager.GetInstance().PlayAudio(1002);

            float flyTime = 0.5f;

            foreach (GameObject obj in coinList)
            {
                if (obj == null)
                {
                    continue;
                }

                Vector3 dir   = targetPos - obj.transform.localPosition;
                Vector3 speed = new Vector3(dir.x / flyTime, 0f);
                float   a     = dir.y * 2f / (flyTime * flyTime);

                DOTween.To(() => obj.transform.localPosition,
                           r =>
                {
                    obj.transform.localPosition += (speed * Time.unscaledDeltaTime);
                    speed.y = speed.y + a * Time.unscaledDeltaTime;
                },
                           targetPos, flyTime);
            }

            yield return(new WaitForSecondsRealtime(flyTime));

            foreach (GameObject obj in coinList)
            {
                if (obj == null)
                {
                    continue;
                }

                game.m_AddItems.Remove(obj);
                Destroy(obj);
            }
        }

        if (big != null)
        {
            game.m_AddItems.Remove(big);
            Destroy(big);
        }
    }
示例#5
0
    void ReadFishingData()
    {
        List <string[]> strList;
        int             j;
        byte            id;
        ushort          pathId;
        byte            temp;

        CReadCsvBase.ReaderCsvDataFromAB(GameDefine.CsvAssetbundleName, "Fishing_Cannon.txt", out strList);
        int columnCount = strList.Count;

        for (int i = 2; i < columnCount; i++)
        {
            j = 0;
            FishingCannonData gamedata = new FishingCannonData();
            byte.TryParse(strList[i][j++], out id);
            gamedata.m_szCannon = strList[i][j++];
            gamedata.m_szBullet = strList[i][j++];
            float.TryParse(strList[i][j++], out gamedata.m_fBulletSpeed);
            float.TryParse(strList[i][j++], out gamedata.m_fBulletCD);
            float.TryParse(strList[i][j++], out gamedata.m_fBulletLifeTime);
            byte.TryParse(strList[i][j++], out gamedata.m_nBounceTimes);
            //float.TryParse(strList[i][j++], out gamedata.m_fExplosinRange);
            j++;
            gamedata.m_szNet = strList[i][j++];
            //int.TryParse(strList[i][j++], out gamedata.m_nBulletCost);
            j++;

            //level not read
            j++;

            gamedata.m_szBulletPoint = strList[i][j++].Split('|');
            gamedata.m_szLvPoint     = strList[i][j++];
            //gamedata.m_szIcon = strList[i][j++];
            j++;
            int.TryParse(strList[i][j++], out gamedata.m_nAudio);

            j += 2;
            gamedata.m_szName   = strList[i][j++];
            gamedata.m_szDetail = strList[i][j++];

            m_CannonData[id] = gamedata;
        }

        strList.Clear();
        CReadCsvBase.ReaderCsvDataFromAB(GameDefine.CsvAssetbundleName, "Fishing_Path.txt", out strList);
        columnCount = strList.Count;
        for (int i = 2; i < columnCount; i++)
        {
            j = 0;
            FishingPathData gamedata = new FishingPathData();
            ushort.TryParse(strList[i][j++], out pathId);
            gamedata.m_szPath = strList[i][j++];
            float.TryParse(strList[i][j++], out gamedata.m_fSpeed);
            float.TryParse(strList[i][j++], out gamedata.m_fTime);
            byte.TryParse(strList[i][j++], out temp);
            gamedata.m_bLoop = temp == 0 ? false : true;
            string str = strList[i][j++];
            if (!string.IsNullOrEmpty(str))
            {
                string[] offsets = str.Split('@');
                string[] point;
                foreach (string oft in offsets)
                {
                    point = oft.Split('|');
                    Debug.Assert(point.Length == 3, "offset point coordinate wrong(not 3)!!");
                    Vector3 pos = new Vector3();
                    float.TryParse(point[0], out pos.x);
                    float.TryParse(point[1], out pos.y);
                    float.TryParse(point[2], out pos.z);
                    gamedata.m_Offsets.Add(pos);
                }
            }
            str = strList[i][j++];
            if (!string.IsNullOrEmpty(str))
            {
                string[] speedChange = str.Split('@');
                string[] info;
                foreach (string sc in speedChange)
                {
                    info = sc.Split('|');
                    Debug.Assert(info.Length == 3, "point change speed info is wrong(not 3)!!");
                    byte  pointIndex, endIndex;
                    float speed, time;
                    byte.TryParse(info[0], out pointIndex);
                    float.TryParse(info[1], out speed);
                    if (speed == 0f)//pause
                    {
                        float.TryParse(info[2], out time);
                        gamedata.m_ChangePoints[pointIndex] = -time;
                    }
                    else//change speed
                    {
                        byte.TryParse(info[2], out endIndex);
                        gamedata.m_ChangePoints[pointIndex] = speed;
                        gamedata.m_ChangePoints[endIndex]   = 1f;//change back
                    }
                }
            }


            m_PathData[pathId] = gamedata;
        }

        strList.Clear();
        CReadCsvBase.ReaderCsvDataFromAB(GameDefine.CsvAssetbundleName, "Fishing_Fish.txt", out strList);
        columnCount = strList.Count;
        for (int i = 2; i < columnCount; i++)
        {
            j = 0;
            FishingFishData gamedata = new FishingFishData();
            byte.TryParse(strList[i][j++], out id);
            gamedata.m_szFish = strList[i][j++];

            string[] groupspeed = strList[i][j++].Split('@');
            string[] speedStr;
            foreach (string speed in groupspeed)
            {
                speedStr = speed.Split('|');
                Debug.Assert(speedStr.Length == 2, "group speed data is wrong(not 2)!!");
                gamedata.m_GroupSpeed[byte.Parse(speedStr[0])] = float.Parse(speedStr[1]);
            }

            //float.TryParse(strList[i][j++], out gamedata.m_fHitRate);
            j++;
            int.TryParse(strList[i][j++], out gamedata.m_nMultiple);

            j += 5;
            int.TryParse(strList[i][j++], out gamedata.m_nHitAudio);
            int.TryParse(strList[i][j++], out gamedata.m_nDeadAudio);

            string[] strs = strList[i][j++].Split('|');
            if (strs.Length == 3)
            {
                byte.TryParse(strs[0], out gamedata.m_nTalkInterval);
                byte.TryParse(strs[1], out gamedata.m_nTalkShowTime);
                gamedata.m_szTalk = strs[2];
            }

            j += 3;

            byte.TryParse(strList[i][j++], out temp);
            gamedata.m_eFishType = (FishType)temp;
            gamedata.m_szName    = strList[i][j++];
            gamedata.m_szIcon    = strList[i][j++];

            byte.TryParse(strList[i][j++], out gamedata.m_nRotType);

            m_FishData[id] = gamedata;
        }
    }