public void SyncPosition(long ownerId, UnitRenderType type, Vector3 position, float deltaDistance) { if (pathDic.ContainsKey(ownerId)) { CheckPathPointCurrentStatus(ownerId, position, deltaDistance); } else { // current owner doesn't have path! } }
private void HandleRenderMessage(RenderMessage rm) { //DebugUtils.Log( DebugUtils.Type.Battle, string.Format( "HandleRenderMessage: type = {0}, ownerId = {1}!", rm.type, rm.ownerId ) ); if (rm.type == RenderMessage.Type.TimeChanged) { float leftTime = Convert.ToSingle(rm.arguments["value"]); MessageDispatcher.PostMessage(MessageType.BattleTimeChanged, leftTime); } else if (rm.type == RenderMessage.Type.SpawnTown) { ForceMark mark = (ForceMark)rm.arguments["mark"]; int modelId = Convert.ToInt32(rm.arguments["model"]); int hp = Convert.ToInt32(rm.arguments["hp"]); renderWorld.SetupTown(modelId, mark, rm.ownerId, hp, rm.position); if (battleType == BattleType.Survival && mark == ForceMark.TopRedForce) { DebugUtils.Log(DebugUtils.Type.Battle, "Survival Mode not need AI Base Render"); } else { MessageDispatcher.PostMessage(MessageType.BuildTown, mark, rm.position); } } else if (rm.type == RenderMessage.Type.SpawnTower) { ForceMark mark = (ForceMark)rm.arguments["mark"]; int modelID = ( int )rm.arguments["model"]; int hp = Convert.ToInt32(rm.arguments["hp"]); float buildTime = Convert.ToSingle(rm.arguments["buildTime"]); renderWorld.SetupTower(modelID, mark, buildTime, rm.ownerId, hp, rm.position); MessageDispatcher.PostMessage(MessageType.BuildTower, mark, rm.ownerId, rm.position); } else if (rm.type == RenderMessage.Type.SpawnInstitute) { ForceMark mark = ( ForceMark )rm.arguments["mark"]; int modeID = ( int )rm.arguments["modelId"]; object instituteSkills = rm.arguments["instituteSkillsData"]; int hp = Convert.ToInt32(rm.arguments["hp"]); float buildTime = Convert.ToSingle(rm.arguments["buildTime"]); renderWorld.SetupInstitute(modeID, mark, buildTime, rm.ownerId, hp, rm.position); MessageDispatcher.PostMessage(MessageType.BuildInstitute, mark, rm.ownerId, rm.position, instituteSkills); } else if (rm.type == RenderMessage.Type.SpawnSoldier) { ForceMark mark = (ForceMark)rm.arguments["mark"]; UnitType type = (UnitType)rm.arguments["type"]; int metaId = (int)rm.arguments["metaId"]; int hp = Convert.ToInt32(rm.arguments["hp"]); renderWorld.GenerateSoldier(metaId, mark, type, rm.ownerId, hp, rm.position); if (mark == DataManager.GetInstance().GetForceMark()) { SoundManager.Instance.PlaySound(GameConstants.SOUND_SPAWNUNIT_ID); } MessageDispatcher.PostMessage(MessageType.GenerateSoldier, mark, rm.ownerId, rm.position); } else if (rm.type == RenderMessage.Type.SpawnProjectile) { ForceMark mark = (ForceMark)Convert.ToInt32(rm.arguments["mark"]); int metaId = Convert.ToInt32(rm.arguments["metaId"]); UnitRenderType unitRenderType = (UnitRenderType)rm.arguments["holderType"]; long holderId = Convert.ToInt64(rm.arguments["holderId"]); renderWorld.GenerateProjectile(mark, rm.ownerId, metaId, rm.position, rm.direction, unitRenderType, holderId); } else if (rm.type == RenderMessage.Type.SpawnCrystal) { int modelId = Convert.ToInt32(rm.arguments["modelId"]); bool plus = Convert.ToBoolean(rm.arguments["plus"]); int hp = Convert.ToInt32(rm.arguments["hp"]); renderWorld.SetupCrystal(modelId, rm.ownerId, plus, hp, rm.position, rm.direction); } else if (rm.type == RenderMessage.Type.SpawnCrystalCar) { ForceMark mark = (ForceMark)rm.arguments["mark"]; int modelId = Convert.ToInt32(rm.arguments["modelId"]); int hp = Convert.ToInt32(rm.arguments["hp"]); renderWorld.SetupCrystalCar(modelId, mark, rm.ownerId, hp, rm.position); MessageDispatcher.PostMessage(MessageType.BuildTramCar, mark, rm.ownerId, rm.position); } else if (rm.type == RenderMessage.Type.SpawnDemolisher) { ForceMark mark = (ForceMark)rm.arguments["mark"]; int modelId = Convert.ToInt32(rm.arguments["modelId"]); int hp = Convert.ToInt32(rm.arguments["hp"]); renderWorld.SetupDemolisher(modelId, mark, rm.ownerId, hp, rm.position); MessageDispatcher.PostMessage(MessageType.BuildDemolisher, mark, rm.ownerId, rm.position); } else if (rm.type == RenderMessage.Type.CoinChanged) { //TODO:add coin changed if (rm.ownerId == Data.DataManager.GetInstance().GetPlayerId()) { int money = (int)rm.arguments["value"]; MessageDispatcher.PostMessage(MessageType.CoinChanged, money); } } //else if ( rm.type == RenderMessage.Type.SpawnPowerUp ) //{ // int modelId = (int)rm.arguments["modelId"]; // PowerUpType powerUpType = (PowerUpType)rm.arguments["powerUpType"]; // ForceMark mark = (ForceMark)rm.arguments["mark"]; // float x = (float)rm.arguments["x"]; // float y = (float)rm.arguments["y"]; // float z = (float)rm.arguments["z"]; // renderWorld.SetUpPowerUp( modelId, powerUpType, mark, rm.ownerId, x, y, z ); // MessageDispatcher.PostMessage( MessageType.SpawnPowerUp, rm.ownerId, (int)powerUpType, new Vector3( x, y, z ) ); //} else { renderWorld.HandleRenderMessage(rm); } }