public void Init(GameStateUpdateService updateService, LevelService levelService, Transform parent, UnitLevelModel model, UnitView view, Canvas canvas) { _updateService = updateService; _levelService = levelService; _model = model; _view = view; _oldHealth = _model.State.Health; _levelService.OnUnitSelected += OnUnitSelected; _levelService.OnUnitCanTurn += OnUnitCanTurn; _updateService.OnStateUpdated += OnStateUpdated; _updateService.AddHandler <AttackCommand>(OnAttackUnit); _updateService.AddHandler <KillUnitCommand>(OnKillUnit); SelectView(); UpdateSelection(false); UpdateInteractable(model.IsPlayerUnit); UpdateHealth(); transform.SetParent(parent, false); _view.transform.SetParent(canvas.transform, false); _view.transform.position = Camera.main.WorldToScreenPoint(transform.position); var distance = transform.position.z - Camera.main.transform.position.z; _view.UpdateDistance(distance); _view.SelectColor(model.IsPlayerUnit); }
void AddUnit(bool isPlayerUnit, UnitState state, Transform[] points, int position) { var config = _state.Config.Units[state.Descriptor]; var model = new UnitLevelModel(isPlayerUnit, state, config); var view = _view.Create(); _unit.Create(points[position], model, view); }