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()); }
// New/Restore public void New() { #if Have_ENTITY //if (EntityCreateMgr.DbgUseLegacyCode) // return; NpcEntityCreator.Init(); MonsterEntityCreator.Init(); DoodadEntityCreator.Init(); SceneEntityCreatorArchiver.Instance.New(); if (PeGameMgr.IsStory || PeGameMgr.IsTutorial) { if (PeGameMgr.playerType == PeGameMgr.EPlayerType.Tutorial) { StartCoroutine(InitTutorialNpc()); } else { DoodadEntityCreator.CreateStoryDoodads(true); StartCoroutine(InitStoryNpc()); } } _bReadyToRefresh = true; #endif }
protected override void RPC_S2C_InitData(uLink.BitStream stream, uLink.NetworkMessageInfo info) { transform.position = stream.Read <Vector3>(); transform.rotation = stream.Read <Quaternion>(); authId = stream.Read <int>(); DoodadEntityCreator.CreateNetRandTerDoodad(Id, ExternId, transform.position, mScale, transform.rotation, mTownId, mCampId, mDamageId); }
// Other methods/property void CreateEntityStatic() { _step = EStep.InCreating; DoodadEntityCreator.CreateDoodad(this); if (entity == null) { Debug.LogWarning("[EntityPosAgent]:Failed to create entity " + _type.ToString() + protoId); } // now doodad's lod(SceneDoodadLodCmpt) would handle doodads, posAgent not needed longer after dooad created. SceneMan.RemoveSceneObj(this); _step = EStep.Created; }
public void Restore() { NpcEntityCreator.Init(); MonsterEntityCreator.Init(); DoodadEntityCreator.Init(); SceneEntityCreatorArchiver.Instance.Restore(); if (PeGameMgr.IsStory) { if (PeGameMgr.playerType != PeGameMgr.EPlayerType.Tutorial) { DoodadEntityCreator.CreateStoryDoodads(false); } } _bReadyToRefresh = true; }
void Start() { //PeEntity entity = null; if (protoType == ProtoType.Doodad) { DoodadEntityCreator.CreateDoodad(protoID, transform.position); } else if (protoType == ProtoType.NpcRandom) { NpcEntityCreator.CreateNpc(protoID, transform.position); } else if (protoType == ProtoType.NpcLine) { NpcEntityCreator.CreateStoryLineNpcFromID(protoID, transform.position); } else { MonsterEntityCreator.CreateAdMonster(protoID, transform.position, colorId, -1); } Destroy(gameObject); }
protected override void OnPEInstantiate(uLink.NetworkMessageInfo info) { objType = (DoodadType)info.networkView.initialData.Read <int>(); int playerId = info.networkView.initialData.Read <int>(); _teamId = info.networkView.initialData.Read <int>(); _assetId = info.networkView.initialData.Read <int>(); _id = info.networkView.initialData.Read <int>(); _protoTypeId = info.networkView.initialData.Read <int>(); Vector3 scale = info.networkView.initialData.Read <Vector3>(); string param = info.networkView.initialData.Read <string>(); SceneDoodadDesc doodad = null; _pos = transform.position; rot = transform.rotation; if (null == ParentTrans) { ParentTrans = new GameObject("DoodadNetworkMgr").transform; } transform.parent = ParentTrans; if (PeGameMgr.IsMultiStory) { doodad = StoryDoodadMap.Get(_assetId); } if (objType == DoodadType.DoodadType_Drop || objType == DoodadType.DoodadType_Dead) { itemBox = ItemBoxMgr.Instance.AddItemMultiPlay(OwnerView.viewID.id, playerId, _pos, this); } else if (objType == DoodadType.DoodadType_SceneBox) { if (doodad != null) { entity = DoodadEntityCreator.CreateStoryDoodadNet(_assetId, Id); } else { entity = DoodadEntityCreator.CreateDoodadNet(_protoTypeId, _pos, scale, rot, Id); } if (entity != null) { WareHouseObject script = entity.gameObject.GetComponent <WareHouseObject>(); if (script != null) { script._id = _assetId; } } } else if (objType == DoodadType.DoodadType_SceneItem) { string[] str = param.Split('|'); if (str.Length != 2) { return; } _sceneItemName = str[1]; if (_sceneItemName == "ash_box") { itemBox = ItemBoxMgr.Instance.AddItemMultiPlay(OwnerView.viewID.id, _assetId, _pos, this); } else if (_sceneItemName == "ash_ball") { itemBox = ItemBoxMgr.Instance.AddItemMultiPlay(OwnerView.viewID.id, _assetId, _pos, this); } else { RequestItemList(); } } else if (objType == DoodadType.DoodadType_Repair) { if (doodad != null) { entity = DoodadEntityCreator.CreateStoryDoodadNet(_assetId, Id); } else { entity = DoodadEntityCreator.CreateDoodadNet(_protoTypeId, _pos, scale, rot, Id); } } else if (objType == DoodadType.DoodadType_Power) { if (doodad != null) { entity = DoodadEntityCreator.CreateStoryDoodadNet(_assetId, Id); } else { entity = DoodadEntityCreator.CreateDoodadNet(_protoTypeId, _pos, scale, rot, Id); } } else if (objType == DoodadType.DoodadType_RandomBuilding || objType == DoodadType.DoodadType_RandomBuilding_Repair || objType == DoodadType.DoodadType_RandomBuilding_Power) { ExtractParam(param, out townId, out _campId, out _damageId, out _dPlayerId); if (doodad != null) { entity = DoodadEntityCreator.CreateStoryDoodadNet(_assetId, Id); } else { entity = DoodadEntityCreator.CreateNetRandTerDoodad(Id, _protoTypeId, _pos, scale, rot, townId, _campId, _damageId, _dPlayerId); } } else { if (doodad != null) { entity = DoodadEntityCreator.CreateStoryDoodadNet(_assetId, Id); } else { entity = DoodadEntityCreator.CreateDoodadNet(_protoTypeId, _pos, scale, rot, Id); } } if (entity != null) { OnSpawned(entity.gameObject); } mapObjNetworkMgr.Add(this); gameObject.name = string.Format("Mapobj assetId:{0}, protoTypeId:{1}, objType:{2}, entityId:{3}", _assetId, _protoTypeId, objType, _id); }
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); } }