public DestroyItemGimmickManager( ItemCreator itemCreator, ItemDestroyer itemDestroyer, IEnumerable <IDestroyItemGimmick> destroyItemGimmicks) { this.itemDestroyer = itemDestroyer; itemCreator.OnCreate += OnCreateItem; Register(destroyItemGimmicks); }
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; } }
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); }); }
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>())); }
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>())); }
void Awake() { instance = this; }