private void UpdateIncludedAndExcluded(ScreenSave instance)
        {
            UpdateIncludedAndExcludedBase(instance);

            // instance may not be set yet, so we have to use the argument value
            IncludeMember("BaseScreen", typeof(ScreenSave), new AvailableScreenTypeConverter((ScreenSave)instance));
            IncludeMember("NextScreen", typeof(ScreenSave), new AvailableScreenTypeConverter((ScreenSave)instance));

            IncludeMember("Name", typeof(string), SetClassName, GetClassName, null, this.CategoryAttribute("\tScreen"));
        }
        public SaveClasses.ScreenSave AddScreen(string screenName)
        {
            ScreenSave screenSave = new ScreenSave();

            screenSave.Name = @"Screens\" + screenName;

            AddScreen(screenSave, suppressAlreadyExistingFileMessage: false);

            return(screenSave);
        }
        private void CreateScreenTreeNodes()
        {
            for (int i = 0; i < ProjectManager.GlueProjectSave.Screens.Count; i++)
            {
                ScreenSave screenSave = ProjectManager.GlueProjectSave.Screens[i];
                // This is so fast now that we don't even need to show the user
                // what's going on
                //SetInitWindowText("Creating Screens: " + screenSave.Name);

                ScreenTreeNode screenTreeNode = GlueState.Self.Find.ScreenTreeNode(ProjectManager.GlueProjectSave.Screens[i].Name);

                #region If there is no screenTreeNode

                if (screenTreeNode == null)
                {
                    // See if the file exists
                    string fileToSearchFor = FileManager.RelativeDirectory + screenSave.Name + ".cs";

                    if (System.IO.File.Exists(fileToSearchFor))
                    {
                        // If we got here that means there's probably not a build item for this file
                        MessageBox.Show("The Glue project has the following Screen:\n" + screenSave.Name + "\n" +
                                        "but this file is not part of Visual Studio.  This file may have been removed manually or " +
                                        "there may have been some saving error.  You should close Glue, manually add this and the Generated file " +
                                        "to Visual Studio, then restart Glue.");
                        MainGlueWindow.Self.HasErrorOccurred = true;
                    }
                    else
                    {
                        System.Windows.Forms.MessageBox.Show("Could not create the ScreenSave for " + screenSave.Name);
                    }


                    //mGlueProjectSave.Screens.RemoveAt(i);
                    //i--;
                    continue;
                }

                #endregion

                screenTreeNode.SaveObject = ProjectManager.GlueProjectSave.Screens[i];

                CheckForMissingCustomFile(screenTreeNode);


                if (ProjectManager.GlueProjectSave.Screens[i].IsRequiredAtStartup)
                {
                    screenTreeNode.BackColor = ElementViewWindow.RequiredScreenColor;
                }

                screenTreeNode.UpdateReferencedTreeNodes();

                screenTreeNode.SaveObject.UpdateCustomProperties();
            }
        }
Example #4
0
        internal void SaveScreen(ScreenSave gumScreen)
        {
            string gumProjectFileName = GumProjectManager.Self.GetGumProjectFileName();

            var    directory      = FileManager.GetDirectory(gumProjectFileName) + ElementReference.ScreenSubfolder + "/";
            string screenFileName =
                directory + gumScreen.Name + "." + GumProjectSave.ScreenExtension;


            gumScreen.Save(screenFileName);
        }
        private void CreateScreenSaves()
        {
            mScreenSave      = new ScreenSave();
            mScreenSave.Name = "NamedObjectSaveTestsScreen";
            ObjectFinder.Self.GlueProject.Screens.Add(mScreenSave);

            mDerivedNos                 = new NamedObjectSave();
            mDerivedNos.SourceType      = SourceType.Entity;
            mDerivedNos.SourceClassType = mDerivedEntitySave.Name;
            mScreenSave.NamedObjects.Add(mDerivedNos);
        }
 public static void RemoveScreen(ScreenSave screenToRemove)
 {
     for (int i = 0; i < mScreenNode.Nodes.Count; i++)
     {
         if (((BaseElementTreeNode)mScreenNode.Nodes[i]).SaveObject == screenToRemove)
         {
             mScreenNode.Nodes.RemoveAt(i);
             break;
         }
     }
 }
Example #7
0
        public bool IsScreenNameValid(string screenName, ScreenSave screen, out string whyNotValid)
        {
            IsNameValidCommon(screenName, out whyNotValid);

            if (string.IsNullOrEmpty(whyNotValid))
            {
                IsNameAnExistingElement(screenName, screen, out whyNotValid);
            }

            return(string.IsNullOrEmpty(whyNotValid));
        }
Example #8
0
        internal void RemoveScreen(ScreenSave asScreenSave)
        {
            GumProjectSave gps = ProjectManager.Self.GumProjectSave;

            string name = asScreenSave.Name;
            List <ElementReference> references = gps.ScreenReferences;

            RemoveElementReferencesFromList(name, references);

            gps.Screens.Remove(asScreenSave);
        }
Example #9
0
        private void AddTreeNodeFor(ScreenSave screenSave)
        {
            string fullName = screenSave.Name;

            string directory = FileManager.GetDirectory(fullName, RelativeType.Relative);

            TreeNode directoryNode = GetOrCreateDirectoryNode(directory, AllElementsTreeView.Nodes);
            TreeNode elementNode   = new TreeNode(FileManager.RemovePath(screenSave.Name));

            elementNode.Tag = screenSave;
            directoryNode.Nodes.Add(elementNode);
        }
        public void AddScreenClick(object sender, EventArgs e)
        {
            if (ObjectFinder.Self.GumProjectSave == null || string.IsNullOrEmpty(ProjectManager.Self.GumProjectSave.FullFileName))
            {
                MessageBox.Show("You must first save a project before adding Screens");
            }
            else
            {
                TextInputWindow tiw = new TextInputWindow();
                tiw.Message = "Enter new Screen name:";

                if (tiw.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                {
                    string name = tiw.Result;

                    string whyNotValid;

                    if (!NameVerifier.Self.IsScreenNameValid(name, null, out whyNotValid))
                    {
                        MessageBox.Show(whyNotValid);
                    }
                    else
                    {
                        TreeNode nodeToAddTo = ElementTreeViewManager.Self.SelectedNode;

                        while (nodeToAddTo != null && nodeToAddTo.Tag is ScreenSave && nodeToAddTo.Parent != null)
                        {
                            nodeToAddTo = nodeToAddTo.Parent;
                        }

                        if (nodeToAddTo == null || !nodeToAddTo.IsPartOfScreensFolderStructure())
                        {
                            nodeToAddTo = RootScreensTreeNode;
                        }

                        string path = nodeToAddTo.GetFullFilePath().FullPath;

                        string relativeToScreens = FileManager.MakeRelative(path,
                                                                            FileLocations.Self.ScreensFolder);

                        ScreenSave screenSave = ProjectCommands.Self.AddScreen(relativeToScreens + name);


                        GumCommands.Self.GuiCommands.RefreshElementTreeView();

                        SelectedState.Self.SelectedScreen = screenSave;

                        GumCommands.Self.FileCommands.TryAutoSaveElement(screenSave);
                        GumCommands.Self.FileCommands.TryAutoSaveProject();
                    }
                }
            }
        }
        bool IsLoadingScreen(IElement element, out ScreenSave screenSave)
        {
            screenSave = null;

            if (element is ScreenSave)
            {
                ScreenSave asScreenSave = element as ScreenSave;

                return(asScreenSave.IsLoadingScreen);
            }
            return(false);
        }
Example #12
0
        private static bool GetIfScreenHasTmxDirectly(ScreenSave screen)
        {
            var hasTmxFile = screen.ReferencedFiles.Any(item => FileManager.GetExtension(item.Name) == "tmx");
            var hasTmx     = hasTmxFile;


            if (!hasTmx)
            {
                hasTmx = screen.AllNamedObjects.Any(item => item.GetAssetTypeInfo()?.FriendlyName == "LayeredTileMap (.tmx)");
            }
            return(hasTmx);
        }
Example #13
0
        internal void AddScreenToGumProject(ScreenSave gumScreen)
        {
            AppState.Self.GumProjectSave.Screens.Add(gumScreen);
            var elementReference = new ElementReference
            {
                ElementType = ElementType.Screen,
                Name        = gumScreen.Name
            };

            AppState.Self.GumProjectSave.ScreenReferences.Add(elementReference);
            AppState.Self.GumProjectSave.ScreenReferences.Sort((first, second) => first.Name.CompareTo(second.Name));
            FlatRedBall.Glue.Plugins.PluginManager.ReceiveOutput("Added Gum screen " + gumScreen.Name);
        }
Example #14
0
        private void CreateScreen()
        {
            Screen = new ScreenSave();
            Screen.Initialize(StandardElementsManager.Self.GetDefaultStateFor("Screen"));
            Screen.Name = "VariableTestScreen";

            ButtonInstanceInScreen          = new InstanceSave();
            ButtonInstanceInScreen.Name     = "ButtonInstance";
            ButtonInstanceInScreen.BaseType = "VariableTestButton";
            Screen.Instances.Add(ButtonInstanceInScreen);

            Screen.DefaultState.SetValue("ButtonInstance.ButtonText", null);
        }
Example #15
0
        string GetLevelsFolderAbsoluteForScreen(ScreenSave screen)
        {
            if (screen == null)
            {
                return(null);
            }
            else
            {
                string folder = screen.Name + "/Levels/";

                return(GlueCommands.Self.GetAbsoluteFileName(folder, true));
            }
        }
Example #16
0
        public static List <ExposableEvent> GetExposableEventsFor(ScreenSave screenSave, bool removeAlreadyExposed)
        {
            List <ExposableEvent> returnValues = new List <ExposableEvent>();

            GetExposableEventsFor(screenSave, returnValues);

            returnValues.Sort(Sort);

            if (removeAlreadyExposed)
            {
                RemoveAlreadyExposed(screenSave, returnValues);
            }

            return(returnValues);
        }
Example #17
0
        public void AddScreen(ScreenSave screenSave)
        {
            screenSave.Initialize(StandardElementsManager.Self.GetDefaultStateFor("Screen"));

            ProjectManager.Self.GumProjectSave.ScreenReferences.Add(new ElementReference {
                Name = screenSave.Name, ElementType = ElementType.Screen
            });
            ProjectManager.Self.GumProjectSave.ScreenReferences.Sort((first, second) => first.Name.CompareTo(second.Name));
            ProjectManager.Self.GumProjectSave.Screens.Add(screenSave);

            GumCommands.Self.FileCommands.TryAutoSaveProject();
            GumCommands.Self.FileCommands.TryAutoSaveElement(screenSave);

            Plugins.PluginManager.Self.ElementAdd(screenSave);
        }
Example #18
0
        private void CreateScreenTreeNodes()
        {
            for (int i = 0; i < ProjectManager.GlueProjectSave.Screens.Count; i++)
            {
                ScreenSave screenSave = ProjectManager.GlueProjectSave.Screens[i];

                ScreenTreeNode screenTreeNode = GlueState.Self.Find.ScreenTreeNode(ProjectManager.GlueProjectSave.Screens[i].Name);
                if (ProjectManager.GlueProjectSave.Screens[i].IsRequiredAtStartup)
                {
                    screenTreeNode.BackColor = ElementViewWindow.RequiredScreenColor;
                }

                screenTreeNode.UpdateReferencedTreeNodes();
            }
        }
Example #19
0
        private void SetupFileAssociations(ScreenSave screen)
        {
            var fileSaves =
                screen.GetAllReferencedFileSavesRecursively().ToList();

            var tmxCSVExists =
                fileSaves.Any(
                    f => AppState.Self.TmxFileName.EndsWith(f.SourceFile, StringComparison.CurrentCultureIgnoreCase) &&
                    f.Name.EndsWith(".csv", StringComparison.CurrentCultureIgnoreCase));

            if (!tmxCSVExists)
            {
                var otherfile =
                    fileSaves.First(
                        f =>
                        AppState.Self.TmxFileName.EndsWith(f.SourceFile, StringComparison.CurrentCultureIgnoreCase) &&
                        f.Name.EndsWith(".tilb"));

                var file = new ReferencedFileSave
                {
                    CreatesDictionary = true,
                    SourceFile        = otherfile.SourceFile,
                    Name           = otherfile.Name.Replace(".tilb", "Properties.csv"),
                    BuildTool      = BuildToolAssociationManager.Self.TmxToCsv.ToString(),
                    IsSharedStatic = true
                };
                file.DestroyOnUnload = false;


                string fileName = FlatRedBall.Glue.ProjectManager.ContentDirectory + file.SourceFile;

                var errorMessage = BuildToolAssociationManager.Self.TmxToCsv.PerformBuildOn(
                    fileName,
                    FlatRedBall.Glue.ProjectManager.ContentDirectory + file.Name, null, FlatRedBall.Glue.Plugins.PluginManager.ReceiveOutput,
                    PluginManager.ReceiveError);

                if (string.IsNullOrWhiteSpace(errorMessage))
                {
                    var tileMapInfoCustomClass =
                        GlueState.Self.CurrentGlueProject.CustomClasses.FirstOrDefault(c => c.Name == "TileMapInfo");
                    if (tileMapInfoCustomClass != null)
                    {
                        tileMapInfoCustomClass.CsvFilesUsingThis.Add(file.Name);
                        screen.ReferencedFiles.Add(file);
                    }
                }
            }
        }
Example #20
0
        private void CreateScreenSave()
        {
            mScreenSave      = new ScreenSave();
            mScreenSave.Name = "ScreenSaveInVariableSettingTest";
            ObjectFinder.Self.GlueProject.Screens.Add(mScreenSave);

            NamedObjectSave nos = new NamedObjectSave();

            nos.SourceType      = SourceType.Entity;
            nos.SourceClassType = mEntitySave.Name;
            nos.UpdateCustomProperties();
            nos.InstanceName = "TestObject1";
            nos.SetPropertyValue("X", 150);

            mScreenSave.NamedObjects.Add(nos);
        }
Example #21
0
        public bool IsScreenNameValid(string screenName, ScreenSave screen, out string whyNotValid)
        {
            IsNameValidCommon(screenName, out whyNotValid);

            //if (string.IsNullOrEmpty(whyNotValid))
            //{
            //    IsNameValidVariable(screenName, out whyNotValid);
            //}

            if (string.IsNullOrEmpty(whyNotValid))
            {
                IsNameAnExistingElement(screenName, null, screen, out whyNotValid);
            }

            return(string.IsNullOrEmpty(whyNotValid));
        }
Example #22
0
        public ScreenSave AddScreen(string screenName)
        {
            ScreenSave screenSave = new ScreenSave();

            screenSave.Initialize(StandardElementsManager.Self.GetDefaultStateFor("Screen"));
            screenSave.Name = screenName;

            ProjectManager.Self.GumProjectSave.ScreenReferences.Add(new ElementReference {
                Name = screenName, ElementType = ElementType.Screen
            });
            ProjectManager.Self.GumProjectSave.ScreenReferences.Sort((first, second) => first.Name.CompareTo(second.Name));
            ProjectManager.Self.GumProjectSave.Screens.Add(screenSave);


            return(screenSave);
        }
Example #23
0
        public static void UpdateNodeToListIndex(ScreenSave screenSave)
        {
            ScreenTreeNode screenTreeNode = GlueState.Self.Find.ScreenTreeNode(screenSave);

            bool wasSelected = MainGlueWindow.Self.ElementTreeView.SelectedNode == screenTreeNode;

            int desiredIndex = ProjectManager.GlueProjectSave.Screens.IndexOf(screenSave);

            mScreenNode.Nodes.Remove(screenTreeNode);
            mScreenNode.Nodes.Insert(desiredIndex, screenTreeNode);

            if (wasSelected)
            {
                MainGlueWindow.Self.ElementTreeView.SelectedNode = screenTreeNode;
            }
        }
Example #24
0
        public List <ScreenSave> GetAllScreensThatInheritFrom(string baseScreen)
        {
            List <ScreenSave> derivedScreens = new List <ScreenSave>();

            for (int i = 0; i < GlueProject.Screens.Count; i++)
            {
                ScreenSave screenSave = GlueProject.Screens[i];

                if (screenSave.InheritsFrom(baseScreen))
                {
                    derivedScreens.Add(screenSave);
                }
            }

            return(derivedScreens);
        }
Example #25
0
        public ScreenTreeNode ScreenTreeNode(ScreenSave screenSave)
        {
            for (int i = 0; i < ElementViewWindow.ScreensTreeNode.Nodes.Count; i++)
            {
                if (ElementViewWindow.ScreensTreeNode.Nodes[i] is ScreenTreeNode)
                {
                    ScreenTreeNode asScreenTreeNode = ElementViewWindow.ScreensTreeNode.Nodes[i] as ScreenTreeNode;

                    if (asScreenTreeNode.ScreenSave == screenSave)
                    {
                        return(asScreenTreeNode);
                    }
                }
            }
            return(null);
        }
Example #26
0
        public void Initialize()
        {
            OverallInitializer.Initialize();

            mEntitySave = new EntitySave();
            mEntitySave.ImplementsIWindow = true;
            mEntitySave.Name = "EventTestEntity";
            mEntitySave.ImplementsIWindow = true;
            ObjectFinder.Self.GlueProject.Entities.Add(mEntitySave);

            mScreenSave      = new ScreenSave();
            mScreenSave.Name = "EventTestScreen";
            ObjectFinder.Self.GlueProject.Screens.Add(mScreenSave);

            NamedObjectSave nos = new NamedObjectSave();

            nos.SourceType      = SourceType.Entity;
            nos.SourceClassType = "EventTestEntity";
            mScreenSave.NamedObjects.Add(nos);


            EventResponseSave ers = new EventResponseSave();

            ers.SourceObject      = "EventTestEntity";
            ers.SourceObjectEvent = "Click";
            ers.EventName         = "EventTestEntityClick";
            mScreenSave.Events.Add(ers);

            EventResponseSave pushErs = new EventResponseSave();

            pushErs.SourceObject      = "EventTestEntity";
            pushErs.SourceObjectEvent = "Push";
            pushErs.EventName         = "EventTestEntityPush";
            mScreenSave.Events.Add(pushErs);

            // Create a POList so we can expose its event(s)
            mListNos                        = new NamedObjectSave();
            mListNos.SourceType             = SourceType.FlatRedBallType;
            mListNos.SourceClassType        = "PositionedObjectList<T>";
            mListNos.SourceClassGenericType = "Sprite";
            mScreenSave.NamedObjects.Add(mListNos);

            mDerivedEntitySave            = new EntitySave();
            mDerivedEntitySave.Name       = "EventTestsDerivedEntity";
            mDerivedEntitySave.BaseEntity = mEntitySave.Name;
            ObjectFinder.Self.GlueProject.Entities.Add(mDerivedEntitySave);
        }
        public static string GetMemberTypeForScreen(string memberName, ScreenSave screen)
        {
            string toReturn;

            if (memberName == "CurrentState")
            {
                return("VariableState");
            }
            else if (TryGetStateInCategory(memberName, screen, out toReturn))
            {
                return(toReturn);
            }
            else
            {
                throw new InvalidOperationException();
            }
        }
Example #28
0
        public ScreenSave GetScreenSaveUnqualified(string screenName)
        {
            if (GlueProject != null)
            {
                for (int i = 0; i < GlueProject.Screens.Count; i++)
                {
                    ScreenSave screenSave = GlueProject.Screens[i];

                    if (FileManager.RemovePath(screenSave.Name) == screenName)
                    {
                        return(screenSave);
                    }
                }
            }

            return(null);
        }
        private static string GetGeneratedScreenCode(ScreenSave screenSave)
        {
            ICodeBlock topBlock = new CodeBlockBaseNoIndent(null);

            string screenNamespace = CodeGeneratorCommonLogic.GetElementNamespace(screenSave);

            ICodeBlock codeBlock = topBlock.Namespace(screenNamespace);

            codeBlock = codeBlock.Class("public partial", screenSave.GetStrippedName(), " : RedGrin.INetworkArena");

            GenerateRequestCreateEntity(codeBlock);

            GenerateRequestDestroy(codeBlock);



            return(topBlock.ToString());
        }
Example #30
0
        private void SetupEntityListInScreen(EntitySave entity, ScreenSave screen)
        {
            if (entity != null && screen != null)
            {
                var hasList =
                    screen.AllNamedObjects.Any(o => o.ClassType == "PositionedObjectList<" + entity.ClassName + ">");

                if (!hasList)
                {
                    screen.NamedObjects.Add(new NamedObjectSave
                    {
                        AddToManagers          = true,
                        SourceClassGenericType = entity.Name,
                        SourceClassType        = "PositionedObjectList<T>",
                        InstanceName           = entity.ClassName + "List",
                        SourceType             = SourceType.FlatRedBallType
                    });
                }
            }
        }