/// <summary> /// Adds an entry for a given fire strategy to the fire strategy balance manager. /// </summary> public static void AddFireStrategyToFireStrategyManager(FireStrategyBuilder feature) { string fireStrategyPath = UnityPaths.PathFireStrategyManager; Debug.Assert(File.Exists(fireStrategyPath)); string featureName = feature.FeatureName; string startTag = UnityPaths.TagFireStrategyManagerPlayerRatioStart; string endTag = UnityPaths.TagFireStrategyManagerPlayerRatioEnd; string[] lines = File.ReadAllLines(fireStrategyPath); int endTagLine = FindEndTagLineAfterStartTagLine(startTag, endTag, lines, fireStrategyPath); string newStrategyLine = $" public float {featureName};"; InsertLineToFile(fireStrategyPath, lines, newStrategyLine, endTagLine, true); }
/// <summary> /// Adds a new entry for a given fire strategy's PowerupBalanaceManager value /// to the GameScene.unity file of the project. /// Unity would automatically create this entry at runtime, but it would assign a default value of 0. /// This would cause the new fire strategy to fire every frame by default. /// (A value of 1 represents a fire speed equal to the base cannon's fire speed.) /// </summary> public static void AddFireStrategyToGameSceneFireStrategyManager(FireStrategyBuilder feature) { string gameScenePath = UnityPaths.PathGameScene; string featureName = feature.FeatureName; string startTag = UnityPaths.TagGameSceneFireStrategyManagerStart; string endTag = UnityPaths.TagGameSceneFireStrategyManagerEnd; Debug.Assert(File.Exists(gameScenePath)); string[] lines = File.ReadAllLines(gameScenePath); int endTagLine = FileUtil.FindEndTagLineAfterStartTagLine(startTag, endTag, lines, gameScenePath); string newStrategyLine = $" {featureName}: 1"; FileUtil.InsertLineToFile(gameScenePath, lines, newStrategyLine, endTagLine, true); }
/// <summary> /// Adds an entry for a given fire strategy to the /// list of fire strategies inside GameManager.cs /// </summary> public static void AddFireStrategyToGameManagerCs(FireStrategyBuilder feature) { string gameManagerPath = UnityPaths.PathGameManagerCs; string featureName = feature.FeatureName; string startTag = UnityPaths.TagGameManagerInitFireStrategiesStart; string endTag = UnityPaths.TagGameManagerInitFireStrategiesEnd; string className = feature.ClassName; Debug.Assert(File.Exists(gameManagerPath)); string[] lines = File.ReadAllLines(gameManagerPath); int endTagLine = FindEndTagLineAfterStartTagLine(startTag, endTag, lines, gameManagerPath); string newStrategyLine = $" new {className}(Prefab<{featureName}Bullet>(), in _FireStrategyManager),"; InsertLineToFile(gameManagerPath, lines, newStrategyLine, endTagLine, true); }