//------------------------------------------------------------------------- void _s2allcLevelUpdate(List <string> vec_param) { if (!mScene.isInit()) { return; } int index = 0; _eLevelState level_state = (_eLevelState)(byte.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]); CRenderLevel level = mScene.getLevel(); level.setup(level_state, level_vibid, cur_map_vibid, next_map_vibid, level_run_totalsecond, level_run_maxsecond); }
//------------------------------------------------------------------------- public void update(float elapsed_tm) { CRenderLevel level = mScene.getLevel(); if (level == null) { return; } mfTotalSecond += elapsed_tm; if (mScene.getMyPlayerId() == mPlayer.et_player_rpcid && !mScene.isSingleMode()) { mfIdleSecond += elapsed_tm; if (mfIdleSecond > 60.0f) { mfObCountdown -= elapsed_tm; if (mfObCountdown <= 0.0f) { mfIdleSecond = 0.0f; mfObCountdown = 60.0f; mScene.getListener().onScenePlayerChange2Ob(); } else { string str = "由于您一分钟没有发射炮弹 系统将在[ff0000]" + ((int)mfObCountdown).ToString() + "秒[-]后进入[00ffff]观战模式[-]"; //mScene.getListener().onSceneShowMessageBox(str, false, "", 1, (int)_eMessageBoxLayer.Ob, false, false); } } else { mfObCountdown = 60.0f; } if (mRenderBufferMgr.hasBuffer("BufLongpress") || mRenderBufferMgr.hasBuffer("BufRapid")) { mfIdleSecond = 0.0f; mfObCountdown = 60.0f; } } mCSpriteTurretShow.update(elapsed_tm); mRenderBufferMgr.update(elapsed_tm); }
//------------------------------------------------------------------------- public void create(uint et_player_rpcid, int bullet_objid, int bullet_vibid, float bullet_speed, int locked_fish_obj_id, EbVector3 turret_pos, float turret_angle, TbDataParticle hit_particle) { // vib mPlayerId = et_player_rpcid; mVibBullet = EbDataMgr.Instance.getData <TbDataBullet>(bullet_vibid); mPos = turret_pos; mfAngle = turret_angle; mBulletObjId = bullet_objid; mLockedFishObjid = locked_fish_obj_id; //mfBulletSpeed = mVibBullet.Speed; mfBulletSpeed = bullet_speed; // sprite bullet CRenderTurret turret = mScene.getTurret(mPlayerId); int turret_id = turret.getTurretId(); string bullet_anim = mVibBullet.Bullet0Animation; if (turret.isPower()) { bullet_anim = mVibBullet.ColorBulletAnimation; } else { switch (turret_id) { case 1: bullet_anim = mVibBullet.Bullet1Animation; break; case 2: bullet_anim = mVibBullet.Bullet2Animation; break; case 3: bullet_anim = mVibBullet.Bullet3Animation; break; case 4: bullet_anim = mVibBullet.Bullet4Animation; break; case 5: bullet_anim = mVibBullet.Bullet5Animation; break; case 6: bullet_anim = mVibBullet.Bullet6Animation; break; } } mBulletAnim = bullet_anim; mSpriteBullet = new CSpriteBullet(); mSpriteBullet.create(mScene, this, mBulletAnim, hit_particle); mSpriteBullet.setTrigger(true, 200); mSpriteBullet.setPosition(mPos); mSpriteBullet.setDirection(mfAngle); mSpriteBullet.setLayer(mScene.getLayerAlloter().getLayer(_eLevelLayer.Bullet)); mSpriteBullet.setScale((float)mVibBullet.BulletHeight / (float)mVibBullet.BulletPixelHeight); mScene.getLevel().addBullet(this); }
//------------------------------------------------------------------------- void _die(uint et_player_rpcid, int total_score) { if (mIsDie) { return; } mPlayerId = et_player_rpcid; mTotalScore = total_score; mSpriteFreeFromTimeFactor = true; // 播放鱼死亡时候的粒子特效 mFishParticleMgr.fishDie(); // 显示掉落金币数字 if (total_score > 0) { CSpriteFishDieScore score = CSpriteFishDieScore.getScore(mScene, mMassEntity.Position, total_score, 2);//待整理 } // 播放鱼死亡时触发的特效 foreach (var it in mVibFish.Effects) { int vib_compose_id = it.Id; if (vib_compose_id <= 0) { continue; } Dictionary <string, object> param = new Dictionary <string, object>(); param.Add("SourcePosition", mMassEntity.Position); param.Add("SourceAngle", 0f); param.Add("PlayerId", et_player_rpcid); CRenderTurret turret = mScene.getTurret(et_player_rpcid); if (turret != null) { param.Add("DestPosition", turret.getTurretPos()); } else { param.Add("DestPosition", mMassEntity.Position); } param.Add("IsFishDie", true); mScene.addEffect(vib_compose_id, param, EffectTypeEnum.Client); } // 处理SpriteFish mFishStopMove = true; if (mISpriteFish != null) { mISpriteFish.playDieAnimation(); } if (mVibFish.Red == TbDataFish.IsRed.YES) { mScene.getLevel().addRedFishPosition(mFishObjId, Position); } signDie(); }