예제 #1
0
 internal void SetSection(Section section)
 {
     this.OriginalSection                = section;
     this.EditingSection                 = new Section();
     this.EditingSection.Scenario        = this.EditingFaction.Scenario;
     this.EditingSection.ID              = this.EditingSection.Scenario.Sections.GetFreeGameObjectID();
     this.EditingSection.BelongedFaction = this.EditingFaction;
     if (section != null)
     {
         this.IsNew = false;
         foreach (Architecture architecture in section.Architectures)
         {
             this.EditingSection.Architectures.Add(architecture);
         }
         this.EditingSection.Name               = section.Name;
         this.EditingSection.AIDetail           = section.AIDetail;
         this.EditingSection.OrientationFaction = section.OrientationFaction;
         this.EditingSection.OrientationSection = section.OrientationSection;
         this.EditingSection.OrientationState   = section.OrientationState;
         this.RefreshOKButton();
         this.RefreshOrientationButton();
         this.RefreshLabelTextsDisplay();
     }
     else
     {
         this.IsNew = true;
         this.RefreshLabelTextsDisplay();
     }
 }
예제 #2
0
        private void ShowAIDetailFrame()
        {
            this.TabListPlugin.InitialValues(this.EditingFaction.Scenario.GameCommonData.AllSectionAIDetails.GetSectionAIDetailList(), this.EditingSection.AIDetail, this.screen.MouseState.ScrollWheelValue, "");
            this.TabListPlugin.SetListKindByName("SectionAIDetail", true, false);
            this.TabListPlugin.SetSelectedTab("");
            this.GameFramePlugin.Kind     = FrameKind.Section;
            this.GameFramePlugin.Function = FrameFunction.GetSection;
            this.GameFramePlugin.SetFrameContent(this.TabListPlugin.TabList, this.screen.viewportSize);
            this.GameFramePlugin.OKButtonEnabled     = false;
            this.GameFramePlugin.CancelButtonEnabled = true;
            this.GameFramePlugin.SetOKFunction(delegate {
                this.EditingSection.AIDetail = this.TabListPlugin.SelectedItem as SectionAIDetail;
                switch (this.EditingSection.AIDetail.OrientationKind)
                {
                case SectionOrientationKind.军区:
                    {
                        SectionList otherSections = this.EditingFaction.GetOtherSections(this.OriginalSection);
                        if (otherSections.Count == 1)
                        {
                            this.EditingSection.OrientationSection = otherSections[0] as Section;
                        }
                        break;
                    }

                case SectionOrientationKind.势力:
                    {
                        GameObjectList diplomaticRelationListByFactionID = this.EditingFaction.Scenario.DiplomaticRelations.GetDiplomaticRelationListByFactionID(this.EditingFaction.ID);
                        if (diplomaticRelationListByFactionID.Count == 1)
                        {
                            this.EditingSection.OrientationFaction = (diplomaticRelationListByFactionID[0] as DiplomaticRelation).GetDiplomaticFaction(this.EditingFaction.ID);
                        }
                        break;
                    }

                case SectionOrientationKind.州域:
                    {
                        StateList states = this.EditingFaction.Scenario.States;
                        if (states.Count == 1)
                        {
                            this.EditingSection.OrientationState = states[0] as State;
                        }
                        break;
                    }

                case SectionOrientationKind.建筑:
                    {
                        ArchitectureList allArch    = this.EditingFaction.Scenario.Architectures;
                        ArchitectureList targetArch = new ArchitectureList();
                        foreach (Architecture a in allArch)
                        {
                            if (a.BelongedFaction != this.EditingFaction)
                            {
                                targetArch.Add(a);
                            }
                        }
                        if (targetArch.Count == 1)
                        {
                            this.EditingSection.OrientationArchitecture = targetArch[0] as Architecture;
                        }
                        break;
                    }
                }
                this.RefreshOKButton();
                if (this.IsNew)
                {
                    this.EditingSection.RefreshSectionName();
                }
                this.RefreshOrientationButton();
                this.RefreshLabelTextsDisplay();
            });
            this.GameFramePlugin.IsShowing = true;
        }
예제 #3
0
 private void OK()
 {
     if (this.IsNew)
     {
         foreach (Section section in this.EditingFaction.Sections)
         {
             foreach (Architecture architecture in this.EditingSection.Architectures)
             {
                 section.RemoveArchitecture(architecture);
             }
         }
         foreach (Architecture architecture in this.EditingSection.Architectures)
         {
             architecture.BelongedSection = this.EditingSection;
         }
         this.EditingFaction.AddSection(this.EditingSection);
         this.EditingFaction.Scenario.Sections.AddSectionWithEvent(this.EditingSection);
     }
     else
     {
         if (this.OriginalSection.AIDetail.AutoRun != this.EditingSection.AIDetail.AutoRun)
         {
             foreach (Architecture architecture in this.EditingSection.Architectures)
             {
                 foreach (Routeway routeway in architecture.Routeways.GetList())
                 {
                     if (!(routeway.Building && (routeway.LastActivePointIndex >= 0)))
                     {
                         architecture.Scenario.RemoveRouteway(routeway);
                     }
                 }
             }
         }
         this.OriginalSection.AIDetail                = this.EditingSection.AIDetail;
         this.OriginalSection.OrientationFaction      = this.EditingSection.OrientationFaction;
         this.OriginalSection.OrientationSection      = this.EditingSection.OrientationSection;
         this.OriginalSection.OrientationState        = this.EditingSection.OrientationState;
         this.OriginalSection.OrientationArchitecture = this.EditingSection.OrientationArchitecture;
         GameObjectList list = this.OriginalSection.Architectures.GetList();
         foreach (Architecture architecture in list)
         {
             this.OriginalSection.RemoveArchitecture(architecture);
         }
         foreach (Section section in this.EditingFaction.Sections)
         {
             foreach (Architecture architecture in this.EditingSection.Architectures)
             {
                 section.RemoveArchitecture(architecture);
             }
         }
         foreach (Architecture architecture in this.EditingSection.Architectures)
         {
             this.OriginalSection.AddArchitecture(architecture);
         }
         Section anotherSection = this.EditingFaction.GetAnotherSection(this.OriginalSection);
         if (anotherSection != null)
         {
             foreach (Architecture architecture in list)
             {
                 if (!this.OriginalSection.HasArchitecture(architecture))
                 {
                     anotherSection.AddArchitecture(architecture);
                 }
             }
         }
     }
     foreach (Section section in this.EditingFaction.Sections.GetList())
     {
         if (section.ArchitectureCount > 0)
         {
             section.RefreshSectionName();
         }
         else
         {
             foreach (Section section3 in this.EditingFaction.Sections.GetList())
             {
                 if ((section3 != section) && (section3.OrientationSection == section))
                 {
                     foreach (SectionAIDetail detail in this.EditingFaction.Scenario.GameCommonData.AllSectionAIDetails.SectionAIDetails.Values)
                     {
                         if (detail.OrientationKind == SectionOrientationKind.无)
                         {
                             section3.AIDetail = detail;
                             break;
                         }
                     }
                     section3.OrientationSection = null;
                 }
             }
             this.EditingFaction.RemoveSection(section);
             this.EditingFaction.Scenario.Sections.Remove(section);
         }
     }
     this.IsShowing = false;
 }