//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); }
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); }
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; } } } } }
//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!"); } }