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(); } }
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; }
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; }