protected override void OnHide() { base.OnHide(); RecoveryItem(); VArtifactUtil.UnRegistTownDestryedEvent(UpdateBuildCountEvent); ReputationSystem.Instance.onReputationChange -= UpdateReputationEvent; }
public void InitAllyPlayerId(System.Random rand) { allyPlayerIdDic.Clear(); allyPlayerIdDic.Add(0, AdventureAlly.DefaultPlayerId); allyPlayerIdDic.Add(1, AdventureAlly.PujaStartPlayerId); int i = 2; List <int> playerIdList = new List <int> (); for (int j = 0; j < PujaAllyCount - 1; j++) { playerIdList.Add(AdventureAlly.PujaStartPlayerId + 1 + j); } for (int j = 0; j < PajaAllyCount; j++) { playerIdList.Add(AdventureAlly.PajaStartPlayerId + j); } for (int j = 0; j < EnemyNpcAllyCount; j++) { playerIdList.Add(AdventureAlly.EnemyNpcStartPlayerId + j); } VArtifactUtil.Shuffle(playerIdList, rand); for (; i < AllyCount; i++) { allyPlayerIdDic.Add(i, playerIdList[i - 2]); } foreach (KeyValuePair <int, int> kvp in allyPlayerIdDic) { Debug.Log("ally: " + kvp.Key + " playerId:" + kvp.Value); } }
public override bool OnPutDown() { if (!PeGameMgr.IsMulti) { DoodadEntityCreator.CreateRandTerDoodad(doodadID, transform.position, Vector3.one, transform.rotation); RemoveFromBag(); } else { IntVector3 safePos = new IntVector3(transform.position + 0.1f * Vector3.down); if (VArtifactUtil.IsInTownBallArea(safePos)) { new PeTipMsg(PELocalization.GetString(8000864), PeTipMsg.EMsgLevel.Warning); return(true); } if (null != PlayerNetwork.mainPlayer) { byte mTerrianType = VFVoxelTerrain.self.Voxels.SafeRead(safePos.x, safePos.y, safePos.z).Type; PlayerNetwork.mainPlayer.RequestDragOut(itemDragging.itemObj.instanceId, transform.position, transform.localScale, transform.rotation, mTerrianType); } } return(base.OnPutDown()); }
public override bool OnPutDown() { if (GameConfig.IsMultiClient) { if (!Pathea.PeGameMgr.IsMultiCoop && VArtifactUtil.IsInTownBallArea(transform.position)) { new PeTipMsg(PELocalization.GetString(8000864), PeTipMsg.EMsgLevel.Warning); return(true); } if (null != PlayerNetwork.mainPlayer) { PlayerNetwork.mainPlayer.RequestDragTower(itemDragging.itemObj.instanceId, transform.position, transform.rotation); } } else { DragTowerAgent towerAget = new DragTowerAgent(itemDragging, transform.position, transform.rotation); towerAget.Create(); SceneMan.AddSceneObj(towerAget); PeMap.TowerMark towerMask = new PeMap.TowerMark(); towerMask.position = transform.position; towerMask.ID = itemObjectId; towerMask.text = itemDragging.itemObj.protoData.GetName(); towerMask.campId = Mathf.RoundToInt(Pathea.MainPlayer.Instance.entity.GetAttribute(Pathea.AttribType.CampID)); PeMap.LabelMgr.Instance.Add(towerMask); PeMap.TowerMark.Mgr.Instance.Add(towerMask); RemoveFromBag(); } return(base.OnPutDown()); }
Vector3 GetPlayerSpawnPos() { IntVector2 posXZ = VArtifactUtil.GetSpawnPos(); Vector3 pos = new Vector3(posXZ.x, VFDataRTGen.GetPosTop(posXZ), posXZ.y); return(pos); }
public override bool OnPutDown() { int prePointId = Railway.Manager.InvalId; if (mPrePoint != null) { prePointId = mPrePoint.id; } if (GameConfig.IsMultiClient) { if (VArtifactUtil.IsInTownBallArea(transform.position)) { new PeTipMsg(PELocalization.GetString(8000864), PeTipMsg.EMsgLevel.Warning); return(true); } if (null != PlayerNetwork.mainPlayer) { PlayerNetwork.mainPlayer.RPCServer(EPacketType.PT_InGame_Railway_AddPoint, transform.position, mType, prePointId, itemDragging.itemObj.instanceId); } } else { RemoveTrees(); RailwayOperate.Instance.RequestAddPoint(transform.position, mType, prePointId, itemDragging.itemObj.instanceId); } return(base.OnPutDown()); }
void Start() { if (PeGameMgr.IsAdventure) { SceneDoodadLodCmpt lod = GetComponentInParent <SceneDoodadLodCmpt> (); if (lod != null && lod.Index >= 0) { // int townid = lod.Index; List <Vector3> lstPos; VANativeCampXML.DynamicNative[] nativeIds = VArtifactUtil.GetAllDynamicNativePoint(lod.Index, out lstPos); if (nativeIds == null) { return; } int cntNativeIds = nativeIds.Length; _posOfMonsters = lstPos.ToArray(); _protoIdsOfMonsters = new int[cntNativeIds]; for (int i = 0; i < cntNativeIds; i++) { _protoIdsOfMonsters[i] = nativeIds[i].type == 0 ? (nativeIds[i].did | EntityProto.IdGrpMask) : nativeIds[i].did; } _maxCntOfMonsters = 8; } } _radius = 256.0f; //force 128 StartCoroutine(RefreshAgents()); }
/// <summary> /// get the top position y of the scene (include the building) /// </summary> /// <returns></returns> public static float GetPosTop(IntVector2 worldPosXZ, out bool canGenNpc) { //int x = worldPosXZ.x >> VoxelTerrainConstants._shift; //int z = worldPosXZ.y >> VoxelTerrainConstants._shift; float top = GetPosHeight(worldPosXZ, true); float townHeight = VArtifactUtil.IsInTown(worldPosXZ); if (townHeight != 0) { if (top < townHeight) { top = townHeight; } canGenNpc = false; return(top + 1.5f); } if (IsSea(Mathf.FloorToInt(top))) { canGenNpc = false; return(top + 1.5f); } canGenNpc = true; return(top + 1.5f); }
public override void Show() { base.Show(); UpdateAllianceInfo(); VArtifactUtil.RegistTownDestryedEvent(UpdateBuildCountEvent); ReputationSystem.Instance.onReputationChange += UpdateReputationEvent; }
public void GenCutPointNewLine(IntVector2 v1, IntVector2 v2, System.Random rand) { float dist = v1.Distance(v2); IntVector2 centerPoint = new IntVector2((v1.x + v2.x) / 2, (v1.y + v2.y) / 2); float radius = dist / 4; IntVector2 result = VArtifactUtil.GetRandomPointFromPoint(centerPoint, radius, rand); AddTownConnection(v1, result, rand); AddTownConnection(result, v2, rand); }
private void CreateOneBuildingNpc(BuildingNpc buildingNpc) { if (!NpcMissionDataRepository.m_AdRandMisNpcData.ContainsKey(buildingNpc.templateId)) { LogManager.Error("not exist! id = [", buildingNpc.templateId, "] Pos = ", buildingNpc.pos); return; } buildingNpc.pos.y += 0.2f; if (PeGameMgr.IsSingleAdventure) { //AdNpcData adNpcData = NpcMissionDataRepository.m_AdRandMisNpcData[buildingNpc.templateId]; //int RNpcId = adNpcData.mRnpc_ID; //int Qid = adNpcData.mQC_ID; PeEntity npc = NpcEntityCreator.CreateNpc(buildingNpc.templateId, buildingNpc.pos, Vector3.one, Quaternion.Euler(0, buildingNpc.rotY, 0)); if (npc == null) { Debug.LogError("npc id error: templateId = " + buildingNpc.templateId); return; } if (buildingNpc.isStand) { VArtifactUtil.SetNpcStandRot(npc, buildingNpc.rotY, true); createdNpcIdList.Add(new BuildingNpcIdStand(npc.Id, true, buildingNpc.rotY)); } else { createdNpcIdList.Add(new BuildingNpcIdStand(npc.Id, false, buildingNpc.rotY)); } //--to do: npc //NpcRandom nr = NpcManager.Instance.CreateRandomNpc(RNpcId, buildingNpc.pos); //StroyManager.Instance.NpcTakeMission(RNpcId, Qid, buildingNpc.pos, nr, adNpcData.m_CSRecruitMissionList); //if(buildingNpc.isStand) //{ // nr.SetRotY(buildingNpc.rotY); // nr.CloseAi(); // createdNpcIdList.Add(new BuildingNpcIdStand(nr.mNpcId, true, buildingNpc.rotY)); //} //else //{ // createdNpcIdList.Add(new BuildingNpcIdStand(nr.mNpcId, false, buildingNpc.rotY)); //} } else if (GameConfig.IsMultiMode) { //SPTerrainEvent.instance.CreateAdNpcByIndex(buildingNpc.pos, buildingNpc.templateId, 1, buildingNpc.isStand, buildingNpc.rotY); PlayerNetwork.mainPlayer.RequestTownNpc(buildingNpc.pos, buildingNpc.templateId, 1, buildingNpc.isStand, buildingNpc.rotY); } }
public override bool OnPutDown() { if (Pathea.PeGameMgr.IsMulti) { if (VArtifactUtil.IsInTownBallArea(transform.position)) { new PeTipMsg(PELocalization.GetString(8000864), PeTipMsg.EMsgLevel.Warning); return(true); } } return(base.OnPutDown()); }
int GetEnvironmentBgMusic() { if (VCEditor.s_Active) { return(CreationMusicID); } else { PeEntity player = PeCreature.Instance.mainPlayer; if (player != null) { if (CSMain.Instance != null && CSMain.Instance.IsInAssemblyArea(player.position)) { return(PlayerBaseMusicID); } else { if (PeGameMgr.IsAdventure) { if (RandomDunGenUtil.IsInDungeon(player)) { if (RandomDunGenUtil.GetDungeonType() == DungeonType.Iron) { return(DungeonIronMusicID); } else { return(DungeonCaveMusicID); } } else if (VArtifactUtil.IsInNativeCampArea(player.position) >= 0) { return(NativeBaseMusicID); } } if (PeGameMgr.IsStory) { int soundID = PeMap.StaticPoint.Mgr.Instance.GetMapSoundID(player.position); if (soundID > 0) { return(soundID); } } } } } return(0); }
public static float GetPosHeightWithTown(IntVector2 worldPosXZ, bool InWater = false) { float top = GetPosHeight(worldPosXZ, InWater) + 1.5f; float townHeight = VArtifactUtil.IsInTown(worldPosXZ); if (townHeight != 0) { if (top < townHeight) { top = townHeight; } } return(top); }
void PeLauncher.ILaunchable.Launch() { Vector3 pos; if (PeGameMgr.IsMultiStory) { pos = new Vector3(12227f, 121.5f, 6095f); } else { VArtifactUtil.GetSpawnPos(); //IntVector2 posXZ = new IntVector2(0, 0); pos = Pathea.PlayerSpawnPosProvider.Instance.GetPos(); } BaseNetwork.MainPlayer.RequestPlayerLogin(pos); }
void PeLauncher.ILaunchable.Launch() { if (null == BaseNetwork.MainPlayer) { return; } Vector3 pos = BaseNetwork.MainPlayer._pos; if (BaseNetwork.MainPlayer.UseNewPos) { IntVector2 posXZ = VArtifactUtil.GetSpawnPos(); pos = new Vector3(posXZ.x, VFDataRTGen.GetPosTop(posXZ), posXZ.y); } Pathea.PlayerSpawnPosProvider.Instance.SetPos(pos); }
void GetTdGenPos(out Vector3 pos) { pos = Vector3.zero; TypeTowerDefendsData data = MissionManager.GetTypeTowerDefendsData(TargetId); if (null != data) { switch (data.m_Pos.type) { case TypeTowerDefendsData.PosType.getPos: pos = Pathea.PeCreature.Instance.mainPlayer.position; break; case TypeTowerDefendsData.PosType.pos: pos = data.m_Pos.pos; break; case TypeTowerDefendsData.PosType.npcPos: pos = Pathea.EntityMgr.Instance.Get(data.m_Pos.id).position; break; case TypeTowerDefendsData.PosType.doodadPos: pos = Pathea.EntityMgr.Instance.GetDoodadEntities(data.m_Pos.id)[0].position; break; case TypeTowerDefendsData.PosType.conoly: if (!CSMain.GetAssemblyPos(out pos)) { pos = Pathea.PeCreature.Instance.mainPlayer.position; } break; case TypeTowerDefendsData.PosType.camp: if (!VArtifactUtil.GetTownPos(data.m_Pos.id, out pos)) { pos = Pathea.PeCreature.Instance.mainPlayer.position; } break; default: break; } data.finallyPos = pos; } }
public static float GetPosTop(IntVector2 worldPosXZ) { //int x = worldPosXZ.x >> VoxelTerrainConstants._shift; //int z = worldPosXZ.y >> VoxelTerrainConstants._shift; float top = GetPosHeight(worldPosXZ) + 1.5f; float townHeight = VArtifactUtil.IsInTown(worldPosXZ); if (townHeight != 0) { if (top < townHeight) { top = townHeight + 1.5f; } return(top); } return(top); }
public void InitAllyColor(System.Random myRand) { allyColor.Clear(); allyColor.Add(0, 0); List <int> colorList = new List <int> (); for (int i = 1; i < AllyCount; i++) { colorList.Add(i); } VArtifactUtil.Shuffle(colorList, myRand); for (int i = 1; i < AllyCount; i++) { allyColor.Add(i, colorList[i - 1]); } foreach (KeyValuePair <int, int> kvp in allyColor) { Debug.Log("ally: " + kvp.Key + " color:" + kvp.Value); } }
public override bool OnPutDown() { if (GameConfig.IsMultiClient) { if (VArtifactUtil.IsInTownBallArea(transform.position)) { new PeTipMsg(PELocalization.GetString(8000864), PeTipMsg.EMsgLevel.Warning); return(true); } if (null != PlayerNetwork.mainPlayer) { PlayerNetwork.mainPlayer.RequestDragFlag(itemDragging.itemObj.instanceId, transform.position, transform.rotation); } return(true); } return(base.OnPutDown()); }
public static void GetArtifactUnit(VArtifactTown townData, ArtifactUnit[] artifactUnitArray, System.Random myRand) { int townPosXMin = townData.PosGen.x; int townPosZMin = townData.PosGen.y; int townPosXMax = townData.PosGen.x; int townPosZMax = townData.PosGen.y; int unitIndex = 0; for (int m = 0; m < artifactUnitArray.Count(); m++) { IntVector2 posXZ = VArtifactUtil.GetIntVector2FromStr(artifactUnitArray[m].pos); int unitID; if (artifactUnitArray[m].id.Equals("-1")) { List <int> idList = VArtifactUtil.townArtifactsData.Keys.ToList(); unitID = idList[myRand.Next(idList.Count)]; } else { unitID = VArtifactUtil.RandIntFromStr(artifactUnitArray[m].id, myRand); } //Debug.Log("unitID:" + unitID); Town_artifacts townDataFromDataBase = VArtifactUtil.townArtifactsData[unitID]; string isoName = townDataFromDataBase.isoName; float rot; if (artifactUnitArray[m].rot.Equals("-1")) { //--to do: "type" is not used rot = (float)(myRand.NextDouble() * 360); } else { rot = VArtifactUtil.RandFloatFromStr(artifactUnitArray[m].rot, myRand); } //--to do: get the isoData from id; ulong guid; //townData.isodataList.Add(posXZ,GetIsoData(isoName,out guid)); VArtifactUnit vau = new VArtifactUnit(); VArtifactData isoData = VArtifactUtil.GetIsoData(isoName, out guid); if (isoData == null) { Debug.LogError("unitID:" + unitID + " isoName not found! IsoName: " + isoName); continue; } vau.isoName = isoName; vau.unitIndex = unitIndex++; vau.isoId = unitID; vau.isoGuId = guid; vau.vat = townData; vau.rot = rot; vau.PosCenter = posXZ + townData.PosGen; int xIsoSize = isoData.m_HeadInfo.xSize; int zIsoSize = isoData.m_HeadInfo.zSize; vau.isoStartPos = new IntVector2(posXZ.x - xIsoSize / 2, posXZ.y - zIsoSize / 2) + townData.PosGen; vau.isoEndPos = new IntVector2(posXZ.x + xIsoSize / 2, posXZ.y + zIsoSize / 2) + townData.PosGen; int xSize = townDataFromDataBase.vaSize.x; int zSize = townDataFromDataBase.vaSize.y; vau.PosStart = new IntVector2(posXZ.x - xSize / 2, posXZ.y - zSize / 2) + townData.PosGen; vau.PosEnd = new IntVector2(posXZ.x + xSize / 2, posXZ.y + zSize / 2) + townData.PosGen; vau.level = townData.level; vau.type = townData.type; vau.buildingIdNum = artifactUnitArray[m].buildingIdNum.ToList(); vau.npcIdNum = artifactUnitArray[m].npcIdNum.ToList(); vau.buildingCell = townDataFromDataBase.buildingCell; vau.npcPos = townDataFromDataBase.npcPos; vau.vaSize = townDataFromDataBase.vaSize; vau.towerPos = townDataFromDataBase.towerPos; if (vau.PosStart.x < townPosXMin) { townPosXMin = vau.PosStart.x; } if (vau.PosStart.y < townPosZMin) { townPosZMin = vau.PosStart.y; } if (vau.PosEnd.x > townPosXMax) { townPosXMax = vau.PosEnd.x; } if (vau.PosEnd.y > townPosZMax) { townPosZMax = vau.PosEnd.y; } townData.VAUnits.Add(vau); } townData.PosStart = new IntVector2(townPosXMin, townPosZMin); townData.PosEnd = new IntVector2(townPosXMax, townPosZMax); townData.PosCenter = new IntVector2((townPosXMin + townPosXMax) / 2, (townPosZMin + townPosZMax) / 2); // townData.height = Mathf.CeilToInt(townData.VAUnits[0].worldPos.y + townData.VAUnits[0].vaSize.z); // townData.TransPos = new Vector3(townData.PosCenter.x, townData.height, townData.PosCenter.y); townData.radius = (int)Mathf.Sqrt(Mathf.Pow((townPosXMax - townPosXMin) / 2, 2) + Mathf.Pow((townPosZMax - townPosZMin) / 2, 2)); }
public static EntityMonsterBeacon CreateMonsterBeaconBySweepID(List <int> sweepDataId, Transform targetTrans, TowerInfoUIData uiData, int preTime, int entityId = -1, TypeTowerDefendsData data = null, int releaseNpcid = -1) { GameObject go = new GameObject("MonsterBeacon"); Vector3 v = new Vector3(); if (null != data) { switch (data.m_Pos.type) { case TypeTowerDefendsData.PosType.getPos: v = PeCreature.Instance.mainPlayer.position; break; case TypeTowerDefendsData.PosType.pos: v = data.m_Pos.pos; break; case TypeTowerDefendsData.PosType.npcPos: v = EntityMgr.Instance.Get(data.m_Pos.id).position; break; case TypeTowerDefendsData.PosType.doodadPos: v = EntityMgr.Instance.GetDoodadEntities(data.m_Pos.id)[0].position; break; case TypeTowerDefendsData.PosType.conoly: if (!CSMain.GetAssemblyPos(out v)) { v = PeCreature.Instance.mainPlayer.position; } break; case TypeTowerDefendsData.PosType.camp: if (VArtifactUtil.GetTownPos(data.m_Pos.id, out v)) { v = PeCreature.Instance.mainPlayer.position; } break; default: break; } data.finallyPos = v; } go.transform.position = v; AISpawnTDWavesData.TDWaveSpData spData = MonsterSweepData.GetWaveSpData(sweepDataId, v); if (spData == null) { return(null); } EntityMonsterBeacon bcn = go.AddComponent <EntityMonsterBeacon>(); bcn.isSweep = true; EntityMgr.Instance.AddAfterAssignId(bcn, entityId != -1 ? entityId : Pathea.WorldInfoMgr.Instance.FetchNonRecordAutoId()); bcn._uiData = uiData; bcn._spData = spData; bcn._position = v; bcn._forward = Vector3.forward; bcn.PreTime = (float)(preTime + spData._waveDatas[0]._delayTime); if (UITowerInfo.Instance != null && uiData != null) { UITowerInfo.Instance.SetInfo(uiData); UITowerInfo.Instance.Show(); UITowerInfo.Instance.e_BtnReady += () => { bcn.PreTime = 0; }; } bcn.StartCoroutine(bcn.RefreshTowerMission()); return(bcn); }
public static EntityMonsterBeacon CreateMonsterBeaconByTDID(int spDataId, Transform targetTrans, TowerInfoUIData uiData, int entityId = -1, TypeTowerDefendsData data = null, int releaseNpcid = -1, bool bOnlyMonster = false) { // Get type mask int campCol = -1; List <int> spawnTypes = GetSpawnTypeMask(bOnlyMonster, out campCol); AISpawnTDWavesData.TDWaveSpData spData = AISpawnTDWavesData.GetWaveSpData(spDataId, UnityEngine.Random.value, spawnTypes); if (spData == null) { return(null); } GameObject go = new GameObject("MonsterBeacon"); Vector3 v = new Vector3(); if (null != data) { switch (data.m_Pos.type) { case TypeTowerDefendsData.PosType.getPos: v = PeCreature.Instance.mainPlayer.position; break; case TypeTowerDefendsData.PosType.pos: v = data.m_Pos.pos; break; case TypeTowerDefendsData.PosType.npcPos: v = EntityMgr.Instance.Get(data.m_Pos.id).position; break; case TypeTowerDefendsData.PosType.doodadPos: v = EntityMgr.Instance.GetDoodadEntities(data.m_Pos.id)[0].position; break; case TypeTowerDefendsData.PosType.conoly: if (!CSMain.GetAssemblyPos(out v)) { v = PeCreature.Instance.mainPlayer.position; } break; case TypeTowerDefendsData.PosType.camp: if (!VArtifactUtil.GetTownPos(data.m_Pos.id, out v)) { v = PeCreature.Instance.mainPlayer.position; } break; default: break; } data.finallyPos = v; go.transform.position = v; go.transform.rotation = Quaternion.identity; } else if (targetTrans != null) { v = targetTrans.position; go.transform.position = targetTrans.position; go.transform.rotation = targetTrans.rotation; } EntityMonsterBeacon bcn = go.AddComponent <EntityMonsterBeacon>(); EntityMgr.Instance.AddAfterAssignId(bcn, entityId != -1 ? entityId : Pathea.WorldInfoMgr.Instance.FetchNonRecordAutoId()); bcn._campCol = campCol; bcn._uiData = uiData; bcn._spData = spData; bcn._spDataId = spDataId; bcn._position = go.transform.position; bcn._forward = go.transform.forward; bcn.PreTime = (float)(spData._timeToStart + spData._waveDatas[0]._delayTime); if (UITowerInfo.Instance != null && uiData != null) { UITowerInfo.Instance.SetInfo(uiData); UITowerInfo.Instance.Show(); UITowerInfo.Instance.e_BtnReady += () => { bcn.PreTime = 0; }; } bcn.StartCoroutine(bcn.RefreshTowerMission()); return(bcn); }
/// <summary> /// voxel modify check event before really undo and redo. Call by BSVoxelModify /// </summary> bool OnCheckVoxelModify(int opType, IntVector3[] indexes, BSVoxel[] voxels, BSVoxel[] oldvoxels, EBSBrushMode mode, IBSDataSource ds) { if (IsGod) { return(true); } if (Pathea.PeCreature.Instance.mainPlayer == null) { return(false); } bool result = true; if (mode == EBSBrushMode.Add) { Dictionary <int, int> items = new Dictionary <int, int>(); // Calculate the needed items; int adder = 1; foreach (BSVoxel voxel in voxels) { int id = 0; if (ds == BuildingMan.Blocks) { if (voxel.IsExtendable()) { if (!voxel.IsExtendableRoot()) { id = GetBlockItemProtoID((byte)(voxel.materialType >> 2)); adder = 1; } else { adder = 0; } } else { id = GetBlockItemProtoID(voxel.materialType); } } else if (ds == BuildingMan.Voxels) { id = GetVoxelItemProtoID(voxel.materialType); } if (id <= 0) { continue; } if (id != 0) { if (items.ContainsKey(id)) { items[id] += adder; } else { items.Add(id, adder); } } } _costsItems = items; float divisor = 1.0f; if (ds == BuildingMan.Blocks) { divisor = (float)(1 << BSBlock45Data.s_ScaleInverted); } // Has player enough items ? Pathea.PackageCmpt pkg = Pathea.PeCreature.Instance.mainPlayer.GetCmpt <Pathea.PackageCmpt>(); _playerItems.Clear(); foreach (KeyValuePair <int, int> kvp in items) { _playerItems.Add(kvp.Key, pkg.GetItemCount(kvp.Key)); if (pkg.GetItemCount(kvp.Key) < Mathf.CeilToInt(kvp.Value / divisor)) { result = false; } } // now delete if (result) { if (GameConfig.IsMultiMode) { if (null == PlayerNetwork.mainPlayer) { return(false); } if (!Pathea.PeGameMgr.IsMultiCoop && VArtifactUtil.IsInTownBallArea(PlayerNetwork.mainPlayer._pos)) { new PeTipMsg(PELocalization.GetString(8000864), PeTipMsg.EMsgLevel.Warning); return(false); } //if (!PlayerNetwork.OnLimitBoundsCheck(brushBound)) //{ // new PeTipMsg(PELocalization.GetString(8000864), PeTipMsg.EMsgLevel.Warning); // return false; //} PlayerNetwork.mainPlayer.RequestRedo(opType, indexes, oldvoxels, voxels, mode, ds.DataType, ds.Scale); DigTerrainManager.BlockClearGrass(ds, indexes); return(true); } else { string debug_log = ""; foreach (KeyValuePair <int, int> kvp in items) { if (pkg.Destory(kvp.Key, Mathf.CeilToInt(kvp.Value / divisor))) { debug_log += "\r\n Rmove Item from player package ID[" + kvp.Key.ToString() + "]" + " count - " + kvp.Value.ToString(); } } if (ds == BuildingMan.Blocks) { for (int i = 0; i < indexes.Length; i++) { Vector3 pos = new Vector3(indexes[i].x * ds.Scale, indexes[i].y * ds.Scale, indexes[i].z * ds.Scale) - ds.Offset; PeGrassSystem.DeleteAtPos(pos); PeGrassSystem.DeleteAtPos(new Vector3(pos.x, pos.y - 1, pos.z)); //PeGrassSystem.DeleteAtPos(new Vector3(pos.x, pos.y + 1, pos.z)); } } else if (ds == BuildingMan.Voxels) { for (int i = 0; i < indexes.Length; i++) { Vector3 pos = new Vector3(indexes[i].x, indexes[i].y, indexes[i].z); PeGrassSystem.DeleteAtPos(pos); PeGrassSystem.DeleteAtPos(new Vector3(pos.x, pos.y - 1, pos.z)); //PeGrassSystem.DeleteAtPos(new Vector3(pos.x, pos.y + 1, pos.z)); } } //Debug.LogWarning(debug_log); } } else { new PeTipMsg(PELocalization.GetString(821000001), PeTipMsg.EMsgLevel.Warning); } } else if (mode == EBSBrushMode.Subtract) { Dictionary <int, int> items = new Dictionary <int, int>(); // Calculate the needed items; int adder = 1; foreach (BSVoxel voxel in oldvoxels) { int id = 0; if (ds == BuildingMan.Blocks) { if (voxel.IsExtendable()) { if (!voxel.IsExtendableRoot()) { id = GetBlockItemProtoID((byte)(voxel.materialType >> 2)); adder = 1; } else { adder = 0; } } else { if (!BuildingMan.Blocks.VoxelIsZero(voxel, 0)) { id = GetBlockItemProtoID((byte)(voxel.materialType)); } } } else if (ds == BuildingMan.Voxels) { if (!BuildingMan.Voxels.VoxelIsZero(voxel, 1)) { id = GetVoxelItemProtoID(voxel.materialType); } } if (id <= 0) { continue; } if (items.ContainsKey(id)) { items[id] += adder; } else { items.Add(id, adder); } } float divisor = 1.0f; if (ds == BuildingMan.Blocks) { divisor = (float)(1 << BSBlock45Data.s_ScaleInverted); } // Has player enough package ? Pathea.PlayerPackageCmpt pkg = Pathea.PeCreature.Instance.mainPlayer.GetCmpt <Pathea.PlayerPackageCmpt>(); MaterialItem[] array = new MaterialItem[items.Count]; int i = 0; foreach (KeyValuePair <int, int> kvp in items) { array[i] = new MaterialItem() { protoId = kvp.Key, count = Mathf.FloorToInt(kvp.Value / divisor) }; i++; } result = pkg.package.CanAdd(array); // Really add if (result) { if (GameConfig.IsMultiMode) { if (null == PlayerNetwork.mainPlayer) { return(false); } //if (!PlayerNetwork.OnLimitBoundsCheck(brushBound)) //{ // new PeTipMsg(PELocalization.GetString(8000864), PeTipMsg.EMsgLevel.Warning); // return false; //} PlayerNetwork.mainPlayer.RequestRedo(opType, indexes, oldvoxels, voxels, mode, ds.DataType, ds.Scale); return(true); } else { string debug_log = ""; foreach (MaterialItem mi in array) { if (mi.count != 0) { pkg.Add(mi.protoId, mi.count); } debug_log += "Add Item from player package ID[" + mi.protoId.ToString() + "]" + " count - " + mi.count.ToString() + "\r\n"; } Debug.LogWarning(debug_log); } } } if (result) { if (onVoxelMotify != null) { onVoxelMotify(indexes, voxels, oldvoxels, mode, ds); } } return(result); }
public static void LoadAllData() { if (s_localDatabase != null) { return; } #if UNITY_EDITOR System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch(); sw.Start(); #endif s_localDatabase = LoadDb(); SkillSystem.SkData.LoadData(); Pathea.Effect.EffectData.LoadData(); Pathea.Projectile.ProjectileData.LoadData(); Pathea.RequestRelation.LoadData(); Pathea.CampData.LoadData(); Pathea.ThreatData.LoadData(); Pathea.DamageData.LoadData(); HumanSoundData.LoadData(); ItemDropData.LoadData(); PELocalization.LoadData(); NaturalResAsset.NaturalRes.LoadData(); //SkillAsset.EffCastData.LoadData(); //SkillAsset.EffSkill.LoadData(); //SkillAsset.MergeSkill.LoadData(); //AnimData.LoadData(); //AnimSoundData.LoadData(); AiAsset.AiData.LoadData(); SoundAsset.SESoundBuff.LoadData(); SoundAsset.SESoundStory.LoadData(); //CharacterData.LoadCharacterData(); StoryDoodadMap.LoadData(); StoreRepository.LoadData(); NpcMissionDataRepository.LoadData(); //PlayerAttribute.LoadData(); MissionRepository.LoadData(); TalkRespository.LoadData(); //NpcRandomRepository.LoadData(); ShopRespository.LoadData(); WareHouseManager.LoadData(); //HeroTalkRepository.LoadData(); MutiPlayRandRespository.LoadData(); PromptRepository.LoadData(); //MapIconData.LoadDate(); //MapMaskData.LoadDate(); CampPatrolData.LoadDate(); Camp.LoadData(); RepProcessor.LoadData(); CloudManager.LoadData(); //BattleUnitData.LoadData(); TutorialData.LoadData(); //RepairMachineManager.LoadData(); MapMaskData.LoadDate(); MessageData.LoadData(); //lz-2016.07.13 Add it MonsterHandbookData.LoadData(); //lz-2016.07.20 Add it StoryRepository.LoadData(); RMRepository.LoadRandMission(); MisInitRepository.LoadData(); CameraRepository.LoadCameraPlot(); AdRMRepository.LoadData(); VCConfig.InitConfig(); Cutscene.LoadData(); // BuildBrushData.LoadBrush(); BSPattern.LoadBrush(); BSVoxelMatMap.Load(); BSBlockMatMap.Load(); BlockBuilding.LoadBuilding(); LifeFormRule.LoadData(); PlantInfo.LoadData(); MetalScanData.LoadData(); BattleConstData.LoadData(); CustomCharactor.CustomMetaData.LoadData(); SkillTreeInfo.LoadData(); VArtifactUtil.LoadData(); Pathea.ActionRelationData.LoadActionRelation(); //colony CSInfoMgr.LoadData(); ProcessingObjInfo.LoadData(); CSTradeInfoData.LoadData(); CampTradeIdData.LoadData(); AbnormalTypeTreatData.LoadData(); CSMedicineSupport.LoadData(); //RandomItemMgr RandomItemDataMgr.LoadData(); FecesData.LoadData(); //randomdungeon RandomDungeonDataBase.LoadData(); AbnormalData.LoadData(); PEAbnormalNoticeData.LoadData(); RelationInfo.LoadData(); EquipSetData.LoadData(); SuitSetData.LoadData(); CheatData.LoadData(); Pathea.NpcProtoDb.Load(); Pathea.MonsterProtoDb.Load(); Pathea.MonsterRandomDb.Load(); Pathea.MonsterGroupProtoDb.Load(); Pathea.RandomNpcDb.Load(); Pathea.PlayerProtoDb.Load(); Pathea.TowerProtoDb.Load(); Pathea.DoodadProtoDb.Load(); Pathea.AttPlusNPCData.Load(); Pathea.AttPlusBuffDb.Load(); Pathea.NpcTypeDb.Load(); Pathea.NpcRandomTalkDb.Load(); Pathea.NpcThinkDb.LoadData(); Pathea.NpcEatDb.LoadData(); Pathea.NpcRobotDb.Load(); Pathea.NPCScheduleData.Load(); Pathea.NpcVoiceDb.LoadData(); InGameAidData.LoadData(); //lz-2016.08.21 add it MountsSkillDb.LoadData(); #if UNITY_EDITOR sw.Stop(); Debug.Log("Database Loaded : " + sw.ElapsedMilliseconds); sw.Reset(); #else Debug.Log("Database Loaded"); #endif }
//public void CreateNpcReady(IntVector4 nodePosLod) //{ // //return; // IntVector3 chunkCenter = new Vector3(nodePosLod.x, nodePosLod.y, nodePosLod.z); // //LogManager.Error("createNpcReady", chunkCenter); // for (int i = chunkCenter.x; i < chunkCenter.x + VoxelTerrainConstants._numVoxelsPerAxis; i++) // { // for (int j = chunkCenter.z; j < chunkCenter.z + VoxelTerrainConstants._numVoxelsPerAxis; j++) // { // IntVector2 posXZ = new IntVector2(i, j); // if (!npcInfoMap.ContainsKey(posXZ)) // { // continue; // } // VATownNpcInfo townNpcInfo = npcInfoMap[posXZ]; // if (!nodePosLod.ContainInTerrainNode(townNpcInfo.getPos())) // { // LogManager.Error("!nodePosLod.ContainInTerrainNode"); // continue; // } // if (townNpcInfo.PosY == -1) // { // continue; // } // int Id = townNpcInfo.getId(); // if (!NpcMissionDataRepository.m_AdRandMisNpcData.ContainsKey(Id)) // { // continue; // } // //LogManager.Error("TownNPC: ID="+townNpcInfo.getId()+" pos="+townNpcInfo.getPos()); // if (Pathea.PeGameMgr.IsSingleAdventure) // { // AdNpcData adNpcData = NpcMissionDataRepository.m_AdRandMisNpcData[Id]; // int RNpcId = adNpcData.mRnpc_ID; // int Qid = adNpcData.mQC_ID; // //int npcid = NpcManager.Instance.RequestRandomNpc(RNpcId, townNpcInfo.getPos(), StroyManager.Instance.OnRandomNpcCreated1, adNpcData); // //createdNpcIdList.Add(npcid); // //NpcRandom nr = NpcManager.Instance.CreateRandomNpc(RNpcId, townNpcInfo.getPos()); // //StroyManager.Instance.NpcTakeMission(RNpcId, Qid, townNpcInfo.getPos(), nr, adNpcData.m_CSRecruitMissionList); // //LogManager.Error("npc Created!Pos: " + townNpcInfo.getPos() + " id: " + RNpcId); // //createdNpcIdList.Add(nr.mNpcId); // createdPosList.Add(posXZ); // npcInfoMap.Remove(posXZ); // } // else if (GameConfig.IsMultiMode) // { // SPTerrainEvent.instance.CreateAdNpcByIndex(townNpcInfo.getPos(), Id); // npcInfoMap.Remove(posXZ); // } // } // } //} //public void RenderTownNPC(IntVector2 posXZ) //{ // if (!npcInfoMap.ContainsKey(posXZ)) // { // return; // } // VATownNpcInfo townNpcInfo = npcInfoMap[posXZ]; // if (townNpcInfo.PosY == -1) // { // return; // } // RenderTownNPC(townNpcInfo); //} public void RenderTownNPC(VATownNpcInfo townNpcInfo) { IntVector2 posXZ = townNpcInfo.Index; if (!npcInfoMap.ContainsKey(posXZ)) { return; } int Id = townNpcInfo.getId(); //if (!NpcMissionDataRepository.m_AdRandMisNpcData.ContainsKey(Id)) //{ // return; //} if (Pathea.PeGameMgr.IsSingleAdventure) { //AdNpcData adNpcData = NpcMissionDataRepository.m_AdRandMisNpcData[Id]; //int RNpcId = adNpcData.mRnpc_ID; //int Qid = adNpcData.mQC_ID; int enemyNpcId = GetEnemyNpcId(Id); int allyId = VArtifactTownManager.Instance.GetTownByID(townNpcInfo.townId).AllyId; int allyColor = VATownGenerator.Instance.GetAllyColor(allyId); int playerId = VATownGenerator.Instance.GetPlayerId(allyId); if (allyId != TownGenData.PlayerAlly) { SceneEntityPosAgent agent = MonsterEntityCreator.CreateAdAgent(townNpcInfo.getPos(), enemyNpcId, allyColor, playerId); SceneMan.AddSceneObj(agent); VArtifactTownManager.Instance.AddMonsterPointAgent(townNpcInfo.townId, agent); } else { PeEntity npc = NpcEntityCreator.CreateNpc(Id, townNpcInfo.getPos(), Vector3.one, Quaternion.Euler(0, 180, 0)); if (npc == null) { Debug.LogError("npc id error: templateId = " + Id); return; } //Debug.Log("created town npc:"+ npc.name+"_"+npc.position); VArtifactUtil.SetNpcStandRot(npc, 180, false); //test if (Id == VArtifactTownManager.Instance.missionStartNpcID) { VArtifactTownManager.Instance.missionStartNpcEntityId = npc.Id; } createdPosList.Add(posXZ); } //Debug.Log("Id: " + Id + " npcPos:" + townNpcInfo.getPos()); //int npcid = NpcManager.Instance.RequestRandomNpc(RNpcId, townNpcInfo.getPos(), StroyManager.Instance.OnRandomNpcCreated1, adNpcData); //createdNpcIdList.Add(Id); //NpcRandom nr = NpcManager.Instance.CreateRandomNpc(RNpcId, townNpcInfo.getPos()); //StroyManager.Instance.NpcTakeMission(RNpcId, Qid, townNpcInfo.getPos(), nr, adNpcData.m_CSRecruitMissionList); //LogManager.Error("npc Created!Pos: " + townNpcInfo.getPos() + " id: " + RNpcId); //createdNpcIdList.Add(nr.mNpcId); npcInfoMap.Remove(posXZ); } else if (GameConfig.IsMultiMode) { int enemyNpcId = GetEnemyNpcId(Id); int allyId = VArtifactTownManager.Instance.GetTownByID(townNpcInfo.townId).AllyId; int allyColor = VATownGenerator.Instance.GetAllyColor(allyId); int playerId = VATownGenerator.Instance.GetPlayerId(allyId); if (allyId != TownGenData.PlayerAlly) { SceneEntityPosAgent agent = MonsterEntityCreator.CreateAdAgent(townNpcInfo.getPos(), enemyNpcId, allyColor, playerId); SceneMan.AddSceneObj(agent); VArtifactTownManager.Instance.AddMonsterPointAgent(townNpcInfo.townId, agent); } else { StartCoroutine(RenderOneNpc(townNpcInfo.getPos(), Id)); } npcInfoMap.Remove(posXZ); } }
public bool Start() { MissionCommonData data = MissionManager.GetMissionCommonData(MissionId); for (int i = 0; i < data.m_TargetIDList.Count; i++) { if (data.m_TargetIDList[i] == TargetId) { _idxTarId = i; break; } } if (_idxTarId == -1) { return(false); } _data = MissionManager.GetTypeMonsterData(TargetId); if (_data == null) { return(false); } Vector3 referToPos; switch (_data.m_mr.refertoType) { case ReferToType.None: referToPos = PeCreature.Instance.mainPlayer.position; break; case ReferToType.Player: referToPos = PeCreature.Instance.mainPlayer.position; break; case ReferToType.Town: VArtifactUtil.GetTownPos(_data.m_mr.referToID, out referToPos); break; case ReferToType.Npc: referToPos = EntityMgr.Instance.Get(MissionManager.Instance.m_PlayerMission.adId_entityId[_data.m_mr.referToID]).position; break; default: referToPos = PeCreature.Instance.mainPlayer.position; break; } if (referToPos == Vector3.zero) { return(false); } if (PeGameMgr.IsSingle || PeGameMgr.IsTutorial) { if (_data.type == 2) { DoodadEntityCreator.commonDeathEvent += OnMonsterDeath; } else { MonsterEntityCreator.commonDeathEvent += OnMonsterDeath; } } GenMonsterInMission = !PeGameMgr.IsStory; if (GenMonsterInMission) { #if DbgNearGen Vector2 v2 = Vector2.zero; #else Vector2 v2 = UnityEngine.Random.insideUnitCircle.normalized * _data.m_mr.radius1; #endif Vector3 center = referToPos + new Vector3(v2.x, 0.0f, v2.y); //for (int i = 0; i < _data.m_MonsterList.Count; i++) { // int num = _data.m_MonsterList[i].type; // int protoId = _data.m_MonsterList[i].npcs[UnityEngine.Random.Range(0, _data.m_MonsterList[i].npcs.Count)]; // for (int j = 0; j < num; j++) { // Vector3 pos = AiUtil.GetRandomPosition (center, 0, _data.m_mr.radius2); // pos.y = SceneEntityPosAgent.PosYTBD; // let posagent to set y // SceneEntityPosAgent agent = MonsterEntityCreator.CreateAgent(pos, protoId); // agent.spInfo = new MonsterEntityCreator.AgentInfo(EntityMonsterBeacon.GetSpBeacon4MonsterKillTask()); // _agents.Add (agent); // SceneMan.AddSceneObj (agent); // } //} for (int i = 0; i < _data.m_CreMonList.Count; i++) { for (int j = 0; j < _data.m_CreMonList[i].monNum; j++) { Vector3 pos = AiUtil.GetRandomPosition(center, 0, _data.m_mr.radius2); pos.y = SceneEntityPosAgent.PosYTBD; // let posagent to set y int protoId = _data.m_CreMonList[i].monID; if (_data.m_CreMonList[i].type == 1) { protoId |= EntityProto.IdGrpMask; } SceneEntityPosAgent agent = MonsterEntityCreator.CreateAgent(pos, protoId); agent.spInfo = new MonsterEntityCreator.AgentInfo(EntityMonsterBeacon.GetSpBeacon4MonsterKillTask()); agent.canRide = false; _agents.Add(agent); SceneMan.AddSceneObj(agent); } } } return(true); }
static float GetTownChangeValue(float finalFTerType, IntVector2 worldXZ, float[] terTypeInc) { if (VArtifactUtil.HasTown()) { if (finalFTerType > TownFTerTypeTop(terTypeInc)) { VArtifactTown vat; float factorValue = 1; float nearTownDistance = VATownGenerator.Instance.GetAreaTownDistance(worldXZ.x, worldXZ.y, out vat); //float terTypeDistanceFactor = 1;//+(finalFTerType-TownFTerTypeTop)/(1-TownFTerTypeTop)*TownHillChangeFactor; float scaledX = worldXZ.x * s_detailScale; float scaledZ = worldXZ.y * s_detailScale; float changeNoise = Mathf.Abs((float)myNoise[TownChangeIndex].Noise(scaledX * TownChangeFrequency, scaledZ * TownChangeFrequency)); //1~0~1 // changeNoise = 1-changeNoise; //0~1~0; float changeFactor = 1 + changeNoise * TownChangeFactor; if (vat != null) { if (nearTownDistance < vat.SmallRadius * changeFactor) { factorValue = 0; } else if (nearTownDistance < (vat.SmallRadius + TownHillDistance) * changeFactor) { factorValue = (nearTownDistance - vat.SmallRadius * changeFactor) / (TownHillDistance * changeFactor); } } if (factorValue > 0) { // float nearConnectionDistance = VATownGenerator.Instance.GetConnectionLineDistance(worldXZ); // if(nearConnectionDistance <TownConnectionWidth*changeFactor){ // factorValue=0; // } // else if(nearConnectionDistance<(TownConnectionWidth+TownConnectionHillDistance)*changeFactor){ // float temp = (nearConnectionDistance-TownConnectionWidth*changeFactor)/(TownConnectionHillDistance*changeFactor); // if(factorValue >temp) // factorValue = temp; // } float temp = GetTownConnectionFactor(worldXZ.x, worldXZ.y, TownConnectionHillDistance, changeFactor); if (factorValue > temp) { factorValue = temp; } } finalFTerType = factorValue * (finalFTerType - TownFTerTypeTop(terTypeInc)) + TownFTerTypeTop(terTypeInc); } else if (finalFTerType < TownFTerTypeBottom(terTypeInc)) { VArtifactTown vat; float factorValue = 1; float nearTownDistance = VATownGenerator.Instance.GetAreaTownDistance(worldXZ.x, worldXZ.y, out vat); float scaledX = worldXZ.x * s_detailScale; float scaledZ = worldXZ.y * s_detailScale; float changeNoise = ((float)myNoise[TownChangeIndex].Noise(scaledX * TownChangeFrequency, scaledZ * TownChangeFrequency) + 1) / 2;//0~1 float changeFactor = 1 + changeNoise * TownChangeFactor; if (vat != null) { if (nearTownDistance < vat.MiddleRadius * changeFactor) { factorValue = 0; } else if (nearTownDistance < (vat.MiddleRadius + TownWaterDistance) * changeFactor) { factorValue = (nearTownDistance - vat.MiddleRadius * changeFactor) / (TownWaterDistance * changeFactor); } } if (factorValue > 0) { // float nearConnectionDistance = VATownGenerator.Instance.GetConnectionLineDistance(worldXZ); // if(nearConnectionDistance <TownConnectionWidth*changeFactor){ // factorValue=0; // } // else if(nearConnectionDistance<(TownConnectionWidth+TownConnectionWaterDistance)*changeFactor){ // float temp = (nearConnectionDistance-TownConnectionWidth*changeFactor)/(TownConnectionWaterDistance*changeFactor); // if(factorValue >temp) // factorValue = temp; // } float temp = GetTownConnectionFactor(worldXZ.x, worldXZ.y, TownConnectionWaterDistance, changeFactor); if (factorValue > temp) { factorValue = temp; } } finalFTerType = factorValue * (finalFTerType - TownFTerTypeBottom(terTypeInc)) + TownFTerTypeBottom(terTypeInc); } } else { int nearStartDistanceSqr = IntVector2.SqrMagnitude(worldXZ - noTownStartPos); if (nearStartDistanceSqr < (NoTownStartDistance * (TownChangeFactor + 1)) * (NoTownStartDistance * (TownChangeFactor + 1))) { float noTownStartFTerType; if (sceneClimate == ClimateType.CT_Wet) { noTownStartFTerType = terTypeInc[MountainStartIndex]; } else { noTownStartFTerType = terTypeInc[HillStartIndex]; } if (finalFTerType < noTownStartFTerType) { float nearStartDistance = Mathf.Sqrt(nearStartDistanceSqr); float scaledX = worldXZ.x * s_detailScale; float scaledZ = worldXZ.y * s_detailScale; float changeNoise = ((float)myNoise[TownChangeIndex].Noise(scaledX * TownChangeFrequency, scaledZ * TownChangeFrequency) + 1) / 2; //0~1 float changeFactor = 1 + changeNoise * TownChangeFactor; float factorValue = 1; if (nearStartDistance < NoTownStartDistance * changeFactor) { factorValue = nearStartDistance / (NoTownStartDistance * changeFactor); } finalFTerType = factorValue * (finalFTerType - noTownStartFTerType) + noTownStartFTerType; } } } return(finalFTerType); }
void BtnClick_OnCancel() { if (currentState == ReivieState.Reivie_Servant || currentEntity == null) { Hide(); return; } if (!PeGameMgr.IsMulti) { ReviveLabel label = new ReviveLabel(); label.pos = currentEntity.position; ReviveLabel.Mgr.Instance.Add(label); if (RandomDungenMgrData.InDungeon) { bool reviveSuc = DoRevive(true); if (reviveSuc) { currentEntity.position = RandomDungenMgrData.revivePos; Hide(); } return; } //lz-2016.08.03 空对象 if (null != MissionManager.Instance) { MissionManager.Instance.RemoveFollowTowerMission(); } DoRevive(true); Vector3 revivePos; if (SingleGameStory.curType == SingleGameStory.StoryScene.DienShip0) { revivePos = new Vector3(14798.09f, 20.98818f, 8246.396f); } else if (SingleGameStory.curType == SingleGameStory.StoryScene.L1Ship) { revivePos = new Vector3(9649.354f, 90.488f, 12744.77f); } else if (SingleGameStory.curType == SingleGameStory.StoryScene.PajaShip) { revivePos = new Vector3(1593.53f, 148.635f, 8022.03f); } else { revivePos = GetNearFastTrvalPos(currentEntity.position); } Pathea.FastTravelMgr.Instance.TravelTo(revivePos); } else { Vector3 warpPos = Vector3.zero; if (RandomDungenMgrData.InDungeon) { warpPos = RandomDungenMgrData.revivePos; } else if (PeGameMgr.IsMultiCoop) { warpPos = GetNearFastTrvalPos(currentEntity.position); } else { if (PeGameMgr.IsCustom) { warpPos = PlayerNetwork.mainPlayer.GetCustomModePos(); } else { IntVector2 posXZ = VArtifactUtil.GetSpawnPos(); warpPos = new Vector3(posXZ.x, VFDataRTGen.GetPosTop(posXZ), posXZ.y); } } PlayerNetwork.mainPlayer.RPCServer(EPacketType.PT_InGame_PlayerReset, warpPos); PlayerNetwork.mainPlayer.RequestChangeScene(0); } Hide(); }
public void RenderPrefebBuilding(VABuildingInfo buildinginfo) { int bid = buildinginfo.id; Quaternion rotation = Quaternion.Euler(0, buildinginfo.rotation, 0); if (PeGameMgr.IsSingleAdventure) { if (buildinginfo.buildingId.buildingNo != VArtifactTownConstant.NATIVE_TOWER_BUILDING_ID) { if (!BlockBuilding.s_tblBlockBuildingMap.ContainsKey(bid)) { LogManager.Error("bid = [", bid, "] not exist in database!"); return; } int campId = SceneDoodadDesc.c_neutralCamp; int damageId = SceneDoodadDesc.c_neutralDamage; if (buildinginfo.vau.vat.type == VArtifactType.NpcTown) { if (!buildinginfo.vau.vat.IsPlayerTown) { if (bid == ColonyNoMgrMachine.DOODAD_ID_REPAIR || bid == ColonyNoMgrMachine.DOODAD_ID_SOLARPOWER) { return; } campId = AllyConstants.EnemyNpcCampId; damageId = AllyConstants.EnemyNpcDamageId; } } else { if (buildinginfo.vau.vat.nativeType == NativeType.Puja) { campId = AllyConstants.PujaCampId; damageId = AllyConstants.PujaDamageId; } else { campId = AllyConstants.PajaCampId; damageId = AllyConstants.PajaDamageId; } } int playerId = VATownGenerator.Instance.GetPlayerId(buildinginfo.vau.vat.AllyId); if (!buildinginfo.vau.isDoodadNpcRendered) { VArtifactTownManager.Instance.AddAliveBuilding(buildinginfo.vau.vat.townId, DoodadEntityCreator.CreateRandTerDoodad(BlockBuilding.s_tblBlockBuildingMap[bid].mDoodadProtoId, buildinginfo.root, Vector3.one, rotation, buildinginfo.buildingId.townId, campId, damageId, playerId).Id); } //building npc if (!mCreatedNpcBuildingID.ContainsKey(buildinginfo.buildingId)) { BlockBuilding building = BlockBuilding.s_tblBlockBuildingMap[bid]; List <BuildingNpc> buildingNpcs; building.GetNpcInfo(out buildingNpcs); for (int bni = 0; bni < buildingNpcs.Count; bni++) { BuildingNpc bn = buildingNpcs[bni]; VArtifactUtil.GetPosRotFromPointRot(ref bn.pos, ref bn.rotY, buildinginfo.root, buildinginfo.rotation); } if (buildingNpcs != null && buildingNpcs.Count > 0) { if (buildinginfo.vau.vat.IsPlayerTown) { if (!buildinginfo.vau.isDoodadNpcRendered) { StartCoroutine(CreateBuildingNpcList(buildingNpcs)); mCreatedNpcBuildingID.Add(buildinginfo.buildingId, 0); } } else { GenEnemyNpc(buildingNpcs, buildinginfo.vau.vat.townId, buildinginfo.vau.vat.AllyId); } } } } else if (buildinginfo.buildingId.buildingNo == VArtifactTownConstant.NATIVE_TOWER_BUILDING_ID) { //tower if (!buildinginfo.vau.isDoodadNpcRendered) { int playerId = VATownGenerator.Instance.GetPlayerId(buildinginfo.vau.vat.AllyId); VArtifactTownManager.Instance.AddAliveBuilding(buildinginfo.vau.vat.townId, DoodadEntityCreator.CreateRandTerDoodad(buildinginfo.pathID, buildinginfo.root, Vector3.one, rotation, buildinginfo.vau.vat.townId, buildinginfo.campID, buildinginfo.damageID, playerId).Id ); } } if (missionBuilding.ContainsKey(0)) { if (buildinginfo.buildingId != missionBuilding[0]) { RemoveBuilding(buildinginfo.buildingId); } } else { RemoveBuilding(buildinginfo.buildingId); } } else if (PeGameMgr.IsMulti) { if (buildinginfo.buildingId.buildingNo != VArtifactTownConstant.NATIVE_TOWER_BUILDING_ID) { if (!BlockBuilding.s_tblBlockBuildingMap.ContainsKey(bid)) { LogManager.Error("bid = [", bid, "] not exist in database!"); return; } Debug.Log("RenderPrefebBuilding():" + bid); // int campId = SceneDoodadDesc.c_neutralCamp; int campId = SceneDoodadDesc.c_neutralCamp; int damageId = SceneDoodadDesc.c_neutralDamage; if (buildinginfo.vau.vat.type == VArtifactType.NpcTown) { if (!buildinginfo.vau.vat.IsPlayerTown) { if (bid == ColonyNoMgrMachine.DOODAD_ID_REPAIR || bid == ColonyNoMgrMachine.DOODAD_ID_SOLARPOWER) { return; } campId = AllyConstants.EnemyNpcCampId; damageId = AllyConstants.EnemyNpcDamageId; } } else { if (buildinginfo.vau.vat.nativeType == NativeType.Puja) { campId = AllyConstants.PujaCampId; damageId = AllyConstants.PujaDamageId; } else { campId = AllyConstants.PajaCampId; damageId = AllyConstants.PajaDamageId; } } int playerId = VATownGenerator.Instance.GetPlayerId(buildinginfo.vau.vat.AllyId); if (!buildinginfo.vau.isDoodadNpcRendered) { PlayerNetwork.RequestServer(EPacketType.PT_Common_TownDoodad, buildinginfo.buildingId, BlockBuilding.s_tblBlockBuildingMap[bid].mDoodadProtoId, buildinginfo.root, Vector3.one, rotation, buildinginfo.vau.vat.townId, campId, damageId, playerId); } //building npc if (!mCreatedNpcBuildingID.ContainsKey(buildinginfo.buildingId)) { BlockBuilding building = BlockBuilding.s_tblBlockBuildingMap[bid]; List <BuildingNpc> buildingNpcs; building.GetNpcInfo(out buildingNpcs); for (int bni = 0; bni < buildingNpcs.Count; bni++) { BuildingNpc bn = buildingNpcs[bni]; VArtifactUtil.GetPosRotFromPointRot(ref bn.pos, ref bn.rotY, buildinginfo.root, buildinginfo.rotation); } if (buildingNpcs != null && buildingNpcs.Count > 0) { if (buildingNpcs != null && buildingNpcs.Count > 0) { if (buildinginfo.vau.vat.IsPlayerTown) { if (!buildinginfo.vau.isDoodadNpcRendered) { StartCoroutine(CreateBuildingNpcList(buildingNpcs)); mCreatedNpcBuildingID.Add(buildinginfo.buildingId, 0); } } else { GenEnemyNpc(buildingNpcs, buildinginfo.vau.vat.townId, buildinginfo.vau.vat.AllyId); } } } } } else if (buildinginfo.buildingId.buildingNo == VArtifactTownConstant.NATIVE_TOWER_BUILDING_ID) { if (!buildinginfo.vau.isDoodadNpcRendered) { int playerId = VATownGenerator.Instance.GetPlayerId(buildinginfo.vau.vat.AllyId); PlayerNetwork.RequestServer(EPacketType.PT_Common_NativeTowerCreate, buildinginfo.buildingId, buildinginfo.pathID, buildinginfo.root, Vector3.one, rotation, buildinginfo.vau.vat.townId, buildinginfo.campID, buildinginfo.damageID, playerId); } } RemoveBuilding(buildinginfo.buildingId); } }