コード例 #1
0
        internal static void Execute(Command com)
        {
            if (!GameStarted)
            {
                Debug.LogError("BOOM");
                return;
            }
            if (com.ControllerID != byte.MaxValue)
            {
                AgentController cont = AgentController.InstanceManagers [com.ControllerID];
                cont.Execute(com);
            }
            else
            {
                BehaviourHelperManager.Execute(com);
            }

            DefaultMessageRaiser.Execute(com);
        }
コード例 #2
0
        public void Initialize()
        {
            Diplomacy.FastClear();
            for (int i = 0; i < TeamManager.Teams.Count; i++)
            {
                Team team = TeamManager.Teams[i];
                if (team != this)
                {
                    this.SetAllegiance(team, AllegianceType.Neutral);
                }
            }
            TeamManager.UpdateDiplomacy(this);

            TeamManager.Teams.Add(this);
            this.SetAllegiance(this, AllegianceType.Friendly);

            MainController = AgentController.Create();
            MainController.JoinTeam(this);
        }
コード例 #3
0
        public static LSProjectile Create(string projCode, LSAgent source, Vector3d offset, AllegianceType targetAllegiance, Func <LSAgent, bool> agentConditional, Action <LSAgent> hitEffect)
        {
            Vector2d        relativePos      = offset.ToVector2d();
            Vector2d        worldPos         = relativePos.Rotated(source.Body.Rotation) + source.Body.Position;
            Vector3d        pos              = new Vector3d(worldPos.x, worldPos.y, offset.z + source.Body.HeightPos);
            AgentController sourceController = source.Controller;
            LSProjectile    proj             = Create(
                projCode,
                pos,
                agentConditional,
                (bite) =>
            {
                return((sourceController.GetAllegiance(bite) & targetAllegiance) != 0);
            }
                ,
                hitEffect);

            return(proj);
        }
コード例 #4
0
        internal static void Simulate()
        {
            MainNetworkHelper.Simulate();
            DefaultMessageRaiser.EarlySimulate();
            if (InfluenceCount == 0)
            {
                InfluenceSimulate();
                InfluenceCount = InfluenceResolution - 1;
                if (FrameManager.CanAdvanceFrame == false)
                {
                    Stalled = true;
                    return;
                }
                Stalled = false;

                FrameManager.Simulate();
                InfluenceFrameCount++;
            }
            else
            {
                InfluenceCount--;
            }
            if (Stalled || IsPaused)
            {
                return;
            }

            if (FrameCount == 0)
            {
                GameStart();
            }
            BehaviourHelperManager.Simulate();
            AgentController.Simulate();
            PhysicsManager.Simulate();
            CoroutineManager.Simulate();
            InfluenceManager.Simulate();
            ProjectileManager.Simulate();

            LateSimulate();
            FrameCount++;
        }
コード例 #5
0
        public static void Deactivate()
        {
            for (int i = 0; i < PeakGlobalID; i++)
            {
                if (GlobalAgentActive[i])
                {
                    DestroyAgent(GlobalAgents[i], true);
                }
            }
            CheckDestroyAgent();

            for (int i = 0; i < DeathingAgents.PeakCount; i++)
            {
                if (DeathingAgents.arrayAllocation[i])
                {
                    RTSAgent agent = DeathingAgents[i];
                    AgentController.CompleteLife(agent);
                }
            }
            DeathingAgents.FastClear();
        }
コード例 #6
0
 public static void RemoveController(AgentController agentController)
 {
     Selector.Clear();
     AgentControllers.RemoveAt(agentController.PlayerIndex);
     if (MainController == agentController)
     {
         if (AgentControllers.Count == 0)
         {
             MainController = null;
         }
         else
         {
             for (int i = 0; i < AgentControllers.PeakCount; i++)
             {
                 if (AgentControllers.arrayAllocation [i])
                 {
                     MainController = AgentControllers [i];
                     break;
                 }
             }
         }
     }
 }
コード例 #7
0
        protected override void OnExecute(Command com)
        {
            DefaultData target;

            if (com.TryGetData <DefaultData>(out target) && target.Is(DataType.UShort))
            {
                IsFocused       = true;
                IsHarvestMoving = false;
                Agent.Tag       = AgentTag.Harvester;

                RTSAgent tempTarget;
                ushort   targetValue = (ushort)target.Value;

                if (AgentController.TryGetAgentInstance(targetValue, out tempTarget))
                {
                    if (tempTarget != Agent)
                    {
                        if (tempTarget.MyAgentType == AgentType.Resource && !tempTarget.GetAbility <ResourceDeposit>().IsEmpty())
                        {
                            StartHarvest(tempTarget);
                        }
                        else if (tempTarget.MyAgentType == AgentType.Building && currentLoadAmount > 0)
                        {
                            TargetStorage(tempTarget);
                        }
                    }
                    else
                    {
                        StopHarvesting(true);
                    }
                }
                else
                {
                    Debug.Log("nope");
                }
            }
        }
コード例 #8
0
        public static void ChangeController(RTSAgent agent, AgentController newCont)
        {
            AgentController leController = agent.Controller;

            if (leController != null)
            {
                leController.LocalAgentActive[agent.LocalID] = false;
                GlobalAgentActive[agent.GlobalID]            = false;
                leController.OpenLocalIDs.Add(agent.LocalID);
                OpenGlobalIDs.Add(agent.GlobalID);

                if (newCont == null)
                {
                    agent.InitializeController(null, 0, 0);
                }
                else
                {
                    agent.Influencer.Deactivate();

                    newCont.AddAgent(agent);
                    agent.Influencer.Initialize();
                }
            }
        }
コード例 #9
0
        protected override void OnExecute(Command com)
        {
            DefaultData target;

            if (com.TryGetData <DefaultData>(out target) && target.Is(DataType.UShort))
            {
                IsFocused     = true;
                IsBuildMoving = false;
                LSAgent tempTarget;
                ushort  targetValue = (ushort)target.Value;
                if (AgentController.TryGetAgentInstance(targetValue, out tempTarget))
                {
                    RTSAgent building = (RTSAgent)tempTarget;
                    if (building && building.GetAbility <Structure>().UnderConstruction())
                    {
                        SetBuilding(building);
                    }
                }
                else
                {
                    Debug.Log("nope");
                }
            }
        }
コード例 #10
0
        internal static void Deactivate()
        {
            DefaultMessageRaiser.EarlyDeactivate();

            if (GameStarted == false)
            {
                return;
            }
            Selector.Clear();
            AgentController.Deactivate();
            BehaviourHelperManager.Deactivate();
            ProjectileManager.Deactivate();
            EffectManager.Deactivate();
            ClientManager.Deactivate();

            ClientManager.Quit();
            PhysicsManager.Deactivate();
            GameStarted = false;
            LSServer.Deactivate();
            DefaultMessageRaiser.LateDeactivate();
            CoroutineManager.Deactivate();

            DefaultMessageRaiser.Reset();
        }
コード例 #11
0
 public void InitializeController(AgentController controller, ushort localID, ushort globalID)
 {
     this.Controller = controller;
     this.LocalID    = localID;
     this.GlobalID   = globalID;
 }
コード例 #12
0
 public AllegianceType GetAllegiance(AgentController otherController)
 {
     return(HasTeam && otherController.HasTeam ? MyTeam.GetAllegiance(otherController) : DiplomacyFlags[otherController.ControllerID]);
 }
コード例 #13
0
 public AttackerInfo(RTSAgent attacker, AgentController controller)
 {
     Attacker   = attacker;
     Controller = controller;
 }
コード例 #14
0
        //   public static Player MainController.Commander { get; private set; }
        //  public static AgentController _environmentController { get; set; }
        #endregion

        #region Public
        public static void Initialize()
        {
            MainController = null;
            Players.FastClear();
            AgentControllers.FastClear();
        }
コード例 #15
0
 public AllegianceType GetAllegiance(AgentController controller)
 {
     return(GetAllegiance(controller.MyTeam));
 }
コード例 #16
0
 public void AddController(AgentController controller)
 {
     controller.JoinTeam(this);
 }