private static void LoadLocalization() { if (GlueProjectSave.UsesTranslation) { List <ReferencedFileSave> allRfses = GlueProjectSave.GetAllReferencedFiles(); foreach (ReferencedFileSave rfs in allRfses) { if (rfs.IsDatabaseForLocalizing) { string fullFileName = ElementRuntime.ContentDirectory + rfs.Name; try { LocalizationManager.AddDatabase( fullFileName, rfs.CsvDelimiter.ToChar()); } catch (Exception e) { MessageBox.Show("Error loading localization database:\n\n" + fullFileName + "\n\n" + e.Message); } break; } } } }
public GumProjectSave ToGumProjectSave(GlueProjectSave glueProject) { GumProjectSave gumProject = new GumProjectSave(); foreach (var entitySave in glueProject.Entities) { var component = ToComponent(entitySave); gumProject.Components.Add(component); var componentReference = ToComponentReference(entitySave); gumProject.ComponentReferences.Add(componentReference); } foreach (var screen in glueProject.Screens) { var gumScreen = ToScreen(screen); gumProject.Screens.Add(gumScreen); var screenReference = ToScreenReference(screen); gumProject.ScreenReferences.Add(screenReference); } gumProject.AddNewStandardElementTypes(); gumProject.FixStandardVariables(); // set the finder before we do this because we'll need it to get objects: ObjectFinder.Self.GumProjectSave = gumProject; AdjustStandardsToMatchFrb(gumProject); GumCommands.Self.GuiCommands.PrintOutput($"Created Gum project from Glue project"); return(gumProject); }
internal void GenerateGlux(bool save = true) { ArrowProjectToGlueProjectConverter converter = new ArrowProjectToGlueProjectConverter(); GlueProjectSave glueProjectSave = converter.ToGlueProjectSave(ArrowState.Self.CurrentArrowProject); if (glueProjectSave != null) { foreach (var screen in glueProjectSave.Screens) { foreach (var nos in screen.AllNamedObjects) { nos.UpdateCustomProperties(); } } foreach (var entity in glueProjectSave.Entities) { foreach (var nos in entity.AllNamedObjects) { nos.UpdateCustomProperties(); } } } ArrowState.Self.CurrentGlueProjectSave = glueProjectSave; if (save) { SaveGlux(); } }
internal static void GenerateAllCustomClasses(GlueProjectSave glueProject) { foreach (var customClass in glueProject.CustomClasses) { GenerateCustomClass(customClass); } }
private static IElement GetElementFromObjectString(string element, GlueProjectSave glueProjectSave, out int index) { Regex regex = new Regex(@"(Screens)\[[0-9]+\]"); Match match = regex.Match(element); if (match != Match.Empty && match.Groups.Count > 1 && match.Groups[1].Value == "Screens") { string matchRegex = @"Screens\[([0-9]+)\]"; string indexAsString = Regex.Match(element, matchRegex).Groups[1].Value; index = int.Parse(indexAsString); return(glueProjectSave.Screens[index]); } //string screenOrEntity = regex = new Regex(@"(Entities)\[[0-9]+\]"); match = regex.Match(element); if (match != Match.Empty && match.Groups.Count > 1 && match.Groups[1].Value == "Entities") { string matchRegex = @"Entities\[([0-9]+)\]"; string indexAsString = Regex.Match(element, matchRegex).Groups[1].Value; index = int.Parse(indexAsString); return(glueProjectSave.Entities[index]); } index = -1; return(null); }
public static void CreateGlueProjectSettingsFor(GlueProjectSave project) { DisplaySettings settings = new DisplaySettings(); settings.AllowWindowResizing = false; settings.AspectRatioHeight = 9; settings.AspectRatioWidth = 16; settings.Is2D = project.In2D; settings.ResizeBehavior = ResizeBehavior.StretchVisibleArea; settings.ResizeBehaviorGum = ResizeBehavior.StretchVisibleArea; settings.ResolutionWidth = project.ResolutionWidth; settings.ResolutionHeight = project.ResolutionHeight; settings.RunInFullScreen = false; settings.Scale = 100; settings.ScaleGum = 100; settings.SupportLandscape = true; settings.SupportPortrait = false; project.DisplaySettings = settings; }
/// <summary> /// Removes all ReferencedFileSaves which are marked as excluded from the argument ideProject. /// </summary> /// <remarks> /// <param name="ideProject">The project to check for exclusions.</param> /// <param name="glueProject">The current Glue project.</param> /// <returns>Whether any removals were made.</returns> public bool RemoveAllExcludedFiles(ProjectBase ideProject, GlueProjectSave glueProject) { bool wasAnythingRemoved = false; // gets files which have any exclusions foreach (var rfs in glueProject.GetAllReferencedFiles().Where(item => item.ProjectsToExcludeFrom.Count != 0)) { if (rfs.ProjectsToExcludeFrom.Contains(ideProject.Name)) { wasAnythingRemoved |= TryRemoveFromProject(rfs, ideProject); } } return(wasAnythingRemoved); }
public void LoadProject(string fileName) { string extension = FileManager.GetExtension(fileName); // better be a .arox ArrowProjectSave arrowProject = FileManager.XmlDeserialize <ArrowProjectSave>(fileName); ArrowState.Self.CurrentArrowProject = arrowProject; ArrowProjectToGlueProjectConverter converter = new ArrowProjectToGlueProjectConverter(); GlueProjectSave glueProjectSave = converter.ToGlueProjectSave(ArrowState.Self.CurrentArrowProject); ArrowState.Self.CurrentGlueProjectSave = glueProjectSave; ArrowState.Self.CurrentGluxFileLocation = fileName; }
public GlueProjectSave ToGlueProjectSave(GumProjectSave gumProjectSave, string gluxFolder) { mGluxFolder = gluxFolder; mGumProjectSave = gumProjectSave; mInstanceToNos.GumProjectSave = mGumProjectSave; GlueProjectSave toReturn = new GlueProjectSave(); mGlueProjectSave = toReturn; var copiedFiles = CopyExternalFilesToProjects(); AddScreensAndEntities(copiedFiles); return(toReturn); }
private void AddResolutionButton_Click(object sender, EventArgs e) { TextInputWindow tiw = new TextInputWindow(); tiw.DisplayText = "Enter name for the new resolution preset"; if (tiw.ShowDialog() == System.Windows.Forms.DialogResult.OK) { string whyIsntValid = WhyIsntResolutionPresetNameValid(tiw.Result); if (!string.IsNullOrEmpty(whyIsntValid)) { MessageBox.Show(whyIsntValid); } else { GlueProjectSave glueProject = ObjectFinder.Self.GlueProject; int width = 0; if (int.TryParse(this.tbResWidth.Text, out width) == false) { width = 0; } int height = 0; if (int.TryParse(this.tbResHeight.Text, out height) == false) { height = 0; } ResolutionValues resolutionValues = new ResolutionValues(); resolutionValues.Width = width; resolutionValues.Height = height; resolutionValues.Name = tiw.Result; glueProject.ResolutionPresets.Add(resolutionValues); GluxCommands.Self.SaveGlux(); RefreshPresetTreeView(); } } }
public void RefreshCamera() { SpriteManager.Camera.Position = new Microsoft.Xna.Framework.Vector3(0, 0, 40); object selectedItem = CameraConfigurationComboBox.SelectedItem; float yResolution = 600; if (selectedItem is CameraConfiguration) { ApplySettingsFromCameraConfigurationEnum(ref yResolution); } else if (selectedItem is string) { if ((string)selectedItem == GlueCameraSettings) { GlueProjectSave glueProject = GlueViewState.Self.CurrentGlueProject; if (glueProject != null) { if (glueProject.DisplaySettings != null) { yResolution = SetCameraFromDisplaySettings(yResolution, glueProject.DisplaySettings); } else { yResolution = SetCameraFromOldValues(yResolution, glueProject); } } } } GuiManager.OverridingFieldOfView = MathFunctions.GetAspectRatioForSameSizeAtResolution(yResolution); this.propertyGrid1.Refresh(); PluginManager.ReactToResolutionChange(); }
private float SetCameraFromOldValues(float yResolution, GlueProjectSave glueProject) { SpriteManager.Camera.Orthogonal = glueProject.In2D; if (glueProject.SetResolution) { SetResolution(glueProject.ResolutionWidth, glueProject.ResolutionHeight); yResolution = glueProject.ResolutionHeight; } if (glueProject.SetOrthogonalResolution) { SpriteManager.Camera.OrthogonalWidth = glueProject.OrthogonalWidth; SpriteManager.Camera.OrthogonalHeight = glueProject.OrthogonalHeight; } else { // If we don't set it explicitly then default to the resolution: SpriteManager.Camera.OrthogonalWidth = glueProject.ResolutionWidth; SpriteManager.Camera.OrthogonalHeight = glueProject.ResolutionHeight; } return(yResolution); }
public GlueProjectSave ToGlueProjectSave(ArrowProjectSave arrowProject) { GlueProjectSave toReturn = new GlueProjectSave(); ArrowElementToGlueConverter elementToElementConverter = new ArrowElementToGlueConverter(); foreach (var element in arrowProject.Elements) { IElement glueElement = elementToElementConverter.ToGlueIElement(element); if (glueElement is ScreenSave) { toReturn.Screens.Add(glueElement as ScreenSave); } else { toReturn.Entities.Add(glueElement as EntitySave); } } return(toReturn); }
static void FillSearchBoxWithOptions(string text) { GlueProjectSave glueProjectSave = ProjectManager.GlueProjectSave; if (glueProjectSave == null) { return; } // Order it like this: // 1: Screens // 2: Entities // 3: Objects (instances) // 4: Files // 5: States // 6: State Categories // 7: Variables text = text.ToLower(); MainGlueWindow.Self.SearchListBox.Items.Clear(); bool showScreens; bool showEntities; bool showObjects; bool showFiles; bool showStates; bool showVariables; bool showEvents; bool showCategories; text = DetermineWhatIsShown(text, out showScreens, out showEntities, out showObjects, out showFiles, out showStates, out showVariables, out showEvents, out showCategories); List <object> toAdd = new List <object>(); #region Add Screens if (showScreens) { List <object> tempList = new List <object>(); foreach (ScreenSave screen in glueProjectSave.Screens) { string name = screen.Name.ToLower(); name = name.Substring("screens\\".Length); if (name.Contains(text)) { tempList.Add(screen); } } tempList = tempList.OrderBy(item => item.ToString()).ToList(); toAdd.AddRange(tempList); } #endregion #region Add Entities if (showEntities) { List <object> tempList = new List <object>(); foreach (EntitySave entity in glueProjectSave.Entities) { string name = entity.Name.ToLower(); name = name.Substring("entities\\".Length); if (name.Contains(text)) { tempList.Add(entity); } } tempList = tempList.OrderBy(item => item.ToString()).ToList(); toAdd.AddRange(tempList); } #endregion #region Add Objects (instances) if (showObjects) { List <object> tempList = new List <object>(); foreach (ScreenSave screen in glueProjectSave.Screens) { List <NamedObjectSave> namedObjectList = screen.NamedObjects; FillSearchListBoxWithMatchingNos(text, namedObjectList, tempList); } foreach (EntitySave entity in glueProjectSave.Entities) { List <NamedObjectSave> namedObjectList = entity.NamedObjects; FillSearchListBoxWithMatchingNos(text, namedObjectList, tempList); } tempList = tempList.OrderBy(item => item.ToString()).ToList(); toAdd.AddRange(tempList); } #endregion #region Add Files if (showFiles) { List <object> tempList = new List <object>(); foreach (ScreenSave screen in glueProjectSave.Screens) { foreach (ReferencedFileSave rfs in screen.ReferencedFiles) { if (rfs.Name.ToLower().Contains(text)) { tempList.Add(rfs); } } } foreach (EntitySave entity in glueProjectSave.Entities) { foreach (ReferencedFileSave rfs in entity.ReferencedFiles) { if (rfs.Name.ToLower().Contains(text)) { tempList.Add(rfs); } } } foreach (ReferencedFileSave rfs in glueProjectSave.GlobalFiles) { if (rfs.Name.ToLower().Contains(text)) { tempList.Add(rfs); } } tempList = tempList.OrderBy(item => item.ToString()).ToList(); toAdd.AddRange(tempList); } #endregion #region Add States if (showStates) { List <object> tempList = new List <object>(); foreach (ScreenSave screen in glueProjectSave.Screens) { foreach (StateSave state in screen.AllStates) { if (state.Name.ToLower().Contains(text)) { tempList.Add(state); } } } foreach (EntitySave entity in glueProjectSave.Entities) { foreach (StateSave state in entity.AllStates) { if (state.Name.ToLower().Contains(text)) { tempList.Add(state); } } } tempList = tempList.OrderBy(item => item.ToString()).ToList(); toAdd.AddRange(tempList); } #endregion #region Add State Categories if (showCategories) { List <object> tempList = new List <object>(); foreach (ScreenSave screen in glueProjectSave.Screens) { foreach (StateSaveCategory category in screen.StateCategoryList) { if (category.Name.ToLower().Contains(text)) { tempList.Add(category); } } } foreach (EntitySave entity in glueProjectSave.Entities) { foreach (StateSaveCategory category in entity.StateCategoryList) { if (category.Name.ToLower().Contains(text)) { tempList.Add(category); } } } tempList = tempList.OrderBy(item => item.ToString()).ToList(); toAdd.AddRange(tempList); } #endregion #region Add Variables if (showVariables) { List <object> tempList = new List <object>(); foreach (ScreenSave screen in glueProjectSave.Screens) { foreach (CustomVariable variable in screen.CustomVariables) { if (variable.Name.ToLower().Contains(text)) { tempList.Add(variable); } } } foreach (EntitySave entity in glueProjectSave.Entities) { foreach (CustomVariable variable in entity.CustomVariables) { if (variable.Name.ToLower().Contains(text)) { tempList.Add(variable); } } } tempList = tempList.OrderBy(item => item.ToString()).ToList(); toAdd.AddRange(tempList); } #endregion #region Add Events if (showEvents) { List <object> tempList = new List <object>(); foreach (ScreenSave screen in glueProjectSave.Screens) { foreach (EventResponseSave eventResponse in screen.Events) { if (eventResponse.EventName.ToLower().Contains(text)) { tempList.Add(eventResponse); } } } foreach (EntitySave entity in glueProjectSave.Entities) { foreach (EventResponseSave eventResponse in entity.Events) { if (eventResponse.EventName.ToLower().Contains(text)) { tempList.Add(eventResponse); } } } tempList = tempList.OrderBy(item => item.ToString()).ToList(); toAdd.AddRange(tempList); } #endregion MainGlueWindow.Self.SearchListBox.Items.AddRange(toAdd.ToArray()); }
/// <summary> /// Compares the previous GlueProjectSave with the current one. /// </summary> /// <returns>True if the GlueProjectSaves are the same</returns> private static bool CompareGlueProjectSaves() { if (!string.IsNullOrEmpty(mCurrentGlueFile)) { int numberOfTries = 0; const int maxNumberOfTries = 5; bool succeeded = false; GlueProjectSave newGlueProjectSave = null; Exception lastException = null; //ObjectFinder.GlueProject = null; while (numberOfTries < maxNumberOfTries) { try { newGlueProjectSave = FileManager.XmlDeserialize <GlueProjectSave>(mCurrentGlueFile); succeeded = true; break; } catch (Exception e) { System.Threading.Thread.Sleep(25); numberOfTries++; lastException = e; } } if (!succeeded) { MessageBox.Show("Error loading GLUX:\n\n" + lastException.ToString()); } if (GlueProjectSave == null && newGlueProjectSave != null) { // This method gets called on the primary // thread so it's okay to call UnloadGluxActivity // which is synchronous: // October 23, 2012 // I don't understand // why we call UnloadGluxActivity. // If the GlueProjectSave is null then // there is no need to unload it is there? // Unloading wipes out mNextElement, which we // don't want to do if we're loading a .glux for // the first time. //mShouldUnloadGlux = true; //UnloadGluxActivity(); GlueProjectSave = newGlueProjectSave; return(false); } CompareObjects compareObjects = new CompareObjects(); compareObjects.ElementsToIgnore.Add("ContainerType"); compareObjects.ElementsToIgnore.Add("ImageWidth"); compareObjects.ElementsToIgnore.Add("ImageHeight"); compareObjects.ElementsToIgnore.Add("EquilibriumParticleCount"); compareObjects.ElementsToIgnore.Add("BurstParticleCount"); compareObjects.ElementsToIgnore.Add("RuntimeType"); compareObjects.ElementsToIgnore.Add("EventSave"); compareObjects.ElementsToIgnore.Add("SharedCodeFullFileName"); // This method gets called on the primary // thread so it's okay to call UnloadGluxActivity // which is synchronous: mShouldUnloadGlux = true; UnloadGluxActivity(); GlueProjectSave = newGlueProjectSave; } return(false); }
private static void internalLoadGlux(string filename) { if (!string.IsNullOrEmpty(filename)) { //int numberOfTries = 0; //const int maxNumberOfTries = 5; //bool succeeded = false; //Exception lastException = null; //ObjectFinder.GlueProject = null; //while (numberOfTries < maxNumberOfTries) //{ // try // { // GlueProjectSave = FileManager.XmlDeserialize<GlueProjectSave>(filename); // succeeded = true; // break; // } // catch (Exception e) // { // System.Threading.Thread.Sleep(25); // numberOfTries++; // lastException = e; // } //} //if (!succeeded) //{ // MessageBox.Show("Error loading GLUX:\n\n" + lastException.ToString()); //} ObjectFinder.GlueProject = GlueProjectSave; foreach (var screenSave in GlueProjectSave.Screens) { screenSave.UpdateCustomProperties(); } foreach (var entitySave in GlueProjectSave.Entities) { entitySave.UpdateCustomProperties(); } LocalizationManager.ClearDatabase(); GlueProjectSave.UpdateIfTranslationIsUsed(); // Need to find directory before doing the translation loading FileManager.RelativeDirectory = FileManager.GetDirectory(filename); mCurrentGlueFile = filename; Microsoft.Build.BuildEngine.Project vsProj = new Microsoft.Build.BuildEngine.Project(); string csProjFileName = FileManager.RemoveExtension(mCurrentGlueFile) + ".csproj"; vsProj.Load(csProjFileName, Microsoft.Build.BuildEngine.ProjectLoadSettings.IgnoreMissingImports); FindContentDirectory(vsProj); var vsProjectState = new VsProjectState(); vsProjectState.DefaultNamespace = null; EditorObjects.IoC.Container.Set <IVsProjectState>(vsProjectState); foreach (BuildPropertyGroup bpg in vsProj.PropertyGroups) { foreach (BuildProperty bp in bpg) { if (bp.Name == "RootNamespace") { vsProjectState.DefaultNamespace = bp.Value; break; } } } LoadLocalization(); FlatRedBallServices.Game.Window.Title = filename; if (GluxLoaded != null) { GluxLoaded(); } } }
public void ReactToGluxLoad(GlueProjectSave newGlux, string fileName) { //MessageBox.Show("Loaded " + fileName + " and it has this many Entities " + newGlux.Entities.Count); }
public void TestConversion() { ArrowProjectSave project = new ArrowProjectSave(); SpriteSave spriteSave = new SpriteSave(); spriteSave.X = 3; spriteSave.Y = 4; spriteSave.Name = "SpriteInstance"; spriteSave.Texture = "Entities/FirstElement/redball.BMP"; ArrowElementSave element = new ArrowElementSave(); element.Name = "FirstElement"; element.Sprites.Add(spriteSave); project.Elements.Add(element); element = new ArrowElementSave(); element.Name = "ContainerOfFirstElement"; element.Sprites.Add(spriteSave); project.Elements.Add(element); ArrowElementInstance instance = new ArrowElementInstance(); instance.Name = "FirstElementInstance"; instance.Type = "FirstElement"; instance.SetVariable("X", 4); instance.SetVariable("Y", 5); element.ElementInstances.Add(instance); ArrowProjectToGlueProjectConverter converter = new ArrowProjectToGlueProjectConverter(); GlueProjectSave gps = converter.ToGlueProjectSave(project); EntitySave firstElementEntity = gps.Entities.FirstOrDefault(item => item.Name == "Entities/FirstElement"); EntitySave containerOfFirstElement = gps.Entities.FirstOrDefault(item => item.Name == "Entities/ContainerOfFirstElement"); if (firstElementEntity.Name.StartsWith("Entities/") == false) { throw new Exception("Entity names must start with \"Entities/\""); } if (firstElementEntity.ReferencedFiles.Count == 0) { throw new Exception("The Entity should automatically contain a ReferencedFile for the redball file"); } if (containerOfFirstElement.NamedObjects.FirstOrDefault(item => item.InstanceName == "FirstElementInstance") == null) { throw new Exception("The entity should contain a NOS for another element, but it doesn't"); } string gluxString; FileManager.XmlSerialize(gps, out gluxString); string aroxString; FileManager.XmlSerialize(project, out aroxString); }