IEnumerator CSTeam(float time) { if (SingleGameStory.curType == SingleGameStory.StoryScene.TrainingShip) { yield break; } yield return(new WaitForSeconds(time)); while (true) { mCScreator = CSMain.GetCreator(CSConst.ciDefMgCamp); if (mCScreator != null) { mCSNpcs = CSMain.GetCSNpcs(mCScreator); mCSnpcTeam.setCSCreator(mCScreator); if (mCScreator.Assembly != null && mCSNpcs.Count > 0) { mCSnpcTeam.InitTeam(); mCSnpcTeam.AddInTeam(mCSNpcs, true); mCSnpcTeam.ReFlashTeam(); } } yield return(new WaitForSeconds(time)); } }
void OnNewWave(AISpawnTDWavesData.TDWaveSpData spData, int idxWave) { m_IsReady = false; m_SpawnFinished = (idxWave >= spData._waveDatas.Count - 1); m_Npcs.Clear(); m_Towers.Clear(); m_Buildings.Clear(); m_Defences.Clear(); m_Entities.Clear(); List <PeEntity> npcs = CSMain.GetCSNpcs(m_Creator); for (int i = 0; i < npcs.Count; i++) { if (npcs[i] != null && PETools.PEUtil.SqrMagnitude(npcs[i].position, assemblyPosition) < assemblyRadius * assemblyRadius) { m_Npcs.Add(npcs[i]); } } m_Towers = EntityMgr.Instance.GetTowerEntities(assemblyPosition, assemblyRadius, false); m_Buildings = CSMain.GetCSBuildings(m_Creator); m_Defences.AddRange(m_Npcs); m_Defences.AddRange(m_Towers); m_Entities.AddRange(m_Defences); m_Entities.AddRange(m_Buildings); }
public void PostInit() { CSRepairObject repm = gameObject.GetComponent <CSRepairObject>(); repm.transform.localScale = Vector3.one; repm.Init(m_id, CSMain.GetCreator(CSConst.ciDefNoMgCamp), false); }
void GetMedicalHistoryList() { if (CSMain.GetTreatmentList() == null) { return; } MedicalHistoryList = CSMain.GetTreatmentList(); }
public static bool IsRecruited(this PeEntity entity) { if (CSMain.IsColonyNpc(entity.Id)) { return(true); } return(false); }
public static List <PeEntity> NPCBeKilled(int npcNum) { List <PeEntity> npcs = new List <PeEntity>(); if (npcNum == 25001 && ServantLeaderCmpt.Instance.GetServant(0) != null) { npcs.Add(ServantLeaderCmpt.Instance.GetServant(0).GetComponent <PeEntity>()); } else if (npcNum == 25002 && ServantLeaderCmpt.Instance.GetServant(1) != null) { npcs.Add(ServantLeaderCmpt.Instance.GetServant(1).GetComponent <PeEntity>()); } else if (npcNum == 25010) { if (ServantLeaderCmpt.Instance.GetServant(0) != null) { npcs.Add(ServantLeaderCmpt.Instance.GetServant(0).GetComponent <PeEntity>()); } if (ServantLeaderCmpt.Instance.GetServant(1) != null) { npcs.Add(ServantLeaderCmpt.Instance.GetServant(1).GetComponent <PeEntity>()); } } else { npcs.Add(EntityMgr.Instance.Get(npcNum)); } foreach (var item in npcs) { if (item == null) { continue; } CSMain.RemoveNpc(item); item.SetAttribute(AttribType.Hp, 0, false); List <int> failureMission = new List <int>(); foreach (var item1 in MissionManager.Instance.m_PlayerMission.m_MissionInfo.Keys) { MissionCommonData data = MissionManager.GetMissionCommonData(item1); if (data.m_iReplyNpc == item.Id) { failureMission.Add(item1); } } foreach (var item2 in failureMission) { MissionManager.Instance.FailureMission(item2); } if (!MissionManager.Instance.m_PlayerMission.recordNpcName.ContainsKey(item.Id)) { MissionManager.Instance.m_PlayerMission.recordNpcName.Add(item.Id, item.name.Substring(0, item.name.Length - 1 - System.Convert.ToString(item.Id).Length)); } } return(npcs); }
public override void OnCreate() { m_Instance = this; base.OnCreate(); if (Creator == null) { Creator = CSMain.GetCreator(CSConst.ciDefMgCamp); } FactoryUI.Init(); }
public MainWindowViewModel() { //http://dotnetpattern.com/mvvm-light-messenger //used by TeacherViewModel..ChangeToStudentViewCommand gala.Messenger.Default.Register <SwitchViewMessage>(this, (switchViewMessage) => { SwitchView(switchViewMessage.ViewName); }); UserControl studentView = new StudentView(); UserControl membershipView = new MembershipView(); UserControl teacherView = new TeacherView(); UserControl classView = new ClassView(); UserControl csSelectionView = new CSMain(); UserControl scheduleView = new ScheduleView(); UserControl studentRosterView = new StudentRoster(); UserControl classStudentEnrollView = new ClassStudentEnroll(); UserControl classPnLReportView = new ClassPnLReport(); UserControl studentAttendanceView = new StudentAttendanceReport(); UserControl semesterStudentReportView = new SemesterStudentReport(); this.VIEWSpsaces.Add("StudentView", studentView); this.VIEWSpsaces.Add("MembershipView", membershipView); this.VIEWSpsaces.Add("TeacherView", teacherView); this.VIEWSpsaces.Add("ClassView", classView); this.VIEWSpsaces.Add("ClassManagementView", csSelectionView); this.VIEWSpsaces.Add("ScheduleView", scheduleView); this.VIEWSpsaces.Add("StudentRosterView", studentRosterView); this.VIEWSpsaces.Add("ChangeClassStudentEnrollView", classStudentEnrollView); this.VIEWSpsaces.Add("ClassPnLReportView", classPnLReportView); this.VIEWSpsaces.Add("StudentAttendanceView", studentAttendanceView); this.VIEWSpsaces.Add("SemesterStudentReportView", semesterStudentReportView); ViewModelBase studentViewModel = new StudentViewModel() { Text = "Student View" }; ViewModelBase teacherViewModel = new TeacherViewModel() { Text = "Teacher View" }; ViewModelBase classViewModel = new ClassViewModel() { Text = "Class View" }; this.VMspaces.Add("StudentViewModel", studentViewModel); this.VMspaces.Add("TeacherViewModel", teacherViewModel); this.VMspaces.Add("ClassViewModel", classViewModel); StatusBar = "App Started at " + DateTime.Now; }
void Awake() { if (s_Instance != null) { Debug.LogError("CSMain must be only one!"); } else { s_Instance = this; } CSEntityLayerIndex = Pathea.Layer.Building; m_Creators = new Dictionary <int, CSCreator>(); if (GameConfig.IsMultiMode) { otherCreators = new Dictionary <int, CSCreator>(); } CSClodMgr.Init(); CSClodsMgr.Init(); CSCreator defMgCreator = CreateCreator(CSConst.ciDefMgCamp, "Default Managed Creator"); if (GameConfig.IsMultiMode) { defMgCreator.teamNum = BaseNetwork.MainPlayer.TeamId; Debug.Log("Main Creator team: " + defMgCreator.teamNum); } CreateCreator(CSConst.ciDefNoMgCamp, "Default Non-Managed Creator", CSConst.CreatorType.NoManaged); DigTerrainManager.onDirtyVoxel += OnDirtyVoxel; FarmManager.Instance.CreatePlantEvent += OnCreatePlant; FarmManager.Instance.RemovePlantEvent += OnRemovePlant; DigTerrainManager.onDigTerrain += OnDigTerrain; // DefmgCreator UI //if ( CSUI_Main.Instance != null) //{ // CSUI_Main.Instance.Creator = defMgCreator; //} if (CSUI_MainWndCtrl.Instance != null) { CSUI_MainWndCtrl.Instance.Creator = defMgCreator; } if (InitOperatItemEvent != null) { InitOperatItemEvent(); InitOperatItemEvent = null; } }
public override bool OnDragging(Ray cameraRay) { if (Pathea.SingleGameStory.curType != Pathea.SingleGameStory.StoryScene.MainLand || RandomDungenMgrData.InDungeon) { return(false); } bool canPutOut = base.OnDragging(cameraRay); // limited field bLimited = false; for (int i = 0; i < m_LimitedField.Count; i++) { if (Pathea.PeGameMgr.sceneMode != m_LimitedField[i].mode) { continue; } Vector3 pos = transform.position; float sqr_dis = m_LimitedField[i].radius * m_LimitedField[i].radius; if ((pos - m_LimitedField[i].center).sqrMagnitude < sqr_dis) { bLimited = true; break; } } CSCreator creator = CSMain.GetCreator(CSConst.ciDefMgCamp); if (creator != null) { canPutOut = canPutOut && (creator.CanCreate((int)m_CEO.m_Type, transform.position) == CSConst.rrtSucceed && !bLimited); } m_NotInWaterOrCave = transform.position == Vector3.zero || (!CheckPosInCave() && !PETools.PEUtil.CheckPositionUnderWater(transform.position)); if (canPutOut) { canPutOut = canPutOut && m_NotInWaterOrCave; } //if (m_CEO.HasStarted) // OnItemOpGUIActive(); if (null != itemBounds) { itemBounds.activeState = canPutOut; } return(canPutOut); }
public override bool Init(int id) { if (!base.Init(id)) { return(false); } if (CSMain.GetCreator(CSConst.ciDefNoMgCamp) == null) { CSMain.InitOperatItemEvent += PostInit; return(true); } else { CSPowerPlantObject ppo = GetComponent <CSPowerPlantObject>(); return(CSConst.rrtSucceed == ppo.Init(id, CSMain.GetCreator(CSConst.ciDefNoMgCamp), false)); } }
public override void RemoveNpc(PeEntity npc) { CSPersonnel csp = CSMain.GetColonyNpc(npc.Id); if (csp == null) { Debug.LogWarning("The npc you want to kick out is not a recruit."); return; } // Remove data csp.RemoveData(); if (csp.Dwellings != null) { csp.Dwellings.RemoveNpc(csp); } if (csp.WorkRoom != null) { csp.WorkRoom.RemoveWorker(csp); } //CSBehaveMgr.RemoveQueue(npc.Id); m_RandomNpcs.Remove(csp); m_MainNpcs.Remove(csp); ExecuteEventPersonnel(CSConst.cetRemovePersonnel, csp); //_decreaseStateNum(po.m_Personnel, po.m_Personnel.State); _decreaseOccupationNum(csp, csp.Occupation); _decreaseWorkModeNum(csp, csp.m_WorkMode); csp.m_Creator = null; if (npc.IsRandomNpc()) { PeEntityCreator.ExileRandomNpc(npc); } else { PeEntityCreator.ExileMainNpc(npc); } csp.UpdateNpcCmpt(); PeNpcGroup.Instance.OnRemoveCsNpc(npc); }
public bool GetNpcPos(int index, out Vector3 pos) { bool result = CSMain.GetAssemblyPos(out pos); if (!result) { return(false); } if (index < m_NPCTrans.Length) { //index:0 playerPos //index:1-18 npcPos //index:19 pujaPos pos = m_NPCTrans[index].position; } return(true); }
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 override bool Init(int id) { if (!base.Init(id)) { return(false); } if (CSMain.GetCreator(CSConst.ciDefNoMgCamp) == null) { CSMain.InitOperatItemEvent += PostInit; return(true); } else { CSRepairObject repm = gameObject.GetComponent <CSRepairObject>(); repm.transform.localScale = Vector3.one; return(CSConst.rrtSucceed == repm.Init(id, CSMain.GetCreator(CSConst.ciDefNoMgCamp), false)); } }
public static bool NpcMissionReady(PeEntity npc) { if (npc == null) { return(false); } if (npc.NpcCmpt == null) { return(false); } CSCreator mCScreator = npc.NpcCmpt.Creater; if (mCScreator == null) { mCScreator = CSMain.GetCreator(CSConst.ciDefMgCamp); } if (mCScreator == null || mCScreator.Assembly == null) { return(false); } ItemAsset.ItemObject item; if (npc.UseItem != null && NpcEatDb.CanEatSthFromStorages(npc, mCScreator.Assembly.Storages, out item)) { npc.UseItem.Use(item); } for (int i = 0; i < RecruitBuff.Length; i++) { npc.skEntity.CancelBuffById(RecruitBuff[i]); } for (int i = 0; i < InFeildBuff.Length; i++) { SkillSystem.SkEntity.MountBuff(npc.skEntity, InFeildBuff[i], new List <int>(), new List <float>()); } return(true); }
public static bool CallBackColonyNpcImmediately(PeEntity entity) { if (entity == null) { return(false); } if (entity.NpcCmpt == null) //|| == null || entity.NpcCmpt.Creater.Assembly == null { return(false); } CSCreator creator = entity.NpcCmpt.Creater; if (creator == null) { creator = CSMain.GetCreator(CSConst.ciDefMgCamp); } if (creator == null || creator.Assembly == null) { return(false); } //in assembly radius if (!IsOutRadiu(entity.position, creator.Assembly.Position, creator.Assembly.Radius)) { return(true); } Vector3 backPos = PETools.PEUtil.GetRandomPositionOnGroundForWander(creator.Assembly.Position, creator.Assembly.Radius * 0.7f, creator.Assembly.Radius); if (backPos == Vector3.zero) { backPos = creator.Assembly.Position; } entity.NpcCmpt.Req_Translate(backPos); return(true); }
void OnGUI() { if (Pathea.EntityMgr.Instance == null || !Application.isEditor) { return; } if (GUI.Button(new Rect(300, 100, 90, 20), "AddServant")) { PeEntity entity = EntityMgr.Instance.Get(9008); if (entity == null) { Debug.Log("Get entity failed!"); return; } NpcCmpt cmpt = entity.NpcCmpt; if (cmpt != null) { CSMain.SetNpcFollower(entity); } } }
public void PostInit() { CSPowerPlantObject ppo = GetComponent <CSPowerPlantObject>(); ppo.Init(m_id, CSMain.GetCreator(CSConst.ciDefNoMgCamp), false); }
void Init() { core = CSMain.GetAssemblyEntity(); }
//bool bPut = false; public override bool OnCheckPutDown() { //OnItemOpGUIHide(); #if fasle HB_Entity entity = GetComponent <HB_Entity>(); if (entity != null) { if (ColonyManager.Instance == null) { return(false); } EntityMgrInst entityMgr = ColonyManager.Instance.GetEntityMgrSinglePlayer(); BuildingState r = entityMgr.CanRegister(entity); if (r == BuildingState.Succeed) { entity.Register(entityMgr); } // Show message box else if (r == BuildingState.NoAssembly) { MessageBox_N.ShowOkBox( "You need to build an Assembly building with its static field before you can place down other buildings as per colony safety regulations!"); return(false); } else if (r == BuildingState.OutOfMaxCount) { MessageBox_N.ShowOkBox( "The number of buildings of this type allowed by safety regulations in the current static field has been reached!"); return(false); } else if (r == BuildingState.OutOfAssemblyRange) { MessageBox_N.ShowMsgBox(MsgBoxType.Msg_OK, MsgInfoType.Null, "The building cannot be placed outside the static field in compliance with Colony Regulations Article 3 Section 2."); return(false); } } #endif // Put off Colonies if (!m_NotInWaterOrCave) { MessageBox_N.ShowOkBox(PELocalization.GetString(82209011)); return(false); } if (m_CEO != null) { if (bLimited) { MessageBox_N.ShowOkBox(PELocalization.GetString(3002311)); return(false); } CSCreator creator = CSMain.GetCreator(CSConst.ciDefMgCamp); int result = creator.CanCreate((int)m_CEO.m_Type, transform.position); if (result == CSConst.rrtHasAssembly) { MessageBox_N.ShowOkBox( PELocalization.GetString(8000087)); return(false); } else if (result == CSConst.rrtNoAssembly) { MessageBox_N.ShowOkBox( PELocalization.GetString(8000088)); return(false); } else if (result == CSConst.rrtOutOfRange) { MessageBox_N.ShowOkBox( PELocalization.GetString(8000105)); return(false); } else if (result == CSConst.rrtOutOfRadius) { MessageBox_N.ShowOkBox(PELocalization.GetString(8000089)); return(false); } else if (result == CSConst.rrtTooCloseToNativeCamp) { MessageBox_N.ShowOkBox(PELocalization.GetString(ColonyErrorMsg.TOO_CLOSE_TO_NATIVE_CAMP0)); return(false); } else if (result == CSConst.rrtTooCloseToNativeCamp1) { MessageBox_N.ShowOkBox(PELocalization.GetString(ColonyErrorMsg.TOO_CLOSE_TO_NATIVE_CAMP1)); return(false); } else if (result == CSConst.rrtTooCloseToNativeCamp2) { MessageBox_N.ShowOkBox(PELocalization.GetString(ColonyErrorMsg.TOO_CLOSE_TO_NATIVE_CAMP2)); return(false); } else if (result == CSConst.rrtAreaUnavailable) { // MessageBox_N.ShowOkBox(PELocalization.GetString(ColonyErrorMsg.AREA_UNAVAILABLE)); return(false); } m_CEO.m_BoundState = 0; } //bPut = true; return(true); }
public override void OnConstruct() { base.OnConstruct(); csbl = GetComponentInParent <CSBuildingLogic>(); if (!GameConfig.IsMultiMode) { CSMgCreator creator = CSMain.s_MgCreator; if (creator != null) { CSEntityObject ceo = GetComponent <CSEntityObject>(); int r; if (csbl != null) { r = ceo.Init(csbl, creator); } else { r = ceo.Init(itemObjectId, creator); } if (r != CSConst.rrtSucceed) { Debug.LogError("Error with Init Entities"); } else { if (ceo.m_Type == CSConst.ObjectType.Assembly) { CSMain.SinglePlayerCheckClod(); //--to do: attack //ColonyRunner cr = gameObject.GetComponent<ColonyRunner>(); //if (cr != null) //{ // cr.DeathHandlerEvent += OnTowerDeath; //} } // SendMessage("OnPutGo", mItemObj.instanceId); } } // SendMessage("OnCreatedGo", mItemObj.instanceId); } else { int buildingTeam; if (csbl != null) { buildingTeam = csbl.TeamId; } else { buildingTeam = mNetlayer.TeamId; } ; CSMgCreator creator; if (buildingTeam == BaseNetwork.MainPlayer.TeamId) { creator = CSMain.s_MgCreator; } else { creator = CSMain.Instance.MultiGetOtherCreator(buildingTeam) as CSMgCreator; } if (creator != null) { CSEntityObject ceo = GetComponent <CSEntityObject>(); ColonyNetwork colonyNetwork = mNetlayer as ColonyNetwork; ceo._ColonyObj = colonyNetwork._ColonyObj; int r; if (csbl != null) { r = ceo.Init(csbl, creator); } else { r = ceo.Init(itemObjectId, creator); } if (r != CSConst.rrtSucceed) { Debug.LogError("Error with Init Entities"); // Debug.Break(); } else { if (ceo.m_Type == CSConst.ObjectType.Assembly) { CSMain.SinglePlayerCheckClod(); //--to do: attack //ColonyRunner cr = gameObject.GetComponent<ColonyRunner>(); //if (cr != null) //{ // cr.DeathHandlerEvent += OnTowerDeath; //} } //SendMessage("OnPutGo", mItemObj.instanceId); } } //SendMessage("OnCreatedGo", itemObj.instanceId); } }
public bool CheckAddMissionListID(int id, NpcMissionData missionData) { CSCreator creator; if (id == 0) { return(false); } if (id == MissionManager.m_SpecialMissionID9 || MissionManager.HasRandomMission(id)) { for (int m = 0; m < missionData.m_RecruitMissionList.Count; m++) { if (!MissionManager.Instance.HadCompleteMission(missionData.m_RecruitMissionList[m])) { return(false); } } if (RMRepository.m_RandomFieldMap.ContainsKey(id)) { if (missionData.mCurComMisNum >= RMRepository.m_RandomFieldMap[id].TargetIDMap.Count) { return(false); } } } else if (id == MissionManager.m_SpecialMissionID59 || id == MissionManager.m_SpecialMissionID60) { if (MissionManager.Instance.HadCompleteMission(MissionManager.m_SpecialMissionID58) && !MissionManager.Instance.HadCompleteMission(MissionManager.m_SpecialMissionID63)) { creator = CSMain.GetCreator(CSConst.ciDefMgCamp); if (creator == null) { if (!MissionManager.Instance.HadCompleteMission(MissionManager.m_SpecialMissionID61)) { if (PeGameMgr.IsMulti) { MissionManager.Instance.RequestCompleteMission(MissionManager.m_SpecialMissionID67); } else { MissionManager.Instance.CompleteMission(MissionManager.m_SpecialMissionID67); } GameUI.Instance.mNPCTalk.UpdateNpcTalkInfo(MissionManager.m_SpecialMissionID61, 1); GameUI.Instance.mNPCTalk.PreShow(); } return(false); } if (creator.Assembly == null) { if (!MissionManager.Instance.HadCompleteMission(MissionManager.m_SpecialMissionID61)) { if (PeGameMgr.IsMulti) { MissionManager.Instance.RequestCompleteMission(MissionManager.m_SpecialMissionID67); } else { MissionManager.Instance.CompleteMission(MissionManager.m_SpecialMissionID67); } GameUI.Instance.mNPCTalk.UpdateNpcTalkInfo(MissionManager.m_SpecialMissionID61, 1); GameUI.Instance.mNPCTalk.PreShow(); } return(false); } int npcnum = StroyManager.Instance.GetMgCampNpcCount(); int creatornum = CSMain.s_MgCreator.GetEmptyBedCnt(); //若基地空床位<X,则弹出对话床位不足(任务506) if (creatornum < npcnum) { if (!MissionManager.Instance.HadCompleteMission(MissionManager.m_SpecialMissionID62)) { GameUI.Instance.mNPCTalk.UpdateNpcTalkInfo(MissionManager.m_SpecialMissionID62, 1); GameUI.Instance.mNPCTalk.PreShow(); } return(false); } //若基地床位>=X,则在对话后把地球营地所有NPC招募到基地(任务507) else { if (!MissionManager.Instance.HadCompleteMission(MissionManager.m_SpecialMissionID63)) { GameUI.Instance.mNPCTalk.UpdateNpcTalkInfo(MissionManager.m_SpecialMissionID63, 1); GameUI.Instance.mNPCTalk.PreShow(); } return(false); } } } if (!MissionManager.Instance.IsGetTakeMission(id)) { return(false); } return(true); }
void AddCSCreatorMission(NpcMissionData missionData) { //if (GameConfig.IsMultiMode) //{ // return; //} CSCreator creator = CSMain.GetCreator(CSConst.ciDefMgCamp); if (creator == null) { return; } if (creator.Assembly == null) { return; } if (m_CurSelNpc != null) { if (m_CurSelNpc.Id < 20000 && m_CurSelNpc.Id > 19990) //冒险模式当中的声望任务id { return; } } int speMisID = 0; if (!m_CurSelNpc.IsRecruited()) { if (!creator.CanAddNpc()) { speMisID = MissionManager.m_SpecialMissionID31; } else { speMisID = MissionManager.m_SpecialMissionID16; } } if (missionData.m_CSRecruitMissionList.Count < 1) { if (speMisID != 0) { m_MissionList.Add(speMisID); } return; } if (missionData.m_CSRecruitMissionList[0] <= 0) { return; } for (int i = 0; i < missionData.m_CSRecruitMissionList.Count; i++) { if (!MissionManager.Instance.HadCompleteMission(missionData.m_CSRecruitMissionList[i])) { return; } } if (speMisID != 0) { m_MissionList.Add(speMisID); } }
public bool UpdataShop(StoreData npc) { if (!mInit) { InitWindow(); } PeEntity ainpc = GameUI.Instance.mNpcWnd.m_CurSelNpc; if (ainpc == null) { return(false); } GameUI.Instance.mNpcWnd.Hide(); mBuyItemList.Clear(); if (npc == null) { return(false); } int iSize = npc.itemList.Count; if (iSize < 1) { return(false); } m_ShopIDList.Clear(); m_CurNpcID = ainpc.Id; if (!StroyManager.Instance.m_BuyInfo.ContainsKey(m_CurNpcID)) { StroyManager.Instance.InitBuyInfo(npc, m_CurNpcID); } Dictionary <int, stShopData> shoplist = StroyManager.Instance.m_BuyInfo[m_CurNpcID].ShopList; bool bPass = true; foreach (int key in shoplist.Keys) { ShopData data = ShopRespository.GetShopData(key); if (data == null) { continue; } bPass = true; for (int i = 0; i < data.m_LimitMisIDList.Count; i++) { if (data.m_LimitType == 1) { if (MissionManager.Instance.HadCompleteMission(data.m_LimitMisIDList[i])) { break; } } else { if (!MissionManager.Instance.HadCompleteMission(data.m_LimitMisIDList[i])) { bPass = false; break; } } } if (!bPass) { continue; } if (GameTime.Timer.Second - shoplist[key].CreateTime > data.m_RefreshTime) { if (shoplist[key].ItemObjID != 0) { ItemMgr.Instance.DestroyItem(shoplist[key].ItemObjID); } ItemObject itemObj = ItemMgr.Instance.CreateItem(data.m_ItemID); // single itemObj.stackCount = data.m_LimitNum; shoplist[key].ItemObjID = itemObj.instanceId; //itemObj.SetProperty(ItemProperty.NewFlagTime, 0f); shoplist[key].CreateTime = GameTime.Timer.Second; mBuyItemList.Add(itemObj); m_ShopIDList.Add(data.m_ID); } else { if (shoplist[key].ItemObjID == 0) { continue; } else { ItemObject itemObj = ItemMgr.Instance.Get(shoplist[key].ItemObjID); if (null != itemObj) { //itemObj.stackCount = data.m_LimitNum; shoplist[key].ItemObjID = itemObj.instanceId; //itemObj.SetProperty(ItemProperty.NewFlagTime, 0f); shoplist[key].CreateTime = GameTime.Timer.Second; mBuyItemList.Add(itemObj); m_ShopIDList.Add(data.m_ID); } } } } mRepurchaseList.Clear(); List <ItemObject> selllist; if (StroyManager.Instance.m_SellInfo.ContainsKey(m_CurNpcID)) { selllist = StroyManager.Instance.m_SellInfo[m_CurNpcID]; for (int i = 0; i < selllist.Count; i++) { mRepurchaseList.Add(selllist[i]); } } else { StroyManager.Instance.m_SellInfo.Add(m_CurNpcID, new List <ItemObject>()); } CSMain.AddTradeNpc(m_CurNpcID, shoplist.Keys.ToList()); ResetItem(); return(true); }
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); }