Пример #1
0
        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));
            }
        }
Пример #2
0
    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);
    }
Пример #4
0
 void GetMedicalHistoryList()
 {
     if (CSMain.GetTreatmentList() == null)
     {
         return;
     }
     MedicalHistoryList = CSMain.GetTreatmentList();
 }
Пример #5
0
 public static bool IsRecruited(this PeEntity entity)
 {
     if (CSMain.IsColonyNpc(entity.Id))
     {
         return(true);
     }
     return(false);
 }
Пример #6
0
    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);
    }
Пример #7
0
    public override void OnCreate()
    {
        m_Instance = this;
        base.OnCreate();
        if (Creator == null)
        {
            Creator = CSMain.GetCreator(CSConst.ciDefMgCamp);
        }

        FactoryUI.Init();
    }
Пример #8
0
        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;
        }
Пример #9
0
    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;
        }
    }
Пример #10
0
    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));
     }
 }
Пример #12
0
    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);
    }
Пример #13
0
    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);
    }
Пример #14
0
    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));
     }
 }
Пример #16
0
        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);
        }
Пример #17
0
        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);
        }
Пример #18
0
    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);
    }
Пример #20
0
 void Init()
 {
     core = CSMain.GetAssemblyEntity();
 }
Пример #21
0
    //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);
    }
Пример #22
0
    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);
        }
    }
Пример #23
0
    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);
    }
Пример #24
0
    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);
        }
    }
Пример #25
0
    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);
    }
Пример #26
0
    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);
    }
Пример #27
0
    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);
    }