예제 #1
0
        public void GenerateScript(string directory, string layerName)
        {
            LayerName  = layerName;
            ModuleName = directory.Substring(directory.LastIndexOf(Path.DirectorySeparatorChar) + 1);
            var builder = new StringBuilder();

            AddHeader(builder);

            AddFooter(builder);

            var directoryPath = "";

            switch (GetKindName())
            {
            case "{0}Locator":
            case "I{0}Manager":
            case "{0}ManagerMock":
                directoryPath = Path.Combine(directory, "Interface");
                break;

            case "{0}Manager":
            case "{0}ManagerTest":
                directoryPath = Path.Combine(directory, "Impl");
                break;
            }

            var fileName = string.Format(GetKindName(), ModuleName) + ".cs";
            var filePath = Path.Combine(directoryPath, fileName);

            FileIoLocater.Write(filePath, builder.ToString());
        }
예제 #2
0
        public static void GenerateMvpScriptsForPrefab()
        {
            FileIoLocater.Set(new FileIoManager());
            var prefab = Selection.gameObjects[0];
            var gameObjectFieldInfo =
                new GameObjectFieldInfo(prefab, AssetDatabase.GetAssetPath(Selection.activeObject));

            new ModuleViewScriptBuilder().GenerateScript(gameObjectFieldInfo);
            new ModulePresenterScriptBuilder().GenerateScript(gameObjectFieldInfo);
            new ModuleModelScriptBuilder().GenerateScript(gameObjectFieldInfo);
            new ModuleModelTestScriptBuilder().GenerateScript(gameObjectFieldInfo);
            AssetDatabase.Refresh();
        }
예제 #3
0
        private static void GenerateSystemOrInfraScript(string layerName)
        {
            FileIoLocater.Set(new FileIoManager());
            var directory = AssetDatabase.GetAssetPath(Selection.activeObject);

            Directory.CreateDirectory(directory + "/Impl");
            Directory.CreateDirectory(directory + "/Interface");

            new SystemLocatorScriptBuilder().GenerateScript(directory, layerName);
            new SystemIManagerScriptBuilder().GenerateScript(directory, layerName);
            new SystemManagerScriptBuilder().GenerateScript(directory, layerName);
            new SystemManagerTestScriptBuilder().GenerateScript(directory, layerName);
            AssetDatabase.Refresh();
        }
예제 #4
0
        public void GenerateScript(IGameObjectFieldInfo gameObjectFieldInfo)
        {
            ModuleName = gameObjectFieldInfo.GetModuleName();
            var builder = new StringBuilder();

            AddHeader(builder);

            // add fields
            foreach (var gameObjectName in gameObjectFieldInfo.GetTextGameObjects())
            {
                AddField(builder, gameObjectName, "Text");
            }

            if (gameObjectFieldInfo.GetTextGameObjects().Count > 0)
            {
                builder.AppendLine();
            }

            foreach (var gameObjectName in gameObjectFieldInfo.GetImageGameObjects())
            {
                AddField(builder, gameObjectName, "Image");
            }

            if (gameObjectFieldInfo.GetImageGameObjects().Count > 0)
            {
                builder.AppendLine();
            }
            foreach (var gameObjectName in gameObjectFieldInfo.GetButtonGameObjects())
            {
                AddField(builder, gameObjectName, "Button");
            }

            if (gameObjectFieldInfo.GetToggleGameObjects().Count > 0)
            {
                builder.AppendLine();
            }
            foreach (var gameObjectName in gameObjectFieldInfo.GetToggleGameObjects())
            {
                AddField(builder, gameObjectName, "Toggle[]");
            }

            if (gameObjectFieldInfo.GetButtonGameObjects().Count > 0)
            {
                builder.AppendLine();
            }

            AddAwake(builder, gameObjectFieldInfo.GetButtonGameObjects(), gameObjectFieldInfo.GetToggleGameObjects());

            // add methods
            foreach (var gameObjectName in gameObjectFieldInfo.GetButtonGameObjects())
            {
                AddOnButtonClickMethod(builder, gameObjectName);
                builder.AppendLine();
            }

            foreach (var gameObjectName in gameObjectFieldInfo.GetToggleGameObjects())
            {
                AddOnToggleChangeMethod(builder, gameObjectName);
                builder.AppendLine();
            }


            AddFotter(builder);

            var filePath = gameObjectFieldInfo.GetFilePath(GetKindName());

            FileIoLocater.Write(filePath, builder.ToString());
        }
예제 #5
0
 public void SetUp()
 {
     _fileIoManager = Substitute.For <IFileIoManager>();
     FileIoLocater.Set(_fileIoManager);
     _gameObjectFieldInfo = new GameObjectFieldInfoFake();
 }