コード例 #1
0
        private void HandleGluxLoaded()
        {
            TaskManager.Self.AddSync(() =>
            {
                var areAnyNetworked = false;
                foreach (var screen in GlueState.Self.CurrentGlueProject.Screens)
                {
                    if (NetworkScreenViewModel.IsNetworked(screen))
                    {
                        areAnyNetworked = true;
                        NetworkScreenCodeGenerator.GenerateCodeFor(screen, save: false);
                    }
                }
                foreach (var entity in GlueState.Self.CurrentGlueProject.Entities)
                {
                    if (NetworkEntityViewModel.IsNetworked(entity))
                    {
                        areAnyNetworked = true;
                        NetworkEntityCodeGenerator.GenerateCodeFor(entity, save: false);
                    }
                }

                if (areAnyNetworked)
                {
                    NetworkConfigurationCodeGenerator.GenerateConfiguration();

                    GlueCommands.Self.ProjectCommands.SaveProjects();
                }
            }, "Regenerating network files");
        }
コード例 #2
0
        private void HandleVariableRemoved(CustomVariable variable)
        {
            var currentEntity = GlueState.Self.CurrentEntitySave;

            if (currentEntity != null &&
                NetworkEntityViewModel.IsNetworked(currentEntity) &&
                NetworkEntityViewModel.IsNetworked(variable)
                )
            {
                TaskManager.Self.AddSync(() =>
                                         NetworkEntityCodeGenerator.GenerateCodeFor(currentEntity),
                                         "Regenerating networked due to variable removed");
            }
        }
コード例 #3
0
ファイル: MainPlugin.cs プロジェクト: Kr3m/FlatRedBall
        private void HandleEntityViewModelPropertyChanged(object sender, PropertyChangedEventArgs e)
        {
            var currentEntity = GlueState.Self.CurrentEntitySave;

            if (currentEntity != null && entityViewModel != null)
            {
                TaskManager.Self.AddSync(() =>
                {
                    var createdNewVariable = entityViewModel.ApplyTo(currentEntity);

                    if (createdNewVariable)
                    {
                        GlueCommands.Self.RefreshCommands.RefreshUi(currentEntity);
                    }

                    GlueCommands.Self.GluxCommands.SaveGluxTask();

                    NetworkEntityCodeGenerator.GenerateCodeFor(currentEntity);

                    // Whenever a new entity is modified, we may need to re-generate all screens because screens
                    // have a switch statement for creating entities based on networked entities:
                    var changedIsNetworked = e.PropertyName ==
                                             nameof(NetworkEntityViewModel.IsNetworkEntity);
                    if (changedIsNetworked)
                    {
                        if (NetworkEntityViewModel.IsNetworked(currentEntity) == false)
                        {
                            // set this to not be networked, need to remove the files:
                            var networkedFiles = CodeGeneratorCommonLogic.GetAllNetworkFilesFor(currentEntity);

                            foreach (var file in networkedFiles)
                            {
                                CodeGeneratorCommonLogic.RemoveCodeFileFromProject(file);
                            }
                        }
                        else
                        {
                            NetworkConfigurationCodeGenerator.GenerateConfiguration();
                            MessagesCodeGenerator.GenerateAllMessages();
                        }
                        NetworkScreenCodeGenerator.GenerateAllNetworkScreenCode();
                    }
                }, "Reacting to networked entity view model change");
            }
        }