// // ©2015 - 2025 Candy Smith // // All rights reserved // // Redistribution of this software is strictly not allowed. // // Copy of this software can be obtained from unity asset store only. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // // FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE // // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // // THE SOFTWARE. using UnityEngine; using UnityEngine.SceneManagement; using VContainer; using VContainer.Unity; using WordsToolkit.Scripts.Audio; using WordsToolkit.Scripts.Data; using WordsToolkit.Scripts.GUI; using WordsToolkit.Scripts.GUI.ExtraWordBar; using WordsToolkit.Scripts.GUI.Labels; using WordsToolkit.Scripts.Infrastructure.Factories; using WordsToolkit.Scripts.Localization; using WordsToolkit.Scripts.Services; using WordsToolkit.Scripts.Services.IAP; using WordsToolkit.Scripts.Settings; using WordsToolkit.Scripts.Services.BannedWords; using WordsToolkit.Scripts.Gameplay; using WordsToolkit.Scripts.Gameplay.Managers; using WordsToolkit.Scripts.Infrastructure.Service; using WordsToolkit.Scripts.Popups; using WordsToolkit.Scripts.System; using WordsToolkit.Scripts.Levels; using WordsToolkit.Scripts.NLP; using WordsToolkit.Scripts.Gameplay.WordValidator; using WordsToolkit.Scripts.GUI.Buttons; using WordsToolkit.Scripts.GUI.Buttons.Boosts; using WordsToolkit.Scripts.Debugger; namespace WordsToolkit.Scripts.Infrastructure.DI { public class GameLifetimeScope : LifetimeScope { [SerializeField] private GameSettings gameSettings; [SerializeField] private DebugSettings debugSettings; [SerializeField] private SpinSettings spinSettings; [SerializeField] private AdsSettings adsSettings; [SerializeField] private DailyBonusSettings dailyBonusSettings; [SerializeField] private BannedWordsConfiguration bannedWordsConfiguration; [SerializeField] private LanguageConfiguration languageConfiguration; [SerializeField] private TutorialSettings tutorialSettings; [SerializeField] private GiftsSettings giftSettings; protected override void Configure(IContainerBuilder builder) { if (!Application.isPlaying && !SceneManager.GetActiveScene().isLoaded) { return; } builder.RegisterInstance(gameSettings); builder.RegisterInstance(debugSettings); builder.RegisterInstance(spinSettings); builder.RegisterInstance(adsSettings); builder.RegisterInstance(dailyBonusSettings); builder.RegisterInstance(bannedWordsConfiguration); builder.RegisterInstance(languageConfiguration); builder.RegisterInstance(tutorialSettings); builder.RegisterInstance(giftSettings); // Register EntryPoints - LanguageService must initialize before GameManager builder.RegisterEntryPoint().As(); builder.RegisterEntryPoint().AsSelf(); builder.RegisterEntryPoint().AsSelf(); // Register interfaces and their implementations builder.Register(Lifetime.Singleton); builder.Register(Lifetime.Singleton); builder.Register(Lifetime.Singleton); builder.Register(Lifetime.Singleton); builder.Register(Lifetime.Singleton); builder.Register(Lifetime.Singleton); builder.Register(Lifetime.Singleton); builder.Register(Lifetime.Singleton); builder.Register(Lifetime.Singleton); builder.Register(Lifetime.Singleton); builder.Register(Lifetime.Singleton); builder.Register(Lifetime.Singleton); // Register audio service builder.RegisterComponentInHierarchy() .As(); // Register ads manager builder.RegisterComponentInHierarchy() .As(); // Register other components builder.RegisterComponentInHierarchy(); builder.RegisterComponentInHierarchy(); builder.RegisterComponentInHierarchy(); builder.RegisterComponentInHierarchy(); builder.RegisterComponentInHierarchy(); builder.RegisterComponentInHierarchy(); builder.RegisterComponentInHierarchy(); builder.RegisterComponentInHierarchy(); builder.RegisterComponentInHierarchy(); builder.RegisterComponentInHierarchy(); builder.RegisterComponentInHierarchy(); builder.RegisterComponentInHierarchy(); builder.RegisterComponentInHierarchy(); builder.RegisterComponentInHierarchy(); builder.RegisterComponentInHierarchy(); builder.RegisterComponentInHierarchy(); builder.RegisterComponentInHierarchy(); builder.RegisterComponentInHierarchy(); // Register localization components builder.RegisterComponentInHierarchy() .As(); builder.RegisterComponentInHierarchy(); } } }