public void PostInit()
    {
        CSRepairObject repm = gameObject.GetComponent <CSRepairObject>();

        repm.transform.localScale = Vector3.one;
        repm.Init(m_id, CSMain.GetCreator(CSConst.ciDefNoMgCamp), false);
    }
예제 #2
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));
            }
        }
예제 #3
0
    public override void OnCreate()
    {
        m_Instance = this;
        base.OnCreate();
        if (Creator == null)
        {
            Creator = CSMain.GetCreator(CSConst.ciDefMgCamp);
        }

        FactoryUI.Init();
    }
예제 #4
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));
     }
 }
 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));
     }
 }
예제 #7
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);
        }
예제 #8
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);
        }
예제 #9
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);
        }
    }
예제 #10
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);
    }
예제 #11
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);
    }
    public void PostInit()
    {
        CSPowerPlantObject ppo = GetComponent <CSPowerPlantObject>();

        ppo.Init(m_id, CSMain.GetCreator(CSConst.ciDefNoMgCamp), false);
    }