private bool checkScienceTypeOfTower(int typeId, ScienceType userScienceType)
        {
            Type root = null;

            switch (userScienceType)
            {
            case ScienceType.PHYS:
                root = typeof(PhysicsTower);
                break;

            case ScienceType.CHEM:
                root = typeof(ChemistryTower);
                break;

            case ScienceType.BIO:
                root = typeof(BiologyTower);
                break;
            }

            Type      type = TypeIdGenerator.getTowerType(typeId);
            TowerNode node = TypeIdGenerator.getTowerNodeInst(type);

            if (node.towerType != root && node.getRoot().towerType == root)
            {
                return(true);
            }

            return(false);
        }
        private bool checkIfTowerUpgradableTo(int currentTowerTypeId, Type upgradingTowerType)
        {
            TowerNode tn = TypeIdGenerator.getTowerNodeInst(upgradingTowerType);

            if (tn == null)
            {
                return(false);
            }

            return(tn.checkParent(currentTowerTypeId) != null);
        }