Exemple #1
0
        private void DetermineWhatToGenerate(string propertyName, TopDownEntityViewModel viewModel, out bool shouldGenerateCsv, out bool shouldGenerateEntity, out bool shouldAddTopDownVariables)
        {
            var entity = GlueState.Self.CurrentEntitySave;

            shouldGenerateCsv         = false;
            shouldGenerateEntity      = false;
            shouldAddTopDownVariables = false;
            if (entity != null)
            {
                switch (propertyName)
                {
                case nameof(TopDownEntityViewModel.IsTopDown):
                    entity.Properties.SetValue(propertyName, viewModel.IsTopDown);
                    // Don't generate a CSV if it's not a top down
                    shouldGenerateCsv         = viewModel.IsTopDown;
                    shouldAddTopDownVariables = viewModel.IsTopDown;
                    shouldGenerateEntity      = true;
                    break;

                case nameof(TopDownEntityViewModel.TopDownValues):
                    shouldGenerateCsv = true;
                    // I don't think we need this...yet
                    shouldGenerateEntity      = false;
                    shouldAddTopDownVariables = false;
                    break;
                }
            }
        }
Exemple #2
0
        private static void GenerateCsv(EntitySave entity, TopDownEntityViewModel viewModel)
        {
            TaskManager.Self.Add(
                () => CsvGenerator.Self.GenerateFor(entity, viewModel),
                "Generating Top Down CSV for " + entity.Name);


            TaskManager.Self.Add(
                () =>
            {
                string rfsName      = entity.Name.Replace("\\", "/") + "/" + CsvGenerator.RelativeCsvFile;
                bool isAlreadyAdded = entity.ReferencedFiles.FirstOrDefault(item => item.Name == rfsName) != null;

                if (!isAlreadyAdded)
                {
                    GlueCommands.Self.GluxCommands.AddSingleFileTo(
                        CsvGenerator.Self.CsvFileFor(entity).FullPath,
                        CsvGenerator.RelativeCsvFile,
                        "",
                        null,
                        false,
                        null,
                        entity,
                        null
                        );
                }

                var rfs = entity.ReferencedFiles.FirstOrDefault(item => item.Name == rfsName);

                if (rfs != null && rfs.CreatesDictionary == false)
                {
                    rfs.CreatesDictionary = true;
                    GlueCommands.Self.GluxCommands.SaveGlux();
                    GlueCommands.Self.GenerateCodeCommands.GenerateElementCode(entity);
                }

                const string customClassName = "TopDownValues";
                if (GlueState.Self.CurrentGlueProject.CustomClasses.Any(item => item.Name == customClassName) == false)
                {
                    CustomClassSave throwaway;
                    GlueCommands.Self.GluxCommands.AddNewCustomClass(customClassName, out throwaway);
                }

                var customClass = GlueState.Self.CurrentGlueProject.CustomClasses
                                  .FirstOrDefault(item => item.Name == customClassName);

                if (rfs != null)
                {
                    if (customClass != null && customClass.CsvFilesUsingThis.Contains(rfs.Name) == false)
                    {
                        FlatRedBall.Glue.CreatedClass.CustomClassController.Self.SetCsvRfsToUseCustomClass(rfs, customClass, force: true);

                        GlueCommands.Self.GluxCommands.SaveGlux();
                    }
                }
            },
                "Adding csv to top down entity"
                );
        }
Exemple #3
0
        internal void GenerateFor(EntitySave entity, TopDownEntityViewModel viewModel)
        {
            string contents = GetCsvContents(entity, viewModel);

            string fileName = CsvFileFor(entity).FullPath;

            GlueCommands.Self.TryMultipleTimes(() =>
            {
                FileManager.SaveText(contents, fileName);
            });
        }
Exemple #4
0
        public MainEntityView GetControl()
        {
            if (mainControl == null)
            {
                viewModel = new TopDownEntityViewModel();
                viewModel.PropertyChanged += HandleViewModelPropertyChange;
                mainControl = new MainEntityView();

                mainControl.DataContext = viewModel;
            }

            return(mainControl);
        }
Exemple #5
0
        private void HandleIsTopDownPropertyChanged(TopDownEntityViewModel viewModel)
        {
            if (viewModel.IsTopDown &&
                GlueCommands.Self.GluxCommands.GetPluginRequirement(MainPlugin) == false)
            {
                GlueCommands.Self.GluxCommands.SetPluginRequirement(MainPlugin, true);
                GlueCommands.Self.PrintOutput("Added Top Down Plugin as a required plugin because the entity was marked as a top down entity");
                GlueCommands.Self.GluxCommands.SaveGluxTask();
            }

            if (viewModel.IsTopDown == false)
            {
                CheckForNoTopDownEntities();
            }
        }
Exemple #6
0
        private string GetCsvContents(EntitySave entity, TopDownEntityViewModel viewModel)
        {
            List <TopDownValues> values = new List <TopDownValues>();

            // create a default entry:
            var defaultValue = new TopDownValues();

            defaultValue.Name                        = "DefaultValues";
            defaultValue.MaxSpeed                    = 250;
            defaultValue.AccelerationTime            = 1;
            defaultValue.DecelerationTime            = .5f;
            defaultValue.UpdateDirectionFromVelocity = true;

            values.Add(defaultValue);

            RuntimeCsvRepresentation rcr = RuntimeCsvRepresentation.FromList(values);

            var nameHeader = rcr.Headers[0];

            nameHeader.IsRequired = true;
            // Setting it to IsRequired is not sufficient, need to
            // modify the "Original Text" prop
            // chop off the closing quote, and add ", required)"
            nameHeader.OriginalText = nameHeader.OriginalText.Substring(0, nameHeader.OriginalText.Length - 1) + ", required)";

            rcr.Headers[0] = nameHeader;

            var movementDefaults = new string[]
            {
            };

            rcr.Records.Add(movementDefaults);

            var toReturn = rcr.GenerateCsvString();

            return(toReturn);
        }