/*
         * This function looks up the model list for the model name
         */
        public TowerModel TowerModelFinder(string TowerModelName, TowerListClass EnvTowerModelList)
        {
            int EnvFindResultIdx = EnvTowerModelList.FindTowerModelByName(TowerModelName);

            if (EnvFindResultIdx == -1)
            {
                return(null);
            }
            else
            {
                return(EnvTowerModelList.getTowerModel(EnvFindResultIdx));
            }
        }
        public TowerModel TowerModelGetter(LISFileReader EnvLisFileReader, TowerListClass EnvTowerModelList, TowerModel TowerModelOrigin,
                                           FormParas EnvFormParams)
        {
            /*
             * First we try to find the model you want
             */
            string     TowerModelName   = TowerModelNameGetter(EnvLisFileReader);
            TowerModel EnvRetTowerModel = TowerModelFinder(TowerModelName, EnvTowerModelList);

            if (EnvRetTowerModel != null) // Get it!
            {
                return(EnvRetTowerModel);
            }
            else
            {
                //Here to build a new model and return
                return(TowerModelBuilder(TowerModelOrigin, EnvFormParams, EnvLisFileReader, EnvTowerModelList));
            }
        }
        /*
         * This function will decide if you need to build a new model
         * And how to build the model
         * And where to put the model
         */
        public TowerModel TowerModelBuilder(TowerModel TowerModelOrigin, FormParas EnvFormParams,
                                            LISFileReader EnvLisFileReader, TowerListClass TowerModelList)
        {
            // First: Transfer the basic datas
            TowerModel NewTowerModel = new TowerModel();

            NewTowerModel.TowerModelBasicDataCopier(TowerModelOrigin);

            Models.ModelPropertiesResolver mResolver = new ModelPropertiesResolver();

            // Second: Build the color table
            mResolver.ModelColorTableResolver(EnvLisFileReader.param.ModelTypeId, NewTowerModel, EnvLisFileReader);
            // Third: Revise the tower elements

            /*
             * if (EnvFormParams.ifReviseTowerModelParameters == 1)
             *  mResolver.ModelParameterResolver(EnvLisFileReader.param.ModelTypeId, NewTowerModel, EnvLisFileReader);
             */
            // Last: Put the model in the list
            //string TowerModelName = TowerModelNameGetter(EnvLisFileReader);
            //TowerModelList.InsertTowerModel(NewTowerModel, TowerModelName);

            return(NewTowerModel);
        }