Exemple #1
0
    public virtual void ReadXml(XmlReader reader)
    {
        int num = reader.ReadVersionAttribute();

        if (num >= 5)
        {
            this.InternalGUID = reader.GetAttribute <ulong>("InternalGUID");
        }
        if (this.InternalGUID == GameEntityGUID.Zero)
        {
            this.InternalGUID = AIScheduler.Services.GetService <IAIEntityGUIDAIHelper>().GenerateAIEntityGUID();
        }
        this.ForceArmyGUID = reader.GetAttribute <ulong>("ForceArmyGUID", 0UL);
        reader.ReadStartElement();
        try
        {
            if (reader.IsStartElement("MissionList") && reader.IsEmptyElement())
            {
                reader.Skip();
            }
            else
            {
                reader.ReadStartElement("MissionList");
                while (reader.IsStartElement())
                {
                    string attribute = reader.GetAttribute("AssemblyQualifiedName");
                    if (!string.IsNullOrEmpty(attribute))
                    {
                        Type type = Type.GetType(attribute);
                        AICommanderMission aicommanderMission = (AICommanderMission)Activator.CreateInstance(type);
                        aicommanderMission.Initialize(this);
                        reader.ReadElementSerializable <AICommanderMission>(ref aicommanderMission);
                        this.Missions.Add(aicommanderMission);
                        Diagnostics.Assert(AIScheduler.Services != null);
                        ITickableRepositoryAIHelper service = AIScheduler.Services.GetService <ITickableRepositoryAIHelper>();
                        Diagnostics.Assert(service != null);
                        service.Register(aicommanderMission);
                    }
                    else
                    {
                        reader.Skip();
                    }
                }
                reader.ReadEndElement("MissionList");
            }
        }
        catch (Exception ex)
        {
            Diagnostics.LogError("Fail to load the mission: {0}", new object[]
            {
                ex.ToString()
            });
            reader.Skip();
        }
    }
    public override void Release()
    {
        base.Release();
        this.worldPositionningService = null;
        this.departmentOfTheInterior  = null;
        this.aiDataRepositoryHelper   = null;
        ITickableRepositoryAIHelper service = AIScheduler.Services.GetService <ITickableRepositoryAIHelper>();

        Diagnostics.Assert(service != null);
        service.Unregister(this);
    }
    public override IEnumerator Initialize(AIEntity aiEntity)
    {
        yield return(base.Initialize(aiEntity));

        IGameService service = Services.GetService <IGameService>();

        Diagnostics.Assert(service != null);
        this.worldPositionningService = service.Game.Services.GetService <IWorldPositionningService>();
        Diagnostics.Assert(this.worldPositionningService != null);
        this.departmentOfTheInterior = base.AIEntity.Empire.GetAgency <DepartmentOfTheInterior>();
        this.aiDataRepositoryHelper  = AIScheduler.Services.GetService <IAIDataRepositoryAIHelper>();
        base.AIEntity.RegisterPass(AIEntity.Passes.RefreshObjectives.ToString(), "AILayer_SiegeBreaker_RefreshObjectives", new AIEntity.AIAction(this.RefreshObjectives), this, new StaticString[0]);
        ITickableRepositoryAIHelper service2 = AIScheduler.Services.GetService <ITickableRepositoryAIHelper>();

        Diagnostics.Assert(service2 != null);
        service2.Register(this);
        yield break;
    }