コード例 #1
0
 public override void InitEquipment(PeEntity entity, ItemAsset.ItemObject itemObj)
 {
     base.InitEquipment(entity, itemObj);
     m_MotionEquip = m_Entity.GetCmpt <Motion_Equip>();
     m_MotionMgr   = m_Entity.GetCmpt <MotionMgrCmpt>();
     m_Durability  = itemObj.GetCmpt <ItemAsset.Durability>();
 }
コード例 #2
0
 void Start()
 {
     mplayer     = PeCreature.Instance.mainPlayer;
     playerTrans = mplayer.peTrans.trans;
     anmt        = mplayer.GetCmpt <AnimatorCmpt>();
     mmc         = mplayer.GetCmpt <MotionMgrCmpt>();
 }
コード例 #3
0
    public static void StartSleep(PESleep peSleep, PeEntity character, float hours = 12)
    {
        if (null != character)
        {
            SleepController sc = character.GetComponent <SleepController>();
            if (sc == null)
            {
                sc = character.gameObject.AddComponent <SleepController>();
                sc.isMainPlayer = Pathea.PeCreature.Instance.mainPlayer == character;

                if (sc.isMainPlayer)
                {
                    MotionMgrCmpt mmc         = character.GetCmpt <MotionMgrCmpt>();
                    Action_Sleep  actionSleep = mmc.GetAction <Action_Sleep>();
                    actionSleep.startSleepEvt += sc.MainPlayerStartSleep;
                    actionSleep.startSleepEvt += (i) => FastTravelMgr.Instance.Add(sc);
                    actionSleep.endSleepEvt   += sc.MainPlayerEndSleep;
                    actionSleep.endSleepEvt   += (i) => FastTravelMgr.Instance.Remove(sc);
                }
            }

            sc.character    = character.GetComponent <OperateCmpt>();
            sc.maxSleepTime = hours * 3600f;
            sc.timeCount    = 0;
            sc.peSleep      = peSleep;
            sc.enabled      = true;
            sc.actionTime   = 2f;
            peSleep.StartOperate(sc.character, EOperationMask.Sleep);
//			peSleep.Do(sc.character);
        }
    }
コード例 #4
0
    IEnumerator NpcRevive(SkEntity entity, float delayTime)
    {
        if (Pathea.PeGameMgr.IsMulti)
        {
            yield break;
        }

        PeEntity peentity = entity.GetComponent <PeEntity>();

        if (peentity == null)
        {
            yield break;
        }

        EntityInfoCmpt InfoCmpt = peentity.enityInfoCmpt;

        InfoCmpt.SetDelaytime(Time.time, delayTime);

        PESkEntity skentity = peentity.peSkEntity;

        yield return(new WaitForSeconds(delayTime));

        if (entity != null && skentity != null && skentity.isDead)
        {
            MotionMgrCmpt motion = entity.GetComponent <MotionMgrCmpt>();
            if (motion != null)
            {
                while (true)
                {
                    if (null == peentity || null == motion)
                    {
                        yield break;
                    }
                    //在复活中被任务设置成不能复活 ReviveTime = -1
                    if (peentity.NpcCmpt.ReviveTime < 0)
                    {
                        break;
                    }

                    PEActionParamB param = PEActionParamB.param;
                    param.b = false;
                    if (motion.DoAction(PEActionType.Revive, param))
                    {
                        entity.SetAttribute((int)AttribType.Hp, entity.GetAttribute((int)AttribType.HpMax) * 0.8f);
                        break;
                    }
                    else
                    {
                        yield return(new WaitForSeconds(1));
                    }
                }
            }
        }
    }
コード例 #5
0
 void Start()
 {
     if (MaxHP <= 0)
     {
         MaxHP = 1;
     }
     HP      = MaxHP;
     mplayer = PeCreature.Instance.mainPlayer;
     anmt    = mplayer.animCmpt;
     mmc     = mplayer.motionMgr;
     af      = mmc.GetAction <Action_Fell>();
     ht      = HolotreeTask.Instance;
 }
コード例 #6
0
ファイル: UIRevive.cs プロジェクト: jvdbout/planetexplorers
    bool DoRevive(bool immediately = false)
    {
        MotionMgrCmpt  motionMgrCmpt = currentEntity.GetCmpt <MotionMgrCmpt>();
        PEActionParamB paramB        = PEActionParamB.param;

        if (immediately)
        {
            paramB.b = true;
            motionMgrCmpt.DoActionImmediately(PEActionType.Revive, paramB);
        }
        else
        {
            paramB.b = false;
            motionMgrCmpt.DoAction(PEActionType.Revive, paramB);
        }
        return(motionMgrCmpt.IsActionRunning(PEActionType.Revive));
    }
コード例 #7
0
    public void GetOn()
    {
        if (playerPassengerCmpt == null)
        {
            return;
        }

        var controller = GetComponent <WhiteCat.CarrierController>();
        int seatIndex  = controller.FindEmptySeatIndex();

        if (seatIndex < -1)
        {
            return;
        }

        if (GameConfig.IsMultiMode)
        {
            MotionMgrCmpt mmc = PeCreature.Instance.mainPlayer.GetCmpt <MotionMgrCmpt>();
            if (null != mmc)
            {
                PEActionParamDrive param = PEActionParamDrive.param;
                param.controller = controller;
                param.seatIndex  = seatIndex;
                if (mmc.CanDoAction(PEActionType.Drive, param))
                {
                    if (null != mNetlayer && null != PlayerNetwork.mainPlayer && !ForceSetting.Instance.Conflict(mNetlayer.TeamId, PlayerNetwork.mainPlayerId))
                    {
                        PlayerNetwork.mainPlayer.RPCServer(EPacketType.PT_InGame_GetOnVehicle, mNetlayer.Id);
                    }
                }
            }
        }
        else
        {
            if (null != PeCreature.Instance.mainPlayer)
            {
                PassengerCmpt passenger = PeCreature.Instance.mainPlayer.GetCmpt <PassengerCmpt>();
                if (null != passenger)
                {
                    passenger.GetOn(controller, seatIndex, true);
                }
            }
//			controller.GetOn(Pathea.PeCreature.Instance.mainPlayer, seatIndex);
        }
    }
コード例 #8
0
ファイル: TRStun.cs プロジェクト: shrubba/planetexplorers
    void Stun()
    {
        if (null != m_Target)
        {
            PeEntity entity = m_Target.GetComponentInParent <PeEntity>();
            if (null != entity && entity.proto != EEntityProto.Monster)
            {
                m_MotionMgr = entity.GetComponent <MotionMgrCmpt>();
                if (null != m_MotionMgr)
                {
                    m_MotionMgr.DoAction(PEActionType.Stuned);
                    return;
                }
            }
        }

        GameObject.Destroy(gameObject);
    }
コード例 #9
0
 protected override void CheckOperate()
 {
     if (null != npc && npc.CanHanded)
     {
         if (PeInput.Get(PeInput.LogicFunction.InteractWithItem))
         {
             if (null != PeCreature.Instance && null != PeCreature.Instance.mainPlayer)
             {
                 MotionMgrCmpt motion = PeCreature.Instance.mainPlayer.GetCmpt <MotionMgrCmpt>();
                 if (null != motion)
                 {
                     PEActionParamN param = PEActionParamN.param;
                     param.n = npc.Entity.Id;
                     motion.DoAction(PEActionType.Hand, param);
                 }
             }
         }
     }
     else
     {
         base.CheckOperate();
     }
 }
コード例 #10
0
ファイル: PeGameMgr.cs プロジェクト: shrubba/planetexplorers
        public static void Run()
        {
            BeforeLoad();
            PeLauncher.Instance.endLaunch = delegate()
            {
                if (IsMulti && !NetworkInterface.IsClient)
                {
                    return(true);
                }

                //if (!VFVoxelTerrain.TerrainVoxelComplete)
                if (!VFVoxelTerrain.TerrainColliderComplete)
                {
                    return(false);
                }

                SceneMan.self.StartWork();

                PeEntity mainPlayer = MainPlayer.Instance.entity;
                if (null == mainPlayer)
                {
                    return(false);
                }

                MotionMgrCmpt motion = mainPlayer.GetCmpt <MotionMgrCmpt>();
                if (motion == null)
                {
                    return(false);
                }

                if (motion.freezePhyStateForSystem)
                {
                    UnityEngine.Vector3 safePos;
                    if (PeGameMgr.IsMulti)
                    {
                        if (PlayerNetwork.mainPlayer != null && PlayerNetwork.mainPlayer._curSceneId == (int)Pathea.SingleGameStory.StoryScene.MainLand)
                        {
                            if (PETools.PE.FindHumanSafePos(mainPlayer.position, out safePos, 10))
                            {
                                mainPlayer.position = safePos;
                            }
                            else
                            {
                                mainPlayer.position += 10 * UnityEngine.Vector3.up;
                            }
                        }
                    }
                    else
                    {
                        if (PETools.PE.FindHumanSafePos(mainPlayer.position, out safePos, 10))
                        {
                            mainPlayer.position = safePos;
                        }
                        else
                        {
                            mainPlayer.position += 10 * UnityEngine.Vector3.up;
                        }
                    }


                    return(false);
                }

                if (mSceneMode == ESceneMode.Custom)
                {
                    PeCustom.PeCustomScene.Self.Notify(PeCustom.ESceneNoification.SceneBegin);
                }

                PostLoad();
                System.GC.Collect();
                return(true);
            };

            PlayerTypeLoader scenario = CreatePlayerTypeLoader();

            if (scenario == null)
            {
                return;
            }

            scenario.Load();

            SinglePlayerTypeLoader singlePlayerTypeLoader = scenario as SinglePlayerTypeLoader;

            if (singlePlayerTypeLoader != null)
            {
                //the data is from archive in single player mode
                sceneMode = singlePlayerTypeLoader.sceneMode;
                yirdName  = singlePlayerTypeLoader.yirdName;
                gameName  = singlePlayerTypeLoader.gameName;
            }
            else
            {
                MultiPlayerTypeLoader multiPlayerTypeLoader = scenario as MultiPlayerTypeLoader;
                if (multiPlayerTypeLoader != null)
                {
                    //the data is from archive in single player mode
                    sceneMode = multiPlayerTypeLoader.sceneMode;
                    yirdName  = multiPlayerTypeLoader.yirdName;
                    gameName  = multiPlayerTypeLoader.gameName;
                }
            }

            //zhujiangbo:bug here if a game switch from edited terrain to random terrain
            VFVoxelTerrain.RandomMap = randomMap;

            PeLauncher.Instance.StartLoad();
        }
コード例 #11
0
    void UpdateCurrentState()
    {
        currentState = MouseOpCursor.Null;

        if (null == MainPlayerCmpt.gMainPlayer)
        {
            return;
        }

        //if(null != MainPlayerCmpt.gMainPlayer.actionOpCursor) // always true
        {
            if (MouseOpCursor.Null != MainPlayerCmpt.gMainPlayer.actionOpCursor)
            {
                currentState = MainPlayerCmpt.gMainPlayer.actionOpCursor;
                return;
            }
        }

        if (null != MousePicker.Instance.curPickObj && !MousePicker.Instance.curPickObj.Equals(null))
        {
            MonoBehaviour mono = MousePicker.Instance.curPickObj as MonoBehaviour;
            if (MousePicker.Instance.curPickObj is ClickPEentityLootItem)
            {
                currentState = MouseOpCursor.LootCorpse;
            }
            else if (MousePicker.Instance.curPickObj is MousePickableRandomItem)
            {
                currentState = MouseOpCursor.LootCorpse;
            }
            else if (MousePicker.Instance.curPickObj is MousePickableNPC)
            {
                MousePickableNPC pickableNPC = MousePicker.Instance.curPickObj as MousePickableNPC;
                if (null != pickableNPC && null != pickableNPC.npc)
                {
                    if (pickableNPC.npc.CanTalk)
                    {
                        currentState = MouseOpCursor.NPCTalk;
                    }
                    else if (pickableNPC.npc.CanHanded)
                    {
                        currentState = MouseOpCursor.Hand;
                    }
                }
            }
            else if (MousePicker.Instance.curPickObj is DragItemMousePickBed)
            {
                currentState = MouseOpCursor.Bed;
            }
            else if (MousePicker.Instance.curPickObj is DragItemMousePickDoor)
            {
                currentState = MouseOpCursor.Door;
            }
            else if (MousePicker.Instance.curPickObj is DragItemMousePickCarrier)
            {
                currentState = MouseOpCursor.Carrier;
            }
            else if (MousePicker.Instance.curPickObj is DragItemMousePickLadder)
            {
                currentState = MouseOpCursor.Ladder;
            }
            else if (MousePicker.Instance.curPickObj is OperatableItemPowerPlantSolar)
            {
                currentState = MouseOpCursor.PowerPlantSolar;
            }
            else if (MousePicker.Instance.curPickObj is WareHouseObject)
            {
                currentState = MouseOpCursor.WareHouse;
            }
            else if (MousePicker.Instance.curPickObj is OperatableItemRepairMachine)
            {
                currentState = MouseOpCursor.RepairMachine;
            }
            else if (MousePicker.Instance.curPickObj is DragItemMousePickColony)
            {
                currentState = MouseOpCursor.Colony;
            }
            else if (MousePicker.Instance.curPickObj is DragItemMousePickPlant)
            {
                currentState = MouseOpCursor.Plant;
            }
            else if (MousePicker.Instance.curPickObj is DragItemMousePickTower)
            {
                currentState = MouseOpCursor.Tower;
            }
            else if (MousePicker.Instance.curPickObj is DragItemMousePickKickStarter)
            {
                currentState = MouseOpCursor.KickStarter;
            }
            else if (MousePicker.Instance.curPickObj is ClickGatherEvent)
            {
                currentState = MouseOpCursor.Gather;
            }
            else if (MousePicker.Instance.curPickObj is ClickFellEvent)
            {
                MotionMgrCmpt mmc = PeCreature.Instance.mainPlayer.motionMgr;
                Action_Fell   af  = mmc.GetAction <Action_Fell>();
                if (af.m_Axe && mmc.GetMaskState(PEActionMask.EquipmentHold))
                {
                    currentState = MouseOpCursor.Fell;
                }
            }
            else if (MousePicker.Instance.curPickObj is MousePickRides) //lz-2047.02.24 指向坐骑改为坐骑指针状态
            {
                currentState = MouseOpCursor.Ride;
            }
            else if (null != mono && null != mono.GetComponent <ItemDropMousePickRandomItem>())
            {
                currentState = MouseOpCursor.PickUpItem;
            }
            else if (null != mono && null != mono.GetComponent <ItemDropMousePick>())
            {
                currentState = MouseOpCursor.PickUpItem;
            }
        }
    }