private void OnTechRecordClicked_ResearchFreeTech(TechnologyRecord techRecord) { if (TechCanon.IsTechAvailableToCiv(techRecord.TechToDisplay, ObjectToDisplay) && TechCanon.GetFreeTechsForCiv(ObjectToDisplay) > 0 ) { TechCanon.SetTechAsDiscoveredForCiv(techRecord.TechToDisplay, ObjectToDisplay); TechCanon.RemoveFreeTechFromCiv(ObjectToDisplay); Refresh(); } }
private void OnTechRecordClicked(TechnologyRecord techRecord) { switch (SelectionMode) { case TechSelectionMode.SetTechQueue: OnTechRecordClicked_SetTechQueue(techRecord); break; case TechSelectionMode.SetDiscoveredTechs: OnTechRecordClicked_SetDiscoveredTechs(techRecord); break; case TechSelectionMode.ResearchFreeTech: OnTechRecordClicked_ResearchFreeTech(techRecord); break; default: throw new NotImplementedException(); } }
private void OnTechRecordClicked_SetTechQueue(TechnologyRecord techRecord) { if (!Input.GetButton("Shift")) { ObjectToDisplay.TechQueue.Clear(); } foreach (var tech in TechCanon.GetPrerequisiteChainToResearchTech(techRecord.TechToDisplay, ObjectToDisplay)) { if (!ObjectToDisplay.TechQueue.Contains(tech)) { ObjectToDisplay.TechQueue.Enqueue(tech); } } Refresh(); }
private void OnTechRecordClicked_SetDiscoveredTechs(TechnologyRecord techRecord) { var techClicked = techRecord.TechToDisplay; if (TechCanon.IsTechDiscoveredByCiv(techClicked, ObjectToDisplay)) { foreach (var postrequisiteTech in TechCanon.GetDiscoveredPostrequisiteTechs(techClicked, ObjectToDisplay)) { TechCanon.SetTechAsUndiscoveredForCiv(postrequisiteTech, ObjectToDisplay); } TechCanon.SetTechAsUndiscoveredForCiv(techClicked, ObjectToDisplay); } else { foreach (var tech in TechCanon.GetPrerequisiteChainToResearchTech(techClicked, ObjectToDisplay)) { TechCanon.SetTechAsDiscoveredForCiv(tech, ObjectToDisplay); } } Refresh(); }