//------------------------------------------------------------------------- public void create(CRenderScene scene, TbDataFish vib_fish_data) { mScene = scene; mVibFishData = vib_fish_data; mFishCycleGap = mScene.getLayerAlloter().EachFishGap / 10f; if (mVibFishData.Type == TbDataFish.FishType.Custom) { mCycle = mScene.getRenderObjectPool().newFishStillSprite(); mCycle.init(this, scene); mCycle.playAnimation(mVibFishData.FishCompose.BackGroundAniName); mCycle.setScale((float)mVibFishData.FishCompose.BackGroundAnimationScale / 100.0f); foreach (var it in mVibFishData.FishCompose.FishComposes) { if (null != it && it.Id > 0) { TbDataFish fish_data = EbDataMgr.Instance.getData <TbDataFish>(it.FishVibId); FishStillSprite fish_sprite = mScene.getRenderObjectPool().newFishStillSprite(); fish_sprite.init(this, scene); fish_sprite.playAnimation(fish_data.FishAnimMove); fish_sprite.setScale(mFixFishScale * (float)fish_data.FishHeight / (float)fish_data.FishPixelHeight); mFishs.Add(new FishSpriteAndOffset( fish_sprite, new EbVector3(it.OffsetX, it.OffsetY, 0), fish_data.FishAnimDie)); } } } }
//--------------------------------------------------------------------- public override void create() { if (Done) { return; } int fish_vib_id = int.Parse(getServerParam()[0]); int route_vib_id = int.Parse(getServerParam()[1]); TbDataFish fish_data = EbDataMgr.Instance.getData <TbDataFish>(fish_vib_id); if (null != fish_data) { float delay_time = 0; if (null != fish_data.ChainFish && fish_data.Type == TbDataFish.FishType.ChainFish) { delay_time = (float)(fish_data.ChainFish.FishHeight) / fish_data.ChainFish.getSpeed(); for (int i = 0; i < fish_data.ChainFishNumber; i++) { newBaseEntity(fish_data.ChainFish.Id, route_vib_id, delay_time * i); } } else { newBaseEntity(fish_vib_id, route_vib_id, 0); } } setDone(); }
//------------------------------------------------------------------------- //根据vib数据创建鱼的代码全部放在这里,ISpriteFish的实现类不在需要知道TbDataFish的任何事情?// public ISpriteFish buildSpriteFish(CRenderFish render_fish, int fish_vib_id) { TbDataFish fish_data = EbDataMgr.Instance.getData <TbDataFish>(fish_vib_id); ISpriteFish sprite_fish = null; if (fish_data.Type == TbDataFish.FishType.Custom) { sprite_fish = new CSpriteCustomGroup(); } else if (fish_data.Type == TbDataFish.FishType.EvenFour) { sprite_fish = new CSpriteEvenFourFish(); } else if (fish_data.Type == TbDataFish.FishType.EvenFive) { sprite_fish = new CSpriteEvenFiveFish(); } else { sprite_fish = new CSpriteFishGroup((int)fish_data.Type); } sprite_fish.create(mScene, fish_data); sprite_fish.setRenderFish(render_fish); sprite_fish.setTag("CSpriteFish"); sprite_fish.setTrigger(true); sprite_fish.setLayer(mScene.getLayerAlloter().getFishLayer(fish_vib_id)); #if UNITY_EDITOR //ViDebuger.Warning("TkFish_vib_id_ " + fish_vib_id); sprite_fish.setGameobjectName("TkFish_vib_id_" + fish_vib_id); #endif return(sprite_fish); }
//------------------------------------------------------------------------- public void create(CRenderScene scene, TbDataFish vib_fish_data) { mScene = scene; mVibFishData = vib_fish_data; mFishCycleGap = mScene.getLayerAlloter().EachFishGap / 10f; if (mVibFishData.Type == TbDataFish.FishType.Custom) { mCycle = mScene.getRenderObjectPool().newFishStillSprite(); mCycle.init(this, scene); mCycle.playAnimation(mVibFishData.FishCompose.BackGroundAniName); mCycle.setScale((float)mVibFishData.FishCompose.BackGroundAnimationScale / 100.0f); foreach (var it in mVibFishData.FishCompose.FishComposes) { if (null != it && it.Id > 0) { TbDataFish fish_data = EbDataMgr.Instance.getData<TbDataFish>(it.FishVibId); FishStillSprite fish_sprite = mScene.getRenderObjectPool().newFishStillSprite(); fish_sprite.init(this, scene); fish_sprite.playAnimation(fish_data.FishAnimMove); fish_sprite.setScale(mFixFishScale * (float)fish_data.FishHeight / (float)fish_data.FishPixelHeight); mFishs.Add(new FishSpriteAndOffset( fish_sprite, new EbVector3(it.OffsetX, it.OffsetY, 0), fish_data.FishAnimDie)); } } } }
//------------------------------------------------------------------------- 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); } }
//------------------------------------------------------------------------- protected FishStillSprite _loadFishStillSpriteByFishId(TbDataFish.FishIdAndScaleStruct fish_id_scale) { TbDataFish fish_data = EbDataMgr.Instance.getData <TbDataFish>(fish_id_scale.FishId); FishStillSprite fish_sprite = _loadFishStillSprite(fish_data.FishAnimMove); fish_sprite.setScale(((float)fish_id_scale.Scale / 100f) * mFixFishScale * (float)fish_data.FishHeight / (float)fish_data.FishPixelHeight); return(fish_sprite); }
//------------------------------------------------------------------------- public override void load(EbPropSet prop_set) { Name = prop_set.getPropString("T_Name").get(); var prop_state = prop_set.getPropInt("I_State"); State = prop_state == null ? DataState.Default : (DataState)prop_state.get(); Fish = EbDataMgr.Instance.getData<TbDataFish>(prop_set.getPropInt("I_Fish").get()); FishAmount = prop_set.getPropInt("I_FishAmount").get(); ShoalType = (_eShoalType)prop_set.getPropInt("I_ShoalType").get(); }
//------------------------------------------------------------------------- public override void load(EbPropSet prop_set) { Name = prop_set.getPropString("T_Name").get(); var prop_state = prop_set.getPropInt("I_State"); State = prop_state == null ? DataState.Default : (DataState)prop_state.get(); Fish = EbDataMgr.Instance.getData <TbDataFish>(prop_set.getPropInt("I_Fish").get()); FishAmount = prop_set.getPropInt("I_FishAmount").get(); ShoalType = (_eShoalType)prop_set.getPropInt("I_ShoalType").get(); }
//------------------------------------------------------------------------- public override void create(CRenderScene scene, TbDataFish vib_fish_data) { base.create(scene, vib_fish_data); if (mVibFishData.Type == TbDataFish.FishType.EvenFive) { //_initSprite(154f, 80f); _initSprite(108.89f, 108.89f, 80f); } _setBackgroundSize(0.7f); }
//------------------------------------------------------------------------- public override void load(EbPropSet prop_set) { Name = prop_set.getPropString("T_Name").get(); var prop_state = prop_set.getPropInt("I_State"); State = prop_state == null ? DataState.Default : (DataState)prop_state.get(); NormalFish = EbDataMgr.Instance.getData<TbDataFish>(prop_set.getPropInt("I_NormalFish").get()); RedFish = EbDataMgr.Instance.getData<TbDataFish>(prop_set.getPropInt("I_RedFish").get()); RedFishDouble = EbDataMgr.Instance.getData<TbDataFish>(prop_set.getPropInt("I_RedFishDouble").get()); LastTime = prop_set.getPropInt("I_LastTime").get(); }
public void create(CRenderScene scene, ISpriteFish sprite_fish, TbDataFish vib_fish_data) { mScene = scene; mFixedScale = (float)vib_fish_data.CycleHeight / (float)vib_fish_data.CyclePixelHeight; initFish("red_fish_bottom_bottom", EbVector3.Zero, 130, mScene.getLayerAlloter().EachFishGap / 10f * 3, sprite_fish); //initFish("red_fish_bottom_middle", EbVector3.Zero, -130, mScene.getLayerAlloter().EachFishGap / 10f * 2, sprite_fish); initFish("red_fish_bottom_sign2", EbVector3.Zero, 0, mScene.getLayerAlloter().EachFishGap / 10f, sprite_fish); setScale(mFixedScale); }
//------------------------------------------------------------------------- public override void load(EbPropSet prop_set) { Name = prop_set.getPropString("T_Name").get(); var prop_state = prop_set.getPropInt("I_State"); State = prop_state == null ? DataState.Default : (DataState)prop_state.get(); NormalFish = EbDataMgr.Instance.getData <TbDataFish>(prop_set.getPropInt("I_NormalFish").get()); RedFish = EbDataMgr.Instance.getData <TbDataFish>(prop_set.getPropInt("I_RedFish").get()); RedFishDouble = EbDataMgr.Instance.getData <TbDataFish>(prop_set.getPropInt("I_RedFishDouble").get()); LastTime = prop_set.getPropInt("I_LastTime").get(); }
void ss() { CRenderTurret turret = mScene.getTurret(mPlayerId); if (turret == null) { return; } TbDataFish fish_data = EbDataMgr.Instance.getData <TbDataFish>(mFishVibId); turret.displayScoreTurnplate(mTotalScore, fish_data.TurnplateParticle); }
//------------------------------------------------------------------------- // 服务端广播消息:鱼死亡 public void s2allcFishDie(uint et_player_rpcid, int total_score, int bullet_objid, int fish_objid, int effect_fish_vibid, int current_rate) { CRenderFish fish = (CRenderFish)mBaseFishLordMgr.findBaseEntity(fish_objid); if (fish != null) { //fish.signDestroy(); // 销毁鱼 fish.dieWithTotalScore(et_player_rpcid, total_score); // 更新金币和筹码 CRenderTurret turret = mScene.getTurret(et_player_rpcid); if (turret != null) { //turret.setPlayerGold(gold); TbDataFish fish_data = EbDataMgr.Instance.getData <TbDataFish>(fish.FishVibId); if (fish_data.FishDisplayScoreType == TbDataFish._eDisplayScoreType.Turnplate) { //turret.displayScoreTurnplate(total_score, fish_data.TurnplateParticle.Data); } else if (fish_data.FishDisplayScoreType == TbDataFish._eDisplayScoreType.Chips) { turret.displayChips(total_score); } else if (fish_data.FishDisplayScoreType == TbDataFish._eDisplayScoreType.ChipsAndTurnplate) { turret.displayChips(total_score); //turret.displayScoreTurnplate(total_score, fish_data.TurnplateParticle.Data); } } } // 销毁子弹 if (mMapBullet.ContainsKey(et_player_rpcid)) { Dictionary <int, CRenderBullet> m = mMapBullet[et_player_rpcid]; if (!m.ContainsKey(bullet_objid)) { return; } m[bullet_objid].signDestroy(); } else { //Debug.LogError("CRenderLevel::s2allcFishDie() not found player_id=" + player_id + " when signdestroy bullet"); } }
//------------------------------------------------------------------------- public void create(int fish_vibid, int fish_objid) { mFishData = EbDataMgr.Instance.getData <TbDataFish>(fish_vibid); mFishObjId = fish_objid; mSpeed = mFishData.getSpeed(); mFishType = (TbDataFish.FishType)mFishData.Type; mMassEntity = new MassEntity(); mMassEntity.setSpeed(mSpeed); mFishCollider = mScene.getColliderMgr().newFishCollider(0, 0, 80, 80, this);//读取vib配置 update(0); }
//------------------------------------------------------------------------- public void create(int fish_vib_id, int fish_objid) { mVibFish = EbDataMgr.Instance.getData <TbDataFish>(fish_vib_id); mFishObjId = fish_objid; mISpriteFish = mScene.getSpriteFishFactory().buildSpriteFish(this, fish_vib_id); mMassEntity = new MassEntity(); mMassEntity.setSpeed(mVibFish.getSpeed()); mISpriteFish.setDirection(0); mFishParticleMgr = new FishParticleMgr(mScene, this, fish_vib_id, mISpriteFish); mFishParticleMgr.fishBorn(); mFishParticleMgr.fishMoving(); }
//------------------------------------------------------------------------- public void fishDestroy(uint et_player_rpcid, int fish_vib_id, int total_score) { List <StillParticle> particle_list = _loopBuildParticle(TbDataFish.ParticleProduceTimeEnum.FishDestroy, et_player_rpcid); foreach (var it in particle_list) { it.setLayer(mScene.getLayerAlloter().getLayer(_eLevelLayer.Particle)); } TbDataFish fish_data = EbDataMgr.Instance.getData <TbDataFish>(fish_vib_id); if (fish_data.FishDisplayScoreType == TbDataFish._eDisplayScoreType.Turnplate || fish_data.FishDisplayScoreType == TbDataFish._eDisplayScoreType.ChipsAndTurnplate) { mScene.addParticleTurnplateCaller(new ParticleTurnplateCaller(mScene, et_player_rpcid, fish_vib_id, total_score, particle_list)); } }
//------------------------------------------------------------------------- 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 createEntityParticleSystem(int fish_vib_id) { int fish_count = 1; TbDataFish fish_data = EbDataMgr.Instance.getData <TbDataFish>(fish_vib_id); if (fish_data.Type == TbDataFish.FishType.ChainFish) { fish_count = fish_data.ChainFishNumber; } int fish_begin_obj_id = getNextFishObjId(fish_count); int route_vib_id = _getRandomRouteId((TbDataFish.FishRouteCategory)EbDataMgr.Instance.getData <TbDataFish>(fish_vib_id).fishRouteCategory); List <string> server_param = new List <string>(); server_param.Add(fish_vib_id.ToString()); server_param.Add(route_vib_id.ToString()); mBaseFishLordMgr.addParticleSystem(mNormalFishParticleFileName, server_param, fish_begin_obj_id); mScene.getProtocol().s2allcCreateFishLord(mNormalFishParticleFileName, server_param, fish_begin_obj_id); }
//--------------------------------------------------------------------- public void create(CRenderScene scene, TbDataFish vib_fish_data) { mScene = scene; mVibFishData = vib_fish_data; mFishCycleGap = mScene.getLayerAlloter().EachFishGap / 10f; bool has_cycle = !string.IsNullOrEmpty(mVibFishData.CycleAnimationName); for (int i = 0; i < mFishNumber; i++) { mFishs.Add(mScene.getRenderObjectPool().newFishStillSprite()); if (has_cycle) { mRedBottom = new CSpriteRedBottom(); mRedBottom.create(mScene, this, mVibFishData); } } foreach (var it in mFishs) { it.init(this, scene); } float fish_scale = ((float)mVibFishData.FishHeight / (float)mVibFishData.FishPixelHeight); foreach (var it in mFishs) { it.setScale(0.7f * fish_scale); } playAnimation(mVibFishData.FishAnimMove); if (mVibFishData.Red == TbDataFish.IsRed.YES) { mInitColor = new Color(1, 0, 0); resetColor(1); } }
//------------------------------------------------------------------------- protected void _newSpriteAndOffset(string layer0animation, string layer1animation, TbDataFish.FishIdAndScaleStruct fish_id_scale, EbVector3 position, float layer_offset, float angle_speed) { mBackground.Add(new SpriteAndOffset(_loadFishStillSprite(layer0animation), position, -angle_speed, mFishCycleGap * 2 + layer_offset)); mBackground.Add(new SpriteAndOffset(_loadFishStillSprite(layer1animation), position, angle_speed, mFishCycleGap + layer_offset)); mFishs.Add(new SpriteAndOffset(_loadFishStillSpriteByFishId(fish_id_scale), position, 0, 0, EbDataMgr.Instance.getData<TbDataFish>(fish_id_scale.FishId).FishAnimDie)); }
//------------------------------------------------------------------------- StillParticle _buildParticle(TbDataFish.ParticleDataStruct particle_data, uint et_player_rpcid) { StillParticle still_particle = mParticlemanager.newParticle(particle_data.TbDataParticle.ParticlePrefabName); if (particle_data.TargetPoint.ParticlePointType == TbDataFish.ParticlePointStruct.ParticlePointTypeEnum.None || particle_data.TargetPoint.ParticlePointType == TbDataFish.ParticlePointStruct.ParticlePointTypeEnum.Default) { _particleNoneTarget(still_particle, particle_data, et_player_rpcid); } else if (particle_data.TargetPoint.ParticlePointType == TbDataFish.ParticlePointStruct.ParticlePointTypeEnum.Turret) { _particleTurretTarget(still_particle, particle_data, et_player_rpcid); } else if (particle_data.TargetPoint.ParticlePointType == TbDataFish.ParticlePointStruct.ParticlePointTypeEnum.Fixed) { _particleTurretTarget(still_particle, particle_data, et_player_rpcid); } still_particle.setLayer(mScene.getLayerAlloter().getFishLayer(mFishData.Id)); return still_particle; }
//------------------------------------------------------------------------- public virtual void create(CRenderScene scene, TbDataFish vib_fish_data) { mScene = scene; mVibFishData = vib_fish_data; mFishCycleGap = mScene.getLayerAlloter().EachFishGap / 10f; }
//------------------------------------------------------------------------- List<StillParticle> _loopBuildParticle(TbDataFish.ParticleProduceTimeEnum time_enum, uint et_player_rpcid = 0) { if (!mDicParticleData.ContainsKey(time_enum)) return new List<StillParticle>(); List<StillParticle> particle_list = new List<StillParticle>(); foreach (var it in mDicParticleData[time_enum]) { particle_list.Add(_buildParticle(it, et_player_rpcid)); } return particle_list; }
//------------------------------------------------------------------------- void _particleNoneTarget(StillParticle still_particle, TbDataFish.ParticleDataStruct particle_data, uint et_player_rpcid) { if (particle_data.StartPoint.ParticlePointType == TbDataFish.ParticlePointStruct.ParticlePointTypeEnum.Fish) { if (particle_data.ParticleProduceTime == TbDataFish.ParticleProduceTimeEnum.FishMoving) { mListParticle.Add(still_particle);//跟随鱼运动 } else { still_particle.setPosition(mCRenderFish.Position); still_particle.setLooping(false); } } else if (particle_data.StartPoint.ParticlePointType == TbDataFish.ParticlePointStruct.ParticlePointTypeEnum.Fixed) { still_particle.setPosition(new EbVector3(particle_data.StartPoint.x, particle_data.StartPoint.y, 0)); } _setOffsetLocation(still_particle, particle_data.StartPoint.x, particle_data.StartPoint.y); }
//------------------------------------------------------------------------- public void create(int fish_vibid, int fish_objid) { mFishData = EbDataMgr.Instance.getData<TbDataFish>(fish_vibid); mFishObjId = fish_objid; mSpeed = mFishData.getSpeed(); mFishType = (TbDataFish.FishType)mFishData.Type; mMassEntity = new MassEntity(); mMassEntity.setSpeed(mSpeed); mFishCollider = mScene.getColliderMgr().newFishCollider(0, 0, 80, 80, this);//读取vib配置 update(0); }
//------------------------------------------------------------------------- protected FishStillSprite _loadFishStillSpriteByFishId(TbDataFish.FishIdAndScaleStruct fish_id_scale) { TbDataFish fish_data = EbDataMgr.Instance.getData<TbDataFish>(fish_id_scale.FishId); FishStillSprite fish_sprite = _loadFishStillSprite(fish_data.FishAnimMove); fish_sprite.setScale(((float)fish_id_scale.Scale / 100f) * mFixFishScale * (float)fish_data.FishHeight / (float)fish_data.FishPixelHeight); return fish_sprite; }
//------------------------------------------------------------------------- public void create(int fish_vib_id, int fish_objid) { mVibFish = EbDataMgr.Instance.getData<TbDataFish>(fish_vib_id); mFishObjId = fish_objid; mISpriteFish = mScene.getSpriteFishFactory().buildSpriteFish(this, fish_vib_id); mMassEntity = new MassEntity(); mMassEntity.setSpeed(mVibFish.getSpeed()); mISpriteFish.setDirection(0); mFishParticleMgr = new FishParticleMgr(mScene, this, fish_vib_id, mISpriteFish); mFishParticleMgr.fishBorn(); mFishParticleMgr.fishMoving(); }
//--------------------------------------------------------------------- int _getRandomRouteId(TbDataFish.FishRouteCategory category) { List<int> group_fish_id = mFishRouteMap.getGroupFishId(category); int random_id = getRandoNumber(0, group_fish_id.Count - 1); int route_vibid = 0; for (int i = 0; i + random_id < group_fish_id.Count; i++) { route_vibid = group_fish_id[random_id + i]; if (!mListRouteIdSaver.Contains(route_vibid)) { mListRouteIdSaver.Add(route_vibid); return route_vibid; } } for (int i = 1; random_id - i > 0; i++) { route_vibid = group_fish_id[random_id - i]; if (!mListRouteIdSaver.Contains(route_vibid)) { mListRouteIdSaver.Add(route_vibid); return route_vibid; } } return 1; }
//------------------------------------------------------------------------- public List<int> getGroupFishId(TbDataFish.FishRouteCategory category) { return mDicFishRouteCategory[category]; }
//------------------------------------------------------------------------- void _particleTurretTarget(StillParticle still_particle, TbDataFish.ParticleDataStruct particle_data, uint et_player_rpcid) { CRenderTurret turret = mScene.getTurret(et_player_rpcid); if (turret == null) return; EbVector3 start_position = EbVector3.Zero; if (particle_data.StartPoint.ParticlePointType == TbDataFish.ParticlePointStruct.ParticlePointTypeEnum.Fish) { start_position = mCRenderFish.Position; } else if (particle_data.StartPoint.ParticlePointType == TbDataFish.ParticlePointStruct.ParticlePointTypeEnum.Fixed) { start_position = new EbVector3(particle_data.StartPoint.x, particle_data.StartPoint.y, 0); } still_particle.setRoute(RouteHelper.buildLineRoute( start_position + new EbVector3(particle_data.StartPoint.x, particle_data.StartPoint.y, 0), turret.getTurretPos() + new EbVector3(particle_data.TargetPoint.x, particle_data.TargetPoint.y, 0)), 200); }