-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathBootstrapper.cs
More file actions
59 lines (45 loc) · 1.92 KB
/
Copy pathBootstrapper.cs
File metadata and controls
59 lines (45 loc) · 1.92 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
using Infrastructure.StateMachine;
using Services;
using UnityEngine;
namespace Infrastructure
{
public class Bootstrapper : MonoBehaviour, ICoroutineRunner
{
private IGameStateMachine _gameStateMachine;
private ITimeService _timeService;
private void Awake()
{
var serviceLocator = new ServiceLocator();
CreateGlobalServices(serviceLocator);
_gameStateMachine = new GameStateMachine(serviceLocator);
serviceLocator.Register(_gameStateMachine);
_gameStateMachine.Enter<GameplayLevelState, string>(Constants.FirstLevelCode);
DontDestroyOnLoad(gameObject);
}
private void Update()
{
_timeService.UpdateTick(Time.deltaTime);
}
private void CreateGlobalServices(ServiceLocator serviceLocator)
{
IRandomService randomService = new RandomService();
serviceLocator.Register(randomService);
ISceneLoader sceneLoader = new SceneLoader(this);
serviceLocator.Register(sceneLoader);
IAssetProvider assetProvider = new AssetProvider();
serviceLocator.Register(assetProvider);
IStaticDataProvider staticDataProvider = new StaticDataProvider();
staticDataProvider.LoadData();
serviceLocator.Register(staticDataProvider);
IInputService inputService = new InputService();
serviceLocator.Register(inputService);
ITimeService timeService = new TimeService();
serviceLocator.Register(timeService);
_timeService = timeService;
IUiFactory uiFactory = new UiFactory(serviceLocator.Get<IAssetProvider>());
serviceLocator.Register(uiFactory);
IWindowService windowService = new WindowService(serviceLocator.Get<IUiFactory>());
serviceLocator.Register(windowService);
}
}
}