//------------------------------------------------------------------------- public FishParticleMgr(CRenderScene render_scene, CRenderFish fish, int fish_vib_id, ISpriteFish sprite_fish) { mScene = render_scene; mCRenderFish = fish; mParticlemanager = mScene.getParticlemanager(); mISpriteFish = sprite_fish; mFishData = EbDataMgr.Instance.getData <TbDataFish>(fish_vib_id); //解析鱼带的特效数据并保存下来,等待鱼指定播放特效 foreach (var it in mFishData.ParticleArray) { if (null == it.TbDataParticle || it.TbDataParticle.Id <= 0) { continue; } TbDataFish.ParticleProduceTimeEnum time_enum = (TbDataFish.ParticleProduceTimeEnum)it.ParticleProduceTime; if (!mDicParticleData.ContainsKey(time_enum)) { mDicParticleData[time_enum] = new List <TbDataFish.ParticleDataStruct>(); } mDicParticleData[time_enum].Add(it); } }
//------------------------------------------------------------------------- void _hitFish(CRenderFish render_fish) { if (mRenderFishID.Contains(render_fish.FishObjId)) { return; } mMaxHitFish--; addFishList(render_fish); if (!render_fish.canHitByFishNet()) { return; } if (mScene.getMyPlayerId() == mPlayerId) { List <string> vec_param = new List <string>(); vec_param.Add("playerFishNetHit"); vec_param.Add(mPlayerId.ToString()); vec_param.Add(render_fish.FishObjId.ToString()); mScene.getListener().onSceneRender2Logic(vec_param); } }
//------------------------------------------------------------------------- public void setAim(CRenderFish lock_fish) { if (mScene.isBot()) { return; } mCSpriteTurretScoreShow.setAim(lock_fish); }
//------------------------------------------------------------------------- public void displayLinkFish(CRenderFish fish) { if (mScene.isBot()) { return; } mSpriteTurret.displayLinkFish(fish); }
//------------------------------------------------------------------------- public void setAim(CRenderFish lock_fish) { if (mCRenderTurret.getVibTurret().AimParticle.Id <= 0) { return; } StillParticle still_particle = mScene.getParticlemanager().newParticle(mCRenderTurret.getVibTurret().AimParticle.ParticlePrefabName); mAimParticle = new AimParticle(lock_fish, still_particle); }
//------------------------------------------------------------------------- public void create(Color color, uint et_player_rpcid, CRenderFish hit_by_bullet_fish, CRenderScene scene, string animation_name) { mScene = scene; mPlayerId = et_player_rpcid; mCSpriteFishNetGroup = new CSpriteFishNetGroup(); mCSpriteFishNetGroup.create(mScene, color, mPlayerId, animation_name); mCSpriteFishNetGroup.setTrigger(true); mCSpriteFishNetGroup.setColor(color); mCSpriteFishNetGroup.onTriggerEnter += OnTriggerEnter; addFishList(hit_by_bullet_fish); }
//------------------------------------------------------------------------- void _hitFish(CRenderFish render_fish) { if (render_fish == null || render_fish.IsDie) { return; } uint et_player_rpcid = mBullet.getPlayerId(); if (mBullet.getScene().getMyPlayerId() == et_player_rpcid) { mBullet.getScene().getProtocol().c2sFishHit(et_player_rpcid, mBullet.getBulletObjId(), render_fish.FishObjId); } mBullet.signDestroy(); mIsSignDestroy = true; CRenderTurret turret = mBullet.getScene().getTurret(et_player_rpcid); if (turret == null) { return; } TbDataTurret vib_turret = turret.getVibTurret(); Dictionary <string, object> map_param = new Dictionary <string, object>(); map_param.Add("SourcePosition", getHitPosition(render_fish.Position, mBullet.getPosition())); map_param["NetColor"] = mBullet.getScene().getTurret(et_player_rpcid).getTurretColor(); map_param["PlayerId"] = et_player_rpcid; map_param["BulletHitFish"] = render_fish; TbDataBullet buttlt_data = mBullet.getBulletData(); mBullet.getScene().addEffect(buttlt_data.EffectCompose.Id, map_param, EffectTypeEnum.Client); if (!string.IsNullOrEmpty(mHitParticle.ParticlePrefabName)) { StillParticle particle = mScene.getParticlemanager().newParticle(mHitParticle.ParticlePrefabName); particle.setPosition(getHitPosition(render_fish.Position, mBullet.getPosition())); particle.setLayer(mScene.getLayerAlloter().getLayer(_eLevelLayer.FishHitParticle)); } }
//------------------------------------------------------------------------- void OnTriggerEnter(Collider other) { if (mMaxHitFish <= 0) { mCSpriteFishNetGroup.setTrigger(false); return; } if ("CSpriteFish" != other.gameObject.tag) { return; } FishStillSprite sprite_fish = other.gameObject.GetComponent <FishStillSprite>(); CRenderFish render_fish = sprite_fish.getSpriteFish().getRenderFish(); if (render_fish != null) { _hitFish(render_fish); } }
//------------------------------------------------------------------------- void addFishList(CRenderFish fish) { mRenderFishID.Add(fish.FishObjId); }
//------------------------------------------------------------------------- public void displayLinkFish(CRenderFish fish) { mLinkLockedFishFeature.display(fish); }
//------------------------------------------------------------------------- public AimParticle(CRenderFish lock_fish, StillParticle still_particle) { mLockFish = lock_fish; mStillParticle = still_particle; mStillParticle.setLooping(false); }