public override void Setup(object data = null)
        {
            base.Setup(data);

            StoryCollectionData storyCollectionData = data as StoryCollectionData;

            cachedData = storyCollectionData;

            if (storyCollectionData == null)
            {
                throw new ArgumentException($"{GetType().Name}: must have setup argument {typeof(StoryCollectionData).Name}");
            }

            for (int i = 0; i < storyCollectableViews.Length; i++)
            {
                if (i < storyCollectionData.collectables.Count)
                {
                    StoryCollectableData collectableData = resourceService.GetStoryCollectable(storyCollectionData.collectables[i]);
                    storyCollectableViews[i].Setup(collectableData);
                }
            }

            StoryChargerData storyChargerData = resourceService.GetStoryCharger(storyCollectionData.chargerId);

            chargerView.Setup(storyChargerData);

            SetupChargeButton(storyCollectionData);
            SetupCollectionIcon(storyCollectionData);
            closeBigButton.SetListener(() => Close(), engine.GetService <IAudioService>());
            buyChargerView.Setup(storyCollectionData);
        }
        private void SetupChargeButton(StoryCollectionData storyCollectionData)
        {
            int playerCollectionCount = playerService.GetItemCount(storyCollectionData);

            if (playerCollectionCount > 0)
            {
                chargeButton.DeactivateSelf();
            }
            else
            {
                chargeButton.ActivateSelf();
                if (ravenhillGameModeService.IsStoryCollectionReadyToCharge(storyCollectionData))
                {
                    chargeButton.interactable = true;
                    chargeButton.SetListener(() => {
                        engine.GetService <IVideoService>().PlayVideo(storyCollectionData.videoId, () => {
                            ravenhillGameModeService.ChargeStoryCollection(storyCollectionData);
                        });
                    }, engine.GetService <IAudioService>());
                }
                else
                {
                    chargeButton.interactable = false;
                }
            }
        }
        public bool IsStoryCollectionReadyToCharge(StoryCollectionData collection)
        {
            bool hasCollectables = true;

            RavenhillResourceService resourceService = engine.GetService <IResourceService>().Cast <RavenhillResourceService>();
            PlayerService            playerService   = engine.GetService <IPlayerService>().Cast <PlayerService>();

            foreach (string collectableId in collection.collectables)
            {
                StoryCollectableData collectableData = resourceService.GetStoryCollectable(collectableId);
                int playerCount = playerService.GetItemCount(collectableData);
                if (playerCount <= 0)
                {
                    hasCollectables = false;
                    break;
                }
            }

            bool             hasCharger  = true;
            StoryChargerData chargerData = resourceService.GetStoryCharger(collection.chargerId);
            int playerChargerCount       = playerService.GetItemCount(chargerData);

            if (playerChargerCount <= 0)
            {
                hasCharger = false;
            }

            return(hasCollectables && hasCharger);
        }
예제 #4
0
 private void OnTriggerClick(StoryCollectionData data)
 {
     if (Application.isMobilePlatform)
     {
         Handheld.PlayFullScreenMovie(data.id, Color.black, FullScreenMovieControlMode.CancelOnInput);
     }
     else
     {
     }
 }
        public void ChargeStoryCollection(StoryCollectionData collectionData)
        {
            PlayerService            playerService   = engine.GetService <IPlayerService>().Cast <PlayerService>();
            RavenhillResourceService resourceService = engine.GetService <IResourceService>().Cast <RavenhillResourceService>();

            StoryChargerData chargerData = resourceService.GetStoryCharger(collectionData.chargerId);

            if (playerService.GetItemCount(chargerData) > 0)
            {
                playerService.RemoveItem(InventoryItemType.StoryCharger, chargerData.id, 1);
                playerService.AddItem(new InventoryItem(collectionData, 1));
                RavenhillEvents.OnStoryCollectionCharged(collectionData);
            }
        }
        private void SetupCollectionIcon(StoryCollectionData storyCollectionData)
        {
            storyCollectionChargeBackground.overrideSprite = resourceService.GetSprite(storyCollectionData.chargeBackImageId, storyCollectionData.chargeBackImagePath);

            int playerCount = playerService.GetItemCount(storyCollectionData);

            if (playerCount > 0)
            {
                Sprite sprite = resourceService.GetSprite(storyCollectionData.chargeColorImageId, storyCollectionData.chargeColorImagePath);
                SetStoryCollectionIconSprite(sprite);
            }
            else
            {
                Sprite sprite = resourceService.GetSprite(storyCollectionData.chargeGrayImageId, storyCollectionData.chargeGrayImagePath);
                SetStoryCollectionIconSprite(sprite);
            }
        }
예제 #7
0
        public void Setup(StoryCollectionData data)
        {
            StoryChargerData chargerData   = resourceService.GetStoryCharger(data.chargerId);
            StoreItemData    storeItemData = resourceService.GetStoreItem(chargerData.storeItemId);

            if (storeItemData == null)
            {
                Debug.Log($"storeItemData null for charger {chargerData.id}:{chargerData.storeItemId}");
                return;
            }

            priceImage.overrideSprite = resourceService.GetPriceSprite(storeItemData.price);
            priceText.text            = storeItemData.price.price.ToString();

            buyButton.SetListener(() => {
                playerService.Buy(storeItemData);
            }, engine.GetService <IAudioService>());
            askButton.SetListener(() => {
                netService.Ask(chargerData);
            }, engine.GetService <IAudioService>());
        }
예제 #8
0
 public static void OnStoryCollectionCharged(StoryCollectionData storyCollectionData)
 {
     StoryCollectionCharged?.Invoke(storyCollectionData);
 }
예제 #9
0
 private void OnStoryCollectionCharged(StoryCollectionData data)
 {
     Setup();
 }