예제 #1
0
 private void OnPartCustomized(CustomizePartUI.PartCustomizationEvent data)
 {
     if (this.m_partDescs == null)
     {
         return;
     }
     foreach (ConstructionUI.PartDesc partDesc in this.m_partDescs)
     {
         if (partDesc.part.m_partType == data.customizedPart)
         {
             partDesc.part = WPFMonoBehaviour.gameData.GetCustomPart(partDesc.part.m_partType, data.customPartIndex);
             GameObject gameObject = partDesc.part.m_constructionIconSprite.gameObject;
             partDesc.part.customPartIndex = data.customPartIndex;
             if (partDesc.currentPartIcon != null && gameObject != null)
             {
                 GameObject gameObject2 = UnityEngine.Object.Instantiate <GameObject>(gameObject);
                 gameObject2.transform.parent        = partDesc.currentPartIcon.parent;
                 gameObject2.transform.localScale    = new Vector3(1.75f, 1.75f, 1f);
                 gameObject2.transform.localPosition = new Vector3(0f, 0f, -0.5f);
                 ConstructionUI.SetSortingOrder(gameObject2, 1, string.Empty);
                 UnityEngine.Object.Destroy(partDesc.currentPartIcon.gameObject);
                 partDesc.currentPartIcon = gameObject2.transform;
                 if (partDesc.currentPartIcon.parent != null && partDesc.currentPartIcon.parent.GetComponent <DraggableButton>() != null)
                 {
                     partDesc.currentPartIcon.parent.GetComponent <DraggableButton>().Icon = gameObject2;
                 }
             }
         }
     }
 }
예제 #2
0
 private void OnDestroy()
 {
     if (this.constructionUI != null)
     {
         ConstructionUI constructionUI = this.constructionUI;
         constructionUI.OnPartsUnlocked = (Action)Delegate.Remove(constructionUI.OnPartsUnlocked, new Action(this.OnPartsUnlocked));
     }
     EventManager.Disconnect(new EventManager.OnEvent <PartSelectedEvent>(this.OnPartSelected));
     EventManager.Disconnect(new EventManager.OnEvent <LootCrateOpenDialog.LootCrateDelivered>(this.OnLootCrateDelivered));
 }
예제 #3
0
 private void Start()
 {
     this.constructionUI = UnityEngine.Object.FindObjectOfType <ConstructionUI>();
     EventManager.Connect(new EventManager.OnEvent <PartSelectedEvent>(this.OnPartSelected));
     EventManager.Connect(new EventManager.OnEvent <LootCrateOpenDialog.LootCrateDelivered>(this.OnLootCrateDelivered));
     this.CreatePartListing();
     this.UpdateNewTagState();
     if (this.constructionUI != null)
     {
         ConstructionUI constructionUI = this.constructionUI;
         constructionUI.OnPartsUnlocked = (Action)Delegate.Combine(constructionUI.OnPartsUnlocked, new Action(this.OnPartsUnlocked));
     }
 }
예제 #4
0
    private void CreatePartList(bool handleDragIcons)
    {
        this.m_scrollList.Clear();
        foreach (ConstructionUI.PartDesc partDesc in this.m_partDescs)
        {
            BasePart   part       = partDesc.part;
            GameObject gameObject = part.m_constructionIconSprite.gameObject;
            bool       flag       = true;
            int        num        = 0;
            int        num2       = 0;
            int        num3       = GameProgress.GetAllStars() + GameProgress.GetRaceLevelUnlockedStars();
            bool       flag2      = false;
            if (WPFMonoBehaviour.levelManager && WPFMonoBehaviour.levelManager.m_raceLevel && WPFMonoBehaviour.levelManager.CurrentGameMode is BaseGameMode)
            {
                string currentLevelIdentifier = Singleton <GameManager> .Instance.CurrentLevelIdentifier;
                RaceLevels.LevelUnlockablePartsData levelUnlockableData = WPFMonoBehaviour.gameData.m_raceLevels.GetLevelUnlockableData(currentLevelIdentifier);
                if (levelUnlockableData != null)
                {
                    foreach (RaceLevels.UnlockableTier unlockableTier in levelUnlockableData.m_tiers)
                    {
                        if (unlockableTier.m_part == part.m_partType)
                        {
                            if (num3 < unlockableTier.m_starLimit)
                            {
                                flag = false;
                                num  = Mathf.Max(unlockableTier.m_starLimit - num3, 0);
                                num2 = unlockableTier.m_starLimit;
                                if (this.m_unlockPartTierDialog == null)
                                {
                                    this.m_unlockPartTierDialog = UnityEngine.Object.Instantiate <GameObject>(WPFMonoBehaviour.gameData.m_unlockPartTierDialog).GetComponent <UnlockRoadHogsParts>();
                                    this.m_unlockPartTierDialog.transform.position = WPFMonoBehaviour.hudCamera.transform.position + new Vector3(0f, 0f, 10f);
                                    this.m_unlockPartTierDialog.Close();
                                    this.m_unlockPartTierDialog.onOpen += delegate()
                                    {
                                        this.m_constructionUI.DisableFunctionality = true;
                                    };
                                    this.m_unlockPartTierDialog.onClose += delegate()
                                    {
                                        this.m_constructionUI.DisableFunctionality = false;
                                    };
                                }
                            }
                            else if (!GameProgress.GetRaceLevelPartUnlocked(currentLevelIdentifier, part.m_partType.ToString()))
                            {
                                GameProgress.SetRaceLevelPartUnlocked(currentLevelIdentifier, part.m_partType.ToString(), true);
                                flag2 = true;
                            }
                            break;
                        }
                    }
                }
            }
            GameObject original    = (!flag) ? this.m_partUnavailableButtonPrefab : this.m_partButtonPrefab;
            GameObject gameObject2 = UnityEngine.Object.Instantiate <GameObject>(original);
            gameObject2.transform.parent = this.m_scrollList.transform;
            ConstructionUI.SetSortingOrder(gameObject2, 1, string.Empty);
            if (flag)
            {
                gameObject2.GetComponent <DraggableButton>().DragObject = partDesc;
                if (handleDragIcons)
                {
                    gameObject2.GetComponent <DraggableButton>().DragIconPrefab = gameObject;
                }
                gameObject2.GetComponent <DraggableButton>().DragIconScale = 1.75f;
                Transform transform = gameObject2.transform.Find("PartCount");
                transform.GetComponent <TextMesh>().text          = (partDesc.maxCount - partDesc.useCount).ToString();
                transform.GetComponent <PartCounter>().m_partType = partDesc.part.m_partType;
                transform.GetComponent <Renderer>().sortingOrder  = 1;
            }
            else
            {
                Transform transform2 = gameObject2.transform.Find("Starlimit");
                transform2.GetComponent <TextMesh>().text         = num.ToString();
                transform2.GetComponent <Renderer>().sortingOrder = 1;
                int productPrice = Singleton <VirtualCatalogManager> .Instance.GetProductPrice("road_hogs_star_unlock");

                if (productPrice > 0 && !Singleton <BuildCustomizationLoader> .Instance.IsOdyssey)
                {
                    int totalCost = (num2 - num3) * productPrice;
                    this.AddUnlockStarTierPopup(gameObject2.GetComponent <UnavailablePartButton>(), this.m_unlockPartTierDialog, num2, num3, totalCost, () => GameProgress.SnoutCoinCount() >= totalCost);
                }
            }
            GameObject gameObject3 = UnityEngine.Object.Instantiate <GameObject>(gameObject);
            gameObject3.transform.parent        = gameObject2.transform;
            gameObject3.transform.localScale    = new Vector3(1.75f, 1.75f, 1f);
            gameObject3.transform.localPosition = new Vector3(0f, 0f, -0.5f);
            ConstructionUI.SetSortingOrder(gameObject3, 1, string.Empty);
            partDesc.currentPartIcon = gameObject3.transform;
            if (flag)
            {
                gameObject2.GetComponent <DraggableButton>().Icon = gameObject3;
                if (flag2)
                {
                    GameObject gameObject4 = UnityEngine.Object.Instantiate <GameObject>(this.m_partUnlockAnimatedLock);
                    gameObject4.transform.parent        = gameObject2.transform;
                    gameObject4.transform.localPosition = new Vector3(0f, 0.6f, -1f);
                }
            }
            this.m_scrollList.AddButton(gameObject2.GetComponent <Widget>());
        }
        foreach (ConstructionUI.PartDesc partDesc2 in this.m_partDescs)
        {
            if (partDesc2 != null && !(partDesc2.part == null))
            {
                int lastUsedPartIndex = CustomizationManager.GetLastUsedPartIndex(partDesc2.part.m_partType);
                if (lastUsedPartIndex > 0)
                {
                    this.OnPartCustomized(new CustomizePartUI.PartCustomizationEvent(partDesc2.part.m_partType, lastUsedPartIndex));
                }
            }
        }
    }
예제 #5
0
 public void SetConstructionUI(ConstructionUI constructionUI)
 {
     this.m_constructionUI = constructionUI;
 }