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