private void OnAbilityCast(CharacterModel model, IAbility ability, Data.Vector2 target) { if (ability is ProjectileAbility) { ProjectileView projectile = GameObjectExtensions.Instantiate(projectilePrefab, transform.parent).GetComponent <ProjectileView>(); projectile.Animator.runtimeAnimatorController = UnityDataProvider.LoadAsset <RuntimeAnimatorController>("Abilities/Ability_" + ability.Name + "_Projectile"); projectile.transform.localPosition = model.Position.ToUnityVector(); projectile.Target = target.ToUnityVector(); } }
private void SetGame(GameData gameData) { if (gameView != null) { DestroyImmediate(gameView.gameObject); gameView = null; } GameModel model = new GameModel(gameData, UnityApplication.DataProvider); gameView = GameObjectExtensions.Instantiate(gamePrefab, null).GetComponent <GameView>(); gameView.gameObject.name = "Game"; gameView.Data = gameData; gameView.Model = model; gameView.ApplyModelToScene(); }
public void UpdateItems() { TransformExtensions.DestroyAllChildren(listTransform); if (ItemsSource != null) { foreach (object value in ItemsSource()) { GameObject newItem = GameObjectExtensions.Instantiate(itemPrefab, listTransform); newItem.GetComponent <ListViewItem>().Value = value; newItem.GetComponent <ListViewItem>().Text.text = ItemTextConverter != null?ItemTextConverter(value) : value?.ToString(); newItem.GetComponent <ListViewItem>().Button.onClick.AddListener(() => SelectedItem = newItem); } } }
public void LoadReplay(string path) { Debug.LogFormat(this, "[GameSceneManager] Loading replay from {0}", path); if (replayController != null) { DestroyImmediate(replayController.gameObject); replayController = null; } GameData gameData = UnityApplication.DataProvider.LoadReplay(path); SetGame(gameData); replayController = GameObjectExtensions.Instantiate(replayControllerPrefab, null).GetComponent <ReplayController>(); replayController.GameView = gameView; replayController.Resume(); }
public void ApplyModelToScene() { ResetScene(); if (String.IsNullOrEmpty(Model.Map) == false) { GameObject mapPrefab = Resources.Load <GameObject>("Maps/" + Model.Map); GameObject mapObject = GameObjectExtensions.Instantiate(mapPrefab, mapGroup); mapObject.name = Model.Map; mapObject.transform.localPosition = Vector3.zero; } foreach (PlayerModel playerModel in Model.PlayerCollection) { PlayerView playerView = GameObjectExtensions.Instantiate(playerPrefab, playerGroup).GetComponent <PlayerView>(); playerView.Data = Data.PlayerCollection.Single(p => p.Id == playerModel.Id); playerView.Model = playerModel; playerView.UpdateFromModel(); playerCollection.Add(playerView); HumanPlayerController playerController = GameObjectExtensions.Instantiate(humanPlayerControllerPrefab, playerView.transform).GetComponent <HumanPlayerController>(); playerController.Game = this; playerController.Player = playerView; playerView.LocalController = playerController.gameObject; playerView.Disable(); } foreach (CharacterModel characterModel in Model.CharacterCollection) { CharacterView characterView = GameObjectExtensions.Instantiate(characterPrefab, characterGroup).GetComponent <CharacterView>(); characterView.Data = Data.CharacterCollection.Single(c => c.Id == characterModel.Id); characterView.Model = characterModel; characterView.UpdateFromModel(); characterCollection.Add(characterView); } Debug.LogFormat(this, "[GameView] Applied model to scene"); }