public void Init( IEnumerable <PlanetContext> planets, GravitySystem gravitySystem, SystemsUpdater systemsUpdater, HealthsContainer healthsContainer, RocketState[] rocketsStates ) { MovementSystem = new RocketsMovementSystem(gravitySystem); systemsUpdater.AddPhysicsTicker(MovementSystem); _rocketsFactory = new RocketsFactory( _rockets, MovementSystem, _rocketsParent, healthsContainer, _cameraTransform ); _rocketsFactory.CreateRockets(rocketsStates); foreach (var planet in planets) { planet.CannonProvider.SetFactory(_rocketsFactory); var cannon = planet.CannonProvider.GetCannon(); systemsUpdater.AddFrameTicker(cannon); } }
private void Start() { var gameState = ProjectContext.Instance.GameLoader.GameState; _planetsContext.Init(gameState.Planets); _sunSystemContext.Init(_planetsContext.PlanetsStorage.Planets); _systemsUpdater.AddFrameTicker(_sunSystemContext.OrbitsSystem); _gravityContext.Init(_planetsContext.PlanetsStorage.Planets); _healthsContext.Init( _gravityContext.GravitySystem, _sunSystemContext.OrbitsSystem, _planetsContext.PlanetsStorage ); _fireContext.Init( _planetsContext.PlanetsStorage.Planets, _gravityContext.GravitySystem, _systemsUpdater, _healthsContext.HealthsContainer, gameState.Rockets ); _controllsContext.Init(_planetsContext.PlanetsStorage, _systemsUpdater); var gameSave = ProjectContext.Instance.GameSave; gameSave.SetGameEntities(_planetsContext.PlanetsStorage, _fireContext.MovementSystem); _resultController = new GameResultController(); _planetsContext.PlanetsStorage.OnAllEnemiesKilled += _resultController.Win; _planetsContext.PlanetsStorage.OnPlayerKilled += _resultController.Loose; }
public AIStorage( IEnumerable <PlanetContext> planetsContext, SystemsUpdater systemsUpdater, Range fireInterval ) { _systemsUpdater = systemsUpdater; _ais = new SortedDictionary <int, AIController>(); foreach (var planet in planetsContext) { var cannon = planet.CannonProvider.GetCannon(); var ai = new AIController(cannon, fireInterval); _systemsUpdater.AddFrameTicker(ai); _ais.Add(planet.Id, ai); } }