示例#1
0
 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");
        }