init: add project

This commit is contained in:
Bragin Stepan
2026-02-18 23:02:28 +05:00
commit 4f01e66894
620 changed files with 52253 additions and 0 deletions

View File

@@ -0,0 +1,54 @@
using Assets._Project.Develop.Runtime.Infrastructure.DI;
using Assets._Project.Develop.Runtime.Utilities.ConfigsManagement;
using Assets._Project.Develop.Runtime.Utilities.CoroutinesManagement;
using Assets._Project.Develop.Runtime.Utilities.LoadingScreen;
using Assets._Project.Develop.Runtime.Utilities.SceneManagement;
using System.Collections;
using _Project.Develop.Runtime.Utilities.DataManagement;
using Assets._Project.Develop.Runtime.Gameplay.Infrastructure;
using Assets._Project.Develop.Runtime.Utilities.DataManagement.DataProviders;
using UnityEngine;
namespace Assets._Project.Develop.Runtime.Infrastructure.EntryPoint
{
public class GameEntryPoint : MonoBehaviour
{
private void Awake()
{
SetupAppSettings();
DIContainer projectContainer = new();
ProjectContextRegistrations.Process(projectContainer);
projectContainer.Initialize();
projectContainer.Resolve<ICoroutinesPerformer>().StartPerform(Initialize(projectContainer));
}
private void SetupAppSettings()
{
QualitySettings.vSyncCount = 0;
Application.targetFrameRate = 60;
}
private IEnumerator Initialize(DIContainer container)
{
ILoadingScreen loadingScreen = container.Resolve<ILoadingScreen>();
SceneSwitcherService sceneSwitcherService = container.Resolve<SceneSwitcherService>();
PlayerDataProvider playerDataProvider = container.Resolve<PlayerDataProvider>();
loadingScreen.Show();
yield return container.Resolve<ConfigsProviderService>().LoadAsync();
yield return DataUtils.LoadProviderAsync(playerDataProvider);
// yield return DataUtils.LoadProviderAsync(SettingsDataProvider);
yield return new WaitForSeconds(0.5f);
loadingScreen.Hide();
yield return sceneSwitcherService.ProcessSwitchTo(Scenes.Gameplay, new GameplayInputArgs(1));
// yield return sceneSwitcherService.ProcessSwitchTo(Scenes.MainMenu);
}
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: c0684ffe977bb3f47ad179694b59b26a
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,112 @@
using System;
using System.Collections.Generic;
using _Project.Develop.Runtime.Logic.Meta.Features.Wallet;
using _Project.Develop.Runtime.UI;
using _Project.Develop.Runtime.UI.Core;
using _Project.Develop.Runtime.Utilities.InputManagement;
using _Project.Develop.Runtime.Utils.ReactiveManagement;
using Assets._Project.Develop.Runtime.Infrastructure.DI;
using Assets._Project.Develop.Runtime.Meta.Features.Wallet;
using Assets._Project.Develop.Runtime.Utilities.AssetsManagement;
using Assets._Project.Develop.Runtime.Utilities.ConfigsManagement;
using Assets._Project.Develop.Runtime.Utilities.CoroutinesManagement;
using Assets._Project.Develop.Runtime.Utilities.DataManagement;
using Assets._Project.Develop.Runtime.Utilities.DataManagement.DataProviders;
using Assets._Project.Develop.Runtime.Utilities.LoadingScreen;
using Assets._Project.Develop.Runtime.Utilities.SceneManagement;
using Object = UnityEngine.Object;
namespace Assets._Project.Develop.Runtime.Infrastructure.EntryPoint
{
public class ProjectContextRegistrations
{
public static void Process(DIContainer container)
{
container.RegisterAsSingle<ICoroutinesPerformer>(CreateCoroutinesPerformer);
container.RegisterAsSingle(CreateConfigsProviderService);
container.RegisterAsSingle(CreateResourcesAssetsLoader);
container.RegisterAsSingle(CreateSceneLoaderService);
container.RegisterAsSingle(CreateSceneSwitcherService);
container.RegisterAsSingle<IPlayerInputService>(CreateDesktopPlayerInputService);
container.RegisterAsSingle(CreateSaveLoadFactory);
container.RegisterAsSingle<ISaveLoadService>(CreateSaveLoadService);
container.RegisterAsSingle(CreatePlayerDataProvider);
container.RegisterAsSingle(CreateWalletService).NonLazy();
container.RegisterAsSingle(CreateProjectPresentersFactory);
container.RegisterAsSingle(CreateViewsFactory);
container.RegisterAsSingle<ILoadingScreen>(CreateLoadingScreen);
}
private static ConfigsProviderService CreateConfigsProviderService(DIContainer c)
{
ResourcesAssetsLoader resourcesAssetsLoader = c.Resolve<ResourcesAssetsLoader>();
ResourcesConfigsLoader resourcesConfigsLoader = new(resourcesAssetsLoader);
return new ConfigsProviderService(resourcesConfigsLoader);
}
private static SceneSwitcherService CreateSceneSwitcherService(DIContainer c)
=> new(
c.Resolve<SceneLoaderService>(),
c.Resolve<ILoadingScreen>(),
c);
private static SceneLoaderService CreateSceneLoaderService(DIContainer c)
=> new();
private static ResourcesAssetsLoader CreateResourcesAssetsLoader(DIContainer c)
=> new();
private static DesktopPlayerInputService CreateDesktopPlayerInputService(DIContainer c)
=> new();
private static SaveLoadFactory CreateSaveLoadFactory(DIContainer c)
=> new();
private static PlayerDataProvider CreatePlayerDataProvider(DIContainer c)
=> new(c.Resolve<ISaveLoadService>(), c.Resolve<ConfigsProviderService>());
private static ProjectPresentersFactory CreateProjectPresentersFactory(DIContainer c)
=> new(c);
private static ViewsFactory CreateViewsFactory(DIContainer c)
=> new(c.Resolve<ResourcesAssetsLoader>());
private static SaveLoadService CreateSaveLoadService(DIContainer c)
=> c.Resolve<SaveLoadFactory>().CreateDefaultSaveLoad();
private static CoroutinesPerformer CreateCoroutinesPerformer(DIContainer c)
{
ResourcesAssetsLoader resourcesAssetsLoader = c.Resolve<ResourcesAssetsLoader>();
CoroutinesPerformer coroutinesPerformerPrefab = resourcesAssetsLoader
.Load<CoroutinesPerformer>(PathToResources.Util.Coroutine);
return Object.Instantiate(coroutinesPerformerPrefab);
}
private static StandardLoadingScreen CreateLoadingScreen(DIContainer c)
{
ResourcesAssetsLoader resourcesAssetsLoader = c.Resolve<ResourcesAssetsLoader>();
StandardLoadingScreen standardLoadingScreenPrefab = resourcesAssetsLoader
.Load<StandardLoadingScreen>(PathToResources.UI.LoadingScreen.Standard);
return Object.Instantiate(standardLoadingScreenPrefab);
}
private static WalletService CreateWalletService(DIContainer c)
{
Dictionary<CurrencyTypes, ReactiveVariable<int>> currencies = new();
foreach (CurrencyTypes currencyType in Enum.GetValues(typeof(CurrencyTypes)))
currencies[currencyType] = new ReactiveVariable<int>();
return new WalletService(currencies, c.Resolve<PlayerDataProvider>());
}
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: b9d1afe3e0d64ea49851f529d43b4c01
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant: