//--------------------------------------------------------------------- public void create(CLogicScene logic_scene, CLogicTurret turret, TbDataTurret.TurretType turret_type) { mScene = logic_scene; mTurret = turret; mTurretType = turret_type; // 机器人锁定鱼初始化,依赖这些顺序 mBotLoveFishList.Add(24); mBotLoveFishList.Add(21); addBotLove(31, 36); addBotLove(25, 30); mBotLoveFishList.Add(20); mBotLoveFishList.Add(39); mBotLoveFishList.Add(37); mBotLoveFishList.Add(22); mBotLoveFishList.Add(23); mDecisionCounter = new Counter(0, true); mRandomRateCounter = new Counter(0, true); randomRateTime(); mTurret.randomTurretRate(); }
//------------------------------------------------------------------------- public void create(int turret_id, ref _tScenePlayer scene_player, int player_gold, bool buffer_power, bool buffer_freeze, bool buffer_longpress, bool buffer_rapid, int turret_rate, float turret_angle, int locked_fish_objid , TbDataTurret.TurretType turret_type) { mTurretId = turret_id; mPlayer = scene_player; mTurretAngle = turret_angle; mTurretType = turret_type; mTurretDataTable = new TurretDataTable(); _setTurretRate(turret_rate); CTurretHelper turret_helper = mScene.getTurretHelper(); mTurretPos = turret_helper.getPositionByOffset(turret_id, mScene.getRenderConfigure().TurretOffset); mBaseAngle = turret_helper.getBaseAngleByTurretId(turret_id); mTurretColor = turret_helper.getBaseColorByTurretId(turret_id).convert(); float scene_length = mScene.getSceneLength(); float scene_width = mScene.getSceneWidth(); mCSpriteTurretShow = new CSpriteTurretShow(); mCSpriteTurretShow.create(mScene, this); _displayTurretRate(); mRenderBufferMgr = new CRenderBufferMgr(mScene, this, turret_helper.getPositionByOffset(turret_id, mScene.getRenderConfigure().TurretBufferOffset), mBaseAngle); setLockFishByFishObjId(locked_fish_objid); if (buffer_power) { List<object> param_list = new List<object>(); mRenderBufferMgr.addBuffer("BufPower", param_list); } if (buffer_freeze) { List<object> param_list = new List<object>(); mRenderBufferMgr.addBuffer("BufFreeze", param_list); } if (buffer_longpress) { List<object> param_list = new List<object>(); mRenderBufferMgr.addBuffer("BufLongpress", param_list); } if (buffer_rapid) { List<object> param_list = new List<object>(); mRenderBufferMgr.addBuffer("BufRapid", param_list); } mScene.getListener().onSceneTurretCreated(mTurretId); }
//------------------------------------------------------------------------- public void setTurretRate(int turret_rate) { mTurretRate = turret_rate; foreach (var i in EbDataMgr.Instance.getMapData <TbDataTurret>()) { if (mTurretRate == ((TbDataTurret)i.Value).TurretRate) { mVibTurret = (TbDataTurret)i.Value; break; } } }
//------------------------------------------------------------------------- public TbDataTurret getTurretData(TbDataTurret.TurretType turret_type, int rate) { Dictionary <int, TbDataTurret> dic_turretdata; if (mDictTurretData.ContainsKey(turret_type)) { dic_turretdata = mDictTurretData[turret_type]; } else { dic_turretdata = mDictTurretData[TbDataTurret.TurretType.NormalTurret]; } TbDataTurret max_turretdata = null; foreach (var it in dic_turretdata) { max_turretdata = it.Value; break; } foreach (var it in dic_turretdata) { if (max_turretdata.TurretRate < it.Value.TurretRate) { max_turretdata = it.Value; } } foreach (var it in dic_turretdata) { if (rate <= it.Value.TurretRate) { if (max_turretdata.TurretRate > it.Value.TurretRate) { max_turretdata = it.Value; } } } return(max_turretdata); }
//------------------------------------------------------------------------- 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)); } }
//------------------------------------------------------------------------- public TbDataTurret getTurretData(TbDataTurret.TurretType turret_type, int rate) { Dictionary<int, TbDataTurret> dic_turretdata; if (mDictTurretData.ContainsKey(turret_type)) { dic_turretdata = mDictTurretData[turret_type]; } else { dic_turretdata = mDictTurretData[TbDataTurret.TurretType.NormalTurret]; } TbDataTurret max_turretdata = null; foreach (var it in dic_turretdata) { max_turretdata = it.Value; break; } foreach (var it in dic_turretdata) { if (max_turretdata.TurretRate < it.Value.TurretRate) { max_turretdata = it.Value; } } foreach (var it in dic_turretdata) { if (rate <= it.Value.TurretRate) { if (max_turretdata.TurretRate > it.Value.TurretRate) { max_turretdata = it.Value; } } } return max_turretdata; }
//------------------------------------------------------------------------- public void setTurret(uint et_player_rpcid, TbDataTurret.TurretType turret_type) { CRenderTurret turret = getTurret(et_player_rpcid); if (turret == null) return; turret.setTurret(turret_type); }
//------------------------------------------------------------------------- public CRenderTurret createTurret(int turret_id, ref _tScenePlayer scene_player, int player_gold, bool buffer_power, bool buffer_freeze, bool buffer_longpress, bool buffer_rapid, int turret_rate, float turret_angle, int locked_fish_objid, TbDataTurret.TurretType turret_type) { CRenderTurret turret = new CRenderTurret(this); turret.create(turret_id, ref scene_player, player_gold, buffer_power, buffer_freeze, buffer_longpress, buffer_rapid, turret_rate, turret_angle, locked_fish_objid, turret_type); mMapPlayerTurret[scene_player.et_player_rpcid] = turret; return turret; }
//--------------------------------------------------------------------- void _updateVibTurretData() { mVibTurret = mTurretDataTable.getTurretData(mTurretType, mTurretRate); }
//------------------------------------------------------------------------- public void setTurret(TbDataTurret.TurretType turret_type) { if (turret_type == TbDataTurret.TurretType.None) return; mTurretType = turret_type; _updateVibTurretData(); mScene.getProtocol().s2allcPlayerSetTurret(mPlayer.et_player_rpcid, mTurretType); }
//--------------------------------------------------------------------- public void create(int turret_id, uint et_player_rpcid, string nickname, bool is_bot, int default_turret_rate, TbDataTurret.TurretType turret_type) { mTurretId = turret_id; mLockedFish = null; mPlayer.et_player_rpcid = et_player_rpcid; mPlayer.nickname = nickname; mPlayer.is_bot = is_bot; mPlayer.rate = 1.0f; mTurretType = turret_type; mTurretDataTable = new TurretDataTable(); mBotRandom = new System.Random(unchecked((int)System.DateTime.Now.Ticks) + turret_id * 1000); // 更新炮台倍率 _setTurretRate(default_turret_rate); // 初始化炮台位置 CTurretHelper turret_helper = new CTurretHelper(); mTurretPos = turret_helper.getPositionByOffset(turret_id, new EbVector3(0, 68, 0)); mTurretAngle = turret_helper.getBaseAngleByTurretId(turret_id); if (isBot()) { mLogicBot = new CLogicBot(); mLogicBot.create(mScene, this, turret_type); } }
//------------------------------------------------------------------------- void _updateVibTurret() { mVibTurret = mTurretDataTable.getTurretData(mTurretType, mTurretRate); }
//--------------------------------------------------------------------- // ��ҽ�����̨ public void scenePlayerEnter(uint et_player_rpcid, int turret_no, string nickname, bool is_bot, int default_turret_rate, TbDataTurret.TurretType turret_type) { scenePlayerLeave(et_player_rpcid); CLogicTurret turret = new CLogicTurret(this); turret.create(turret_no, et_player_rpcid, nickname, is_bot, default_turret_rate, turret_type); mMapPlayerTurret[et_player_rpcid] = turret; // ����˹㲥��ҽ��� mProtocol.s2allcPlayerEnter(turret); }
//--------------------------------------------------------------------- // 服务端广播玩家炮台数据跟新 public void s2allcPlayerSetTurret(uint et_player_rpcid, TbDataTurret.TurretType turret_type) { List<string> vec_param = new List<string>(); vec_param.Add(((byte)_eProtocolDesktop.s2allcSetTurret).ToString()); vec_param.Add(et_player_rpcid.ToString()); vec_param.Add(turret_type.ToString()); mQueProtocol.Enqueue(vec_param); }
//------------------------------------------------------------------------- public void setTurretRate(int turret_rate) { mTurretRate = turret_rate; foreach (var i in EbDataMgr.Instance.getMapData<TbDataTurret>()) { if (mTurretRate == ((TbDataTurret)i.Value).TurretRate) { mVibTurret = (TbDataTurret)i.Value; break; } } }
//------------------------------------------------------------------------- public void setTurret(TbDataTurret.TurretType turret_type) { if (turret_type == TbDataTurret.TurretType.None) return; mTurretType = turret_type; _updateVibTurret(); mCSpriteTurretShow.reloadAnimation(); }