コード例 #1
0
        //Changed by Xhj. use info as Parameter
        public IFish SpawnFish(FishInfo info)
        {
            //iType = 23;
            IFish fish = fishPoolMgr.Spawn(info.fishType);

            if (fish == null)
            {
                DebugLogger.LogWarning(eLogType.LT_LOGIC, info.fishType.ToString() + " fish spawn failed");
                return(null);
            }
            fish.Init();
            fish.FishID     = info.fishId;
            fish.LifeTime   = info.expireTime;
            fish.Lottery    = info.lottery;
            fish.CreateTime = info.createTime;
            fish.EscapeTime = info.escapePlace / 100f;
            ILevelObj obj = fish as ILevelObj;

            obj.level = this;
            FishPath path = SceneMgr.Instance.GetFishPath(info.pathId - 1);

            if (path != null)
            {
                fish.SetPath(path.start.position, path.end.position);
            }
            else
            {
                DebugLogger.LogWarning(eLogType.LT_LOGIC, "path not exist");
            }
            return(fish);
        }
コード例 #2
0
ファイル: FishPoolManager.cs プロジェクト: swiftliang/NewGame
        public IFish Spawn(int iType)
        {
            ResFishInfo info = InfoManager.Instance.GetFishInfo(iType);

            if (info == null)
            {
                DebugLogger.LogWarning(eLogType.LT_LOGIC, "no fish type: " + iType.ToString());
                return(null);
            }
            if (this._pools.ContainsKey(info.name))
            {
                return(this._pools[info.name].Get());
            }
            return(null);
        }
コード例 #3
0
        private void _detectFish()
        {
            if (_hookedFishes.Count + _nCountOfApplyedTouchFishes < _nCountOfHooks)
            {
                //_hits = Physics.SphereCastAll(_transHook.position + Vector3.back, _fHookRadius, Vector3.forward);
                __hits = Physics2D.CircleCastAll(new Vector2(_transHook.position.x, _transHook.position.y), _fHookRadius, Vector2.zero);
                if (__hits.Length > 0)
                {
                    foreach (RaycastHit2D hit in __hits)
                    {
                        IFish fish = hit.collider.transform.GetComponentInParent <IFish>();
                        if (fish == null)
                        {
                            DebugLogger.LogWarning(eLogType.LT_LOGIC, " Hook something not fish!");
                            continue;
                        }

                        hit.collider.SetActive(false);//Deactivate collider of hooked fish
                        _waitForResultFishs.Add(fish.FishID, fish);
                        _level.fishMgr.fishes.Remove(fish.FishID);
                        //fish.RemoveLottery();//身上显示的彩票数取消
                        _nCountOfApplyedTouchFishes++;
                        NetWorkManager.Instance.reqTouchFish(fish.FishID, result =>
                        {
                            if (result != Constants.SUCCESS)
                            {
                                _nCountOfApplyedTouchFishes--;
                            }
                        });
                        if (_hookedFishes.Count + _nCountOfApplyedTouchFishes >= _nCountOfHooks)
                        {
                            break;
                        }
                    }
                }
            }
        }
コード例 #4
0
        //1. get hook gameObject
        //2. add component
        //3. activate
        //4. Init
        //5. OnEnter
        //6. Add it into Map
        public void NewEnter(Message msg)
        {
            MessageSycHook allhookInfo = JsonReader.Deserialize <MessageSycHook>(msg.rawString);
            int            iCount      = allhookInfo.playerList.Count;

            if (iCount == 1)
            {
                HookInfo info = allhookInfo.playerList[0];
                this.PassTime = info.enterTime;
                HookPos        hookPos  = (HookPos)Enum.Parse(typeof(HookPos), info.chairId);
                AllStuffNeeded allStuff = SceneMgr.Instance.hookPosAllStuffMap[hookPos];
                hook = allStuff.gmObjRealPoleEnd.AddComponent <Hook>();

                allStuff.gmObjBoat.SetActive(true);
                FloatEffect floatEffect = allStuff.gmObjBoat.AddComponent <FloatEffect>();
                floatEffect.Init();
                floatEffect.StartEffect();

                hook.gameObject.SetActive(true);
                hook.Init(hookPos);
                hook.OnEnter(info.enterTime, _player, allStuff);
                uIDHookMap.Add(info.uid, hook);

                _raisePlayerInitCompleteEvent(hook.hookPos);
                _raisePlayerChangeEvent(hook.hookPos, true);
                _raiseScoreChangeEvent(hook.hookPos, _player.Score);
                raiseLotteryChangeEvent(hook.hookPos, _player.Lottery);
                raiseHookPowerEvent(1);
            }
            else if (iCount == 2)
            {
                this.PassTime = Mathf.Max(allhookInfo.playerList[0].enterTime, allhookInfo.playerList[1].enterTime);
                for (int i = 0; i < iCount; i++)
                {
                    HookInfo info = allhookInfo.playerList[i];
                    if (info.uid == Game.Instance.player.UID)
                    {
                        if (hook == null)
                        {
                            this.PassTime = info.enterTime;
                            HookPos        hookPos  = (HookPos)Enum.Parse(typeof(HookPos), info.chairId);
                            AllStuffNeeded allStuff = SceneMgr.Instance.hookPosAllStuffMap[hookPos];
                            hook = allStuff.gmObjRealPoleEnd.AddComponent <Hook>();

                            allStuff.gmObjBoat.SetActive(true);
                            FloatEffect floatEffect = allStuff.gmObjBoat.AddComponent <FloatEffect>();
                            floatEffect.Init();
                            floatEffect.StartEffect();

                            hook.gameObject.SetActive(true);
                            hook.Init(hookPos);
                            hook.OnEnter(info.enterTime, _player, allStuff);
                            uIDHookMap.Add(info.uid, hook);

                            _raisePlayerInitCompleteEvent(hook.hookPos);
                            _raisePlayerChangeEvent(hook.hookPos, true);
                            _raiseScoreChangeEvent(hook.hookPos, _player.Score);
                            raiseLotteryChangeEvent(hook.hookPos, _player.Lottery);
                            raiseHookPowerEvent(1);
                        }
                    }
                    else if (info.uid != Game.Instance.player.UID)
                    {
                        HookPos        hookPos  = (HookPos)Enum.Parse(typeof(HookPos), info.chairId);
                        AllStuffNeeded allStuff = SceneMgr.Instance.hookPosAllStuffMap[hookPos];
                        if (oHook == null)
                        {
                            oHook = allStuff.gmObjRealPoleEnd.AddComponent <OHook>();
                            //Assume that player can't change position in level
                            oHook.Init(hookPos);

                            FloatEffect floatEffect = allStuff.gmObjBoat.AddComponent <FloatEffect>();
                            floatEffect.Init();
                            floatEffect.StartEffect();
                        }
                        allStuff.gmObjBoat.SetActive(true);
                        oHook.gameObject.SetActive(true);
                        uIDHookMap.Add(info.uid, oHook);

                        //Init oPlayer(no definition, just intialize it)
                        _oPlayer.UID     = info.uid;
                        _oPlayer.Score   = info.score;
                        _oPlayer.Lottery = info.lottery;
                        uIDPlayerMap.Add(info.uid, _oPlayer);

                        oHook.OnEnter(info.enterTime, _oPlayer, allStuff);


                        oHook.ChangeHooks(info.hook);
                        _raisePlayerChangeEvent(oHook.hookPos, true);
                        _raiseScoreChangeEvent(oHook.hookPos, _oPlayer.Score);
                        raiseLotteryChangeEvent(oHook.hookPos, _oPlayer.Lottery);
                    }
                }
            }
            else
            {
                DebugLogger.LogWarning(eLogType.LT_LOGIC, iCount + " hooks, out of bound!");
            }
        }