// Create just the controller public HudCharacterControllerFactory(ISelectedCharacterData selectedCharacterData, IHudImageView hudImageView, List <IHudStatView> hudStatViews) { foreach (var hudStatView in hudStatViews) { _controllers.Add(new HudController(selectedCharacterData, hudImageView, hudStatView)); } }
public CharacterSelectController(ICharacterSelectView characterSelectView, ICharacterModel characterModel, ISelectedCharacterData selectedCharacterData, IControllableCharacterData controllableCharacterData) { _characterSelectView = characterSelectView; _characterModel = characterModel; _selectedCharacterData = selectedCharacterData; _controllableCharacterData = controllableCharacterData; _characterSelectView.OnCharacterClicked += HandleCharacterClicked; _controllableCharacterData.OnConfirmId += HandleIdConfirmed; }
// Initialize Character Stat // Initialize model and view for a character stats public CharacterInitializer(ISelectedCharacterData selectedCharacterData, IControllableCharacterData controllableCharacterData, CharacterConfig config, Vector3 position, Vector3 rotation) { // Instantiate character game object GameObject characterGameObject = UnityEngine.Object.FindObjectOfType <CharacterSelectView>()?.gameObject; if (characterGameObject == null) { characterGameObject = UnityEngine.Object.Instantiate(config.CharacterPrefab, position, Quaternion.identity); } // Initialize character stat // Get stat initial values from config object var characterStatModel = new ModelFactory.CharacterStatModelFactory( // Get health initial values from config object new[] { config.HealthInitialValue, config.MaxHealthInitialValue }, // Get mana initial values from config object new[] { config.ManaInitialValue, config.MaxManaInitialValue }) .Model; var characterStatViews = new ViewFactory.CharacterStatViewFactory(characterGameObject).Views; var characterStatControllers = new ControllerFactory.CharacterStatControllerFactory(characterStatModel, characterStatViews) .Controllers; // Initialize character movement // Get movement initial values from config object var characterMovementModel = new ModelFactory.CharacterMovementModelFactory(position, rotation, config.MovementSpeed) .Model; // get base move speed from config var characterMovementView = new ViewFactory.CharacterMovementViewFactory(characterGameObject).View; var characterMovementController = new ControllerFactory.CharacterMovementControllerFactory(characterMovementModel, characterMovementView) .Controller; // TODO add new mechanics here // Initialize new character with above mechanics var characterModel = new CharacterModel(characterGameObject, config.HudImage, characterStatModel, characterMovementModel); var characterSelectView = characterGameObject.GetComponent <CharacterSelectView>(); var characterSelectController = new CharacterSelectController(characterSelectView, characterModel, selectedCharacterData, controllableCharacterData); }
// Controller depends on interfaces for the model and view public HudController(ISelectedCharacterData selectedCharacterData, IHudImageView hudImageView, IHudStatView hudStatView) { _selectedCharacterData = selectedCharacterData; _hudImageView = hudImageView; _hudStatView = hudStatView; _selectedCharacterData.OnSwitchingCharacterFinished += HandleSwitchingCharacter; if (_selectedCharacterData.CharacterStatModel == null) { return; } _characterStatModel = selectedCharacterData.CharacterStatModel; _characterStatModel.OnStatChanged += HandleStatChanged; _characterStatModel.InitializeStats(); }
public CanvasInitializer(CanvasConfig config, ISelectedCharacterData selectedCharacterData) { // Initialize Hud GameObject GameObject canvasGameObject = UnityEngine.Object.FindObjectOfType <CanvasView>()?.gameObject; if (canvasGameObject == null) { canvasGameObject = UnityEngine.Object.Instantiate(config.CanvasPrefab); } // Initialize models and views from factories var hudCharacterView = new ViewFactory.HudCharacterViewFactory().View; var hudStatViews = new ViewFactory.HudStatViewFactory().Views; // Initialize controllers from factory var hudControllers = new ControllerFactory.HudCharacterControllerFactory(selectedCharacterData, hudCharacterView, hudStatViews) .Controllers; }