예제 #1
0
        private void Refresh(PlayerActor player)
        {
            int       id        = player.CurrentDevicePoint.ID;
            AgentData agentData = Singleton <Game> .Instance.WorldData.AgentTable[id];

            MapUIContainer.SetVisibleHUD(false);
            AgentActor agentActor = Singleton <Manager.Map> .Instance.AddAgent(id, agentData);

            agentActor.DisableBehavior();
            Actor.BehaviorSchedule schedule = agentActor.Schedule;
            schedule.enabled              = false;
            agentActor.Schedule           = schedule;
            agentActor.TargetInSightActor = (Actor)null;
            agentActor.DeactivateNavMeshAgent();
            if (Object.op_Inequality((Object)agentActor.CurrentPoint, (Object)null))
            {
                agentActor.CurrentPoint.SetActiveMapItemObjs(true);
                agentActor.CurrentPoint.ReleaseSlot((Actor)agentActor);
                agentActor.CurrentPoint = (ActionPoint)null;
            }
            agentActor.TargetInSightActionPoint = (ActionPoint)null;
            player.ChaControl.visibleAll        = false;
            Transform pivotPoint = player.CurrentDevicePoint.PivotPoint;

            agentActor.Position = pivotPoint.get_position();
            agentActor.Rotation = pivotPoint.get_rotation();
            agentData.Position  = player.CurrentDevicePoint.RecoverPoints[0].get_position();
            agentData.Rotation  = player.CurrentDevicePoint.RecoverPoints[0].get_rotation();
            Animator animator = this._locator = player.CameraControl.EventCameraLocator;

            ((Component)animator).get_transform().set_position(pivotPoint.get_position());
            ((Component)animator).get_transform().set_rotation(pivotPoint.get_rotation());
            CommonDefine commonDefine = Singleton <Resources> .Instance.CommonDefine;
            RuntimeAnimatorController itemAnimator = Singleton <Resources> .Instance.Animation.GetItemAnimator(commonDefine.ItemAnims.AppearCameraAnimatorID);

            animator.set_runtimeAnimatorController(itemAnimator);
            ((Component)animator).get_transform().set_position(pivotPoint.get_position());
            ((Component)animator).get_transform().set_rotation(pivotPoint.get_rotation());
            animator.set_speed(0.0f);
            animator.Play(commonDefine.AppearCameraInStates[agentActor.ChaControl.fileParam.personality][0]);
            this._eventCamera = ((Component)player.CameraControl.EventCamera).get_transform();
            ((Component)this._eventCamera).get_transform().SetParent(player.CameraControl.EventCameraParent, false);
            ((Component)this._eventCamera).get_transform().set_localPosition(Vector3.get_zero());
            ((Component)this._eventCamera).get_transform().set_localRotation(Quaternion.Euler(0.0f, 180f, 0.0f));
            player.SetActiveOnEquipedItem(false);
            player.CameraControl.Mode = CameraMode.Event;
            Transform playerRecoverPoint = player.CurrentDevicePoint.PlayerRecoverPoint;

            if (Object.op_Inequality((Object)playerRecoverPoint, (Object)null))
            {
                player.NavMeshAgent.Warp(playerRecoverPoint.get_position());
                player.Rotation = playerRecoverPoint.get_rotation();
            }
            this._agent = agentActor;
            Resources.UnloadUnusedAssets();
            GC.Collect();
        }
예제 #2
0
        private void ChangeForceBehavior(AgentActor agent, Desire.ActionType actionType)
        {
            AgentActor agentActor1 = agent;
            int        num1        = -1;

            agent.PoseID = num1;
            int num2 = num1;

            agentActor1.ActionID         = num2;
            agent.AgentData.CarryingItem = (StuffItem)null;
            agent.StateType = AIProject.Definitions.State.Type.Normal;
            if (Object.op_Inequality((Object)agent.CurrentPoint, (Object)null))
            {
                agent.CurrentPoint.SetActiveMapItemObjs(true);
                agent.CurrentPoint.ReleaseSlot((Actor)agent);
                agent.CurrentPoint = (ActionPoint)null;
            }
            if (Object.op_Inequality((Object)agent.CommandPartner, (Object)null))
            {
                Actor commandPartner = agent.CommandPartner;
                switch (commandPartner)
                {
                case AgentActor _:
                    AgentActor agentActor2 = commandPartner as AgentActor;
                    agentActor2.CommandPartner = (Actor)null;
                    agentActor2.ChangeBehavior(Desire.ActionType.Normal);
                    break;

                case MerchantActor _:
                    MerchantActor merchantActor = commandPartner as MerchantActor;
                    merchantActor.CommandPartner = (Actor)null;
                    merchantActor.ChangeBehavior(merchantActor.LastNormalMode);
                    break;
                }
                agent.CommandPartner = (Actor)null;
            }
            agent.EventKey       = (AIProject.EventType) 0;
            agent.CommandPartner = (Actor)null;
            agent.ResetActionFlag();
            if (agent.Schedule.enabled)
            {
                Actor.BehaviorSchedule schedule = agent.Schedule;
                schedule.enabled = false;
                agent.Schedule   = schedule;
            }
            agent.ClearItems();
            agent.ClearParticles();
            agent.ActivateNavMeshAgent();
            agent.ActivateTransfer(true);
            agent.Animation.ResetDefaultAnimatorController();
            agent.ChangeBehavior(actionType);
        }
예제 #3
0
        private void Refresh(PlayerActor player)
        {
            ChaFileControl chaFileControl = new ChaFileControl();
            int            id             = player.CurrentDevicePoint.ID;
            int            num            = 0;

            foreach (KeyValuePair <int, string> changedCharaFile in Singleton <Manager.Map> .Instance.ChangedCharaFiles)
            {
                string    str       = changedCharaFile.Value;
                AgentData agentData = Singleton <Game> .Instance.WorldData.AgentTable[changedCharaFile.Key];
                if (agentData.ParameterLock)
                {
                    agentData.ParameterLock = false;
                }
                bool       flag = !str.IsNullOrEmpty() && Manager.Config.GraphicData.CharasEntry[changedCharaFile.Key] && chaFileControl.LoadCharaFile(str, (byte)1, false, true) && agentData.MapID == Singleton <Manager.Map> .Instance.MapID;
                AgentActor agent;
                if (Singleton <Manager.Map> .Instance.AgentTable.TryGetValue(changedCharaFile.Key, ref agent))
                {
                    agent.DisableBehavior();
                    agent.ClearItems();
                    agent.ClearParticles();
                    Actor.BehaviorSchedule schedule = agent.Schedule;
                    schedule.enabled         = false;
                    agent.Schedule           = schedule;
                    agent.TargetInSightActor = (Actor)null;
                    if (Object.op_Inequality((Object)agent.CurrentPoint, (Object)null))
                    {
                        agent.CurrentPoint.SetActiveMapItemObjs(true);
                        agent.CurrentPoint.ReleaseSlot((Actor)agent);
                        agent.CurrentPoint = (ActionPoint)null;
                    }
                    agent.TargetInSightActionPoint = (ActionPoint)null;
                    if (Object.op_Inequality((Object)agent.Partner, (Object)null))
                    {
                        if (agent.Partner is PlayerActor)
                        {
                            (agent.Partner as PlayerActor).PlayerController.ChangeState("Normal");
                        }
                        else if (agent.Partner is AgentActor)
                        {
                            AgentActor partner = agent.Partner as AgentActor;
                            agent.StopLesbianSequence();
                            partner.StopLesbianSequence();
                            partner.Animation.EndIgnoreEvent();
                            Singleton <Game> .Instance.GetExpression(partner.ChaControl.fileParam.personality, "標準")?.Change(partner.ChaControl);

                            partner.Animation.ResetDefaultAnimatorController();
                            partner.ChangeBehavior(Desire.ActionType.Normal);
                        }
                        else if (agent.Partner is MerchantActor)
                        {
                            MerchantActor partner = agent.Partner as MerchantActor;
                            agent.StopLesbianSequence();
                            partner.ResetState();
                            partner.ChangeBehavior(partner.LastNormalMode);
                        }
                        agent.Partner = (Actor)null;
                    }
                    if (Object.op_Inequality((Object)agent.CommandPartner, (Object)null))
                    {
                        if (agent.CommandPartner is AgentActor)
                        {
                            (agent.CommandPartner as AgentActor).ChangeBehavior(Desire.ActionType.Normal);
                        }
                        else if (agent.CommandPartner is MerchantActor)
                        {
                            MerchantActor commandPartner = agent.CommandPartner as MerchantActor;
                            commandPartner.ChangeBehavior(commandPartner.LastNormalMode);
                        }
                        agent.CommandPartner = (Actor)null;
                    }
                    Singleton <Manager.Map> .Instance.RemoveAgent(agent);

                    if (flag)
                    {
                        agent = Singleton <Manager.Map> .Instance.AddAgent(changedCharaFile.Key, agentData);

                        agentData.PrevMapID = new int?();
                    }
                    else
                    {
                        agent = (AgentActor)null;
                    }
                }
                else if (flag)
                {
                    agent = Singleton <Manager.Map> .Instance.AddAgent(changedCharaFile.Key, agentData);

                    agentData.PrevMapID = new int?();
                }
                else
                {
                    agent = (AgentActor)null;
                }
                if (Object.op_Inequality((Object)agent, (Object)null))
                {
                    agent.RefreshWalkStatus(Singleton <Manager.Map> .Instance.PointAgent.Waypoints);
                    Singleton <Manager.Map> .Instance.InitSearchActorTargets(agent);

                    player.PlayerController.CommandArea.AddCommandableObject((ICommandable)agent);
                    using (IEnumerator <KeyValuePair <int, AgentActor> > enumerator = Singleton <Manager.Map> .Instance.AgentTable.GetEnumerator())
                    {
                        while (enumerator.MoveNext())
                        {
                            KeyValuePair <int, AgentActor> current = enumerator.Current;
                            if (!Object.op_Equality((Object)current.Value, (Object)agent))
                            {
                                current.Value.AddActor((Actor)agent);
                            }
                        }
                    }
                    agent.ActivateNavMeshAgent();
                    Transform recoverPoint = player.CurrentDevicePoint.RecoverPoints[num++];
                    agent.NavMeshAgent.Warp(recoverPoint.get_position());
                    agent.Rotation = recoverPoint.get_rotation();
                    agent.EnableBehavior();
                    agent.ChangeBehavior(Desire.ActionType.Normal);
                }
            }
            Resources.UnloadUnusedAssets();
            GC.Collect();
        }