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; } } }
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" ); }
internal void GenerateFor(EntitySave entity, TopDownEntityViewModel viewModel) { string contents = GetCsvContents(entity, viewModel); string fileName = CsvFileFor(entity).FullPath; GlueCommands.Self.TryMultipleTimes(() => { FileManager.SaveText(contents, fileName); }); }
public MainEntityView GetControl() { if (mainControl == null) { viewModel = new TopDownEntityViewModel(); viewModel.PropertyChanged += HandleViewModelPropertyChange; mainControl = new MainEntityView(); mainControl.DataContext = viewModel; } return(mainControl); }
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(); } }
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); }