コード例 #1
0
 public DestroyItemGimmickManager(
     ItemCreator itemCreator,
     ItemDestroyer itemDestroyer,
     IEnumerable <IDestroyItemGimmick> destroyItemGimmicks)
 {
     this.itemDestroyer    = itemDestroyer;
     itemCreator.OnCreate += OnCreateItem;
     Register(destroyItemGimmicks);
 }
コード例 #2
0
        static void OnChangePlayMode(PlayModeStateChange playMode)
        {
            switch (playMode)
            {
            case PlayModeStateChange.ExitingPlayMode:
                SetIsInGameMode(false);
                break;

            case PlayModeStateChange.EnteredPlayMode:
                SetIsInGameMode(true);

                ItemIdAssigner.AssignItemId();
                ItemTemplateIdAssigner.Execute();
                LayerCollisionConfigurer.SetupLayerCollision();

                var rootGameObjects = SceneManager.GetActiveScene().GetRootGameObjects();

                var spawnPoints = GetComponentsInGameObjectsChildren <ISpawnPoint>(rootGameObjects);
                SpawnPointManager = new SpawnPointManager(spawnPoints);

                // 疑似Playerの設定
                var enterDeviceType = EnterDeviceType.Desktop;
                if (XRSettings.enabled)
                {
                    enterDeviceType = EnterDeviceType.VR;
                }

                var despawnHeight = GetComponentInGameObjectsChildren <IDespawnHeight>(rootGameObjects).Height;
                PlayerPresenter = new PlayerPresenter(PermissionType.Audience, enterDeviceType, SpawnPointManager);
                new AvatarRespawner(despawnHeight, PlayerPresenter);

                var itemCreator   = new ItemCreator(GetComponentsInGameObjectsChildren <ICreateItemGimmick>(rootGameObjects));
                var itemDestroyer = new ItemDestroyer(PlayerPresenter.PlayerTransform.GetComponent <IItemController>());
                new ItemRespawner(despawnHeight, itemCreator, itemDestroyer, GetComponentsInGameObjectsChildren <IMovableItem>(rootGameObjects));

                var mainScreenViews = GetComponentsInGameObjectsChildren <IMainScreenView>(rootGameObjects);
                MainScreenPresenter = new MainScreenPresenter(mainScreenViews);

                var rankingScreenViews     = GetComponentsInGameObjectsChildren <IRankingScreenView>(rootGameObjects);
                var rankingScreenPresenter = new RankingScreenPresenter(rankingScreenViews);
                rankingScreenPresenter.SetRanking(11);

                var commentScreenViews =
                    GetComponentsInGameObjectsChildren <ICommentScreenView>(rootGameObjects);
                CommentScreenPresenter = new CommentScreenPresenter(commentScreenViews);

                SetupTriggerGimmicks(rootGameObjects, itemCreator, itemDestroyer);

                OnInitializedEvent?.Invoke();
                break;
            }
        }
コード例 #3
0
    private void ShowConfirmationPanel(ItemDestroyer buttonAction, string deleteText, Item item)
    {
        ConfirmationPanel.SetActive(true);
        toDeleteItemCount.gameObject.SetActive(item.Stackable);

        if (toDeleteItemCount.gameObject.activeSelf)
        {
            toDeleteItemCount.maxValue = item.Stacks;
            toDeleteItemCount.value    = 1;
        }

        ConfirmationText.text = deleteText;
        proceed.onClick.RemoveAllListeners();
        proceed.onClick.AddListener(() => {
            buttonAction(item, (int)toDeleteItemCount.value);
            ConfirmationPanel.SetActive(false);
        });
    }
コード例 #4
0
        static void SetupTriggerGimmicks(IEnumerable <GameObject> rootGameObjects, ItemCreator itemCreator, ItemDestroyer itemDestroyer)
        {
            RoomStateRepository = new RoomStateRepository();
            GimmickManager      = new GimmickManager(RoomStateRepository, itemCreator, itemDestroyer);
            SignalGenerator     = new SignalGenerator();
            var triggerManager = new TriggerManager(RoomStateRepository, itemCreator, GimmickManager, SignalGenerator);
            var items          = GetComponentsInGameObjectsChildren <IItem>(rootGameObjects).ToArray();

            triggerManager.Add(items.SelectMany(x => x.gameObject.GetComponents <IItemTrigger>()));
            triggerManager.Add(GetComponentsInGameObjectsChildren <IPlayerTrigger>(rootGameObjects));
            triggerManager.Add(GetComponentsInGameObjectsChildren <IGlobalTrigger>(rootGameObjects));
            GimmickManager.AddGimmicksInScene(GetComponentsInGameObjectsChildren <IGimmick>(rootGameObjects));
            foreach (var item in items)
            {
                GimmickManager.AddGimmicksInItem(item.gameObject.GetComponentsInChildren <IGimmick>(true), item.Id.Value);
            }

            new LogicManager(itemCreator, RoomStateRepository, GimmickManager,
                             GetComponentsInGameObjectsChildren <IItemLogic>(rootGameObjects),
                             GetComponentsInGameObjectsChildren <IPlayerLogic>(rootGameObjects),
                             GetComponentsInGameObjectsChildren <IGlobalLogic>(rootGameObjects),
                             SignalGenerator);
            new PlayerEffectManager(PlayerPresenter, itemCreator, GetComponentsInGameObjectsChildren <IPlayerEffectGimmick>(rootGameObjects));
            new CreateItemGimmickManager(itemCreator, GetComponentsInGameObjectsChildren <ICreateItemGimmick>(rootGameObjects));
            new DestroyItemGimmickManager(itemCreator, itemDestroyer, GetComponentsInGameObjectsChildren <IDestroyItemGimmick>(rootGameObjects));

            var onReceiveOwnershipItemTriggerManager = new OnReceiveOwnershipItemTriggerManager(itemCreator);
            var onCreateItemTriggerManager           = new OnCreateItemTriggerManager(itemCreator);
            var onJoinPlayerTriggerManager           = new OnJoinPlayerTriggerManager();

            onCreateItemTriggerManager.Invoke(items.SelectMany(x => x.gameObject.GetComponents <IOnCreateItemTrigger>()));
            onJoinPlayerTriggerManager.Invoke(GetComponentsInGameObjectsChildren <IOnJoinPlayerTrigger>(rootGameObjects));
            onReceiveOwnershipItemTriggerManager.InvokeOnStart(items.SelectMany(x => x.gameObject.GetComponents <IOnReceiveOwnershipItemTrigger>()));
        }
コード例 #5
0
        static void SetupTriggerGimmicks(IEnumerable <GameObject> rootGameObjects, ItemCreator itemCreator, ItemDestroyer itemDestroyer)
        {
            var roomStateRepository = new RoomStateRepository();
            var gimmickManager      = new GimmickManager(roomStateRepository, itemCreator, itemDestroyer);
            var triggerManager      = new TriggerManager(roomStateRepository, itemCreator, gimmickManager);
            var items = GetComponentsInGameObjectsChildren <IItem>(rootGameObjects).ToArray();

            triggerManager.Add(items.SelectMany(x => x.gameObject.GetComponents <IItemTrigger>()));
            gimmickManager.AddGimmicksInScene(GetComponentsInGameObjectsChildren <IGimmick>(rootGameObjects));
            foreach (var item in items)
            {
                gimmickManager.AddGimmicksInItem(item.gameObject.GetComponentsInChildren <IGimmick>(true), item.Id.Value);
            }

            new PlayerGimmickManager(PlayerPresenter, itemCreator, GetComponentsInGameObjectsChildren <IPlayerGimmick>(rootGameObjects));
            new CreateItemGimmickManager(itemCreator, GetComponentsInGameObjectsChildren <ICreateItemGimmick>(rootGameObjects));
            new DestroyItemGimmickManager(itemCreator, itemDestroyer, GetComponentsInGameObjectsChildren <IDestroyItemGimmick>(rootGameObjects));
            var onCreateItemTriggerManager = new OnCreateItemTriggerManager(itemCreator);

            onCreateItemTriggerManager.Invoke(items.SelectMany(x => x.gameObject.GetComponents <IOnCreateItemTrigger>()));
        }
コード例 #6
0
 void Awake()
 {
     instance = this;
 }