//--------------------------------------------------------------------- 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); } }
//--------------------------------------------------------------------- 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 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 setTurret(TbDataTurret.TurretType turret_type) { if (turret_type == TbDataTurret.TurretType.None) { return; } mTurretType = turret_type; _updateVibTurret(); mCSpriteTurretShow.reloadAnimation(); }
//------------------------------------------------------------------------- public void setTurret(uint et_player_rpcid, TbDataTurret.TurretType turret_type) { CLogicTurret turret = getTurret(et_player_rpcid); if (turret == null) { return; } turret.setTurret(turret_type); }
//--------------------------------------------------------------------- // 服务端广播玩家炮台数据跟新 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 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 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); }
//------------------------------------------------------------------------- void _s2allcPlayerEnter(List <string> vec_param) { if (!mScene.isInit()) { return; } int index = 0; _tScenePlayer scene_player; scene_player.et_player_rpcid = uint.Parse(vec_param[++index]); scene_player.nickname = (string)vec_param[++index]; scene_player.is_bot = false; int player_gold = int.Parse(vec_param[++index]); scene_player.rate = float.Parse(vec_param[++index]); int turret_id = int.Parse(vec_param[++index]); bool buffer_power = bool.Parse(vec_param[++index]); bool buffer_freeze = bool.Parse(vec_param[++index]); bool buffer_longpress = bool.Parse(vec_param[++index]); bool buffer_rapid = bool.Parse(vec_param[++index]); float turret_angle = float.Parse(vec_param[++index]); int turret_rate = int.Parse(vec_param[++index]); TbDataTurret.TurretType turret_type = (TbDataTurret.TurretType)(short.Parse(vec_param[++index])); int locked_fish_objid = int.Parse(vec_param[++index]); Dictionary <uint, CRenderTurret> map_turret = mScene.getMapTurret(); if (map_turret.ContainsKey(scene_player.et_player_rpcid)) { map_turret[scene_player.et_player_rpcid].Dispose(); map_turret.Remove(scene_player.et_player_rpcid); } if (mScene.getMyPlayerId() == scene_player.et_player_rpcid) { mScene.setMyTurret(null); } CRenderTurret turret = new CRenderTurret(mScene); 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); map_turret[scene_player.et_player_rpcid] = turret; if (mScene.getMyPlayerId() == scene_player.et_player_rpcid) { mScene.setMyTurret(turret); } }
//------------------------------------------------------------------------- void _s2allcSetTurret(List <string> vec_param) { if (!mScene.isInit()) { return; } int index = 0; uint et_player_rpcid = uint.Parse(vec_param[++index]); TbDataTurret.TurretType turret_type = (TbDataTurret.TurretType)(short.Parse(vec_param[++index])); mScene.setTurret(et_player_rpcid, turret_type); }
//------------------------------------------------------------------------- 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(TbDataTurret.TurretType turret_type) { if (turret_type == TbDataTurret.TurretType.None) return; mTurretType = turret_type; _updateVibTurret(); mCSpriteTurretShow.reloadAnimation(); }
//------------------------------------------------------------------------- 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); } }
//------------------------------------------------------------------------- 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 _s2cSnapshotScene(List <string> vec_param) { EbLog.Note("CRenderProtocol._s2cSnapshotScene()"); mScene.setInit(); int index = 0; uint et_player_rpcid = uint.Parse(vec_param[++index]); if (et_player_rpcid != mScene.getMyPlayerId()) { return; } _eLevelState level_state = (_eLevelState)(short.Parse(vec_param[++index])); int level_vibid = int.Parse(vec_param[++index]); int cur_map_vibid = int.Parse(vec_param[++index]); int next_map_vibid = int.Parse(vec_param[++index]); float level_run_totalsecond = float.Parse(vec_param[++index]); float level_run_maxsecond = float.Parse(vec_param[++index]); bool level_run_in_formation = bool.Parse(vec_param[++index]); mScene.destroyLevel(); mScene.createLevel(level_state, level_vibid, cur_map_vibid, next_map_vibid, level_run_totalsecond, level_run_maxsecond, level_run_in_formation); mScene.destroyAllTurret(); int rate_list_count = int.Parse(vec_param[++index]); List <int> list_rate = new List <int>(rate_list_count); for (int i = 0; i < rate_list_count; ++i) { list_rate.Add(int.Parse(vec_param[++index])); } mScene.setRateList(list_rate); int turret_count = int.Parse(vec_param[++index]); List <CRenderTurret> turret_list = new List <CRenderTurret>(); for (int i = 0; i < turret_count; ++i) { _tScenePlayer scene_player; scene_player.et_player_rpcid = uint.Parse(vec_param[++index]); scene_player.nickname = (string)vec_param[++index]; int player_gold = int.Parse(vec_param[++index]); scene_player.is_bot = false; scene_player.rate = float.Parse(vec_param[++index]); int turret_id = int.Parse(vec_param[++index]); bool buffer_power = bool.Parse(vec_param[++index]); bool buffer_freeze = bool.Parse(vec_param[++index]); bool buffer_longpress = bool.Parse(vec_param[++index]); bool buffer_rapid = bool.Parse(vec_param[++index]); float turret_angle = float.Parse(vec_param[++index]); int turret_rate = int.Parse(vec_param[++index]); TbDataTurret.TurretType turret_type = (TbDataTurret.TurretType)(byte.Parse(vec_param[++index])); int locked_fish_objid = int.Parse(vec_param[++index]); CRenderTurret turret = mScene.createTurret(turret_id, ref scene_player, player_gold, buffer_power, buffer_freeze, buffer_longpress, buffer_rapid, turret_rate, turret_angle, locked_fish_objid, turret_type); turret_list.Add(turret); if (mScene.getMyPlayerId() == scene_player.et_player_rpcid) { mScene.setMyTurret(turret); } } // 通知场景初始化完成 mScene.getListener().onSceneSnapshot(); foreach (var turret in turret_list) { turret.displayScore(); } }