示例#1
0
        public PowerTag GetPrerequisite(PowerTag tag)
        {
            string power = GetComponent <GameData>().GetStringData(
                "PowerPrerequisite", tag);

            return((PowerTag)Enum.Parse(typeof(PowerTag), power));
        }
示例#2
0
        private string GetPowerStatus(PowerTag tag)
        {
            // Status: %str%
            string powerStatus = GetComponent <GameText>().GetStringData(node,
                                                                         "Status");
            string unlocked = GetComponent <GameText>().GetStringData(node,
                                                                      "Unlocked");
            string locked = GetComponent <GameText>().GetStringData(node,
                                                                    "Locked");
            string owned = GetComponent <GameText>().GetStringData(node,
                                                                   "Owned");

            if (FindObjects.PC.GetComponent <Power>().HasPower(tag))
            {
                powerStatus = powerStatus.Replace("%str%", owned);
            }
            else if (FindObjects.PC.GetComponent <Power>().IsBuyable(tag))
            {
                powerStatus = powerStatus.Replace("%str%", unlocked);
            }
            else
            {
                powerStatus = powerStatus.Replace("%str%", locked);
            }
            return(powerStatus);
        }
示例#3
0
        private string GetPowerName(PowerTag tag)
        {
            string powerName = GetComponent <PowerData>().GetPowerName(tag);

            powerName = "[ " + powerName + " ]";

            return(powerName);
        }
示例#4
0
 public void BuyPower(PowerTag power)
 {
     if (IsBuyable(power, out PowerSlotTag slot, out int potion))
     {
         GainPower(slot, power);
         GetComponent <Potion>().LosePotion(potion);
     }
 }
示例#5
0
 public bool HasPower(PowerTag tag)
 {
     foreach (PowerTag pt in powerDict.Values)
     {
         if (tag == pt)
         {
             return(true);
         }
     }
     return(false);
 }
示例#6
0
        private void PrintPowerDescription()
        {
            PowerTag tag = orderedPower[cursorPosition];

            getUI(UITag.BuyPowerName).text   = GetPowerName(tag);
            getUI(UITag.BuyPowerStatus).text = GetPowerStatus(tag);
            getUI(UITag.BuyPowerCost).text   = GetPowerCost(tag);
            getUI(UITag.BuyPowerPCHP).text   = GetPCHP();
            getUI(UITag.BuyPowerDescription).text
                = GetComponent <GameText>().GetStringData(
                      "PowerDescription", tag);
        }
示例#7
0
 public bool IsActive(PowerTag power)
 {
     foreach (PowerSlotTag slot in Enum.GetValues(typeof(PowerSlotTag)))
     {
         if (HasPower(slot, out PowerTag powerInSlot, out bool isActive) &&
             (power == powerInSlot))
         {
             return(isActive);
         }
     }
     return(false);
 }
示例#8
0
        private string GetPowerCost(PowerTag tag)
        {
            // Cost: %num1%/%num2%
            string powerCost = GetComponent <GameText>().GetStringData(node,
                                                                       "Cost");
            int reqPotion = GetComponent <PowerData>().GetPowerCost(tag);
            int hasPotion = FindObjects.PC.GetComponent <Potion>().CurrentPotion;

            powerCost = powerCost.Replace("%num1%", reqPotion.ToString());
            powerCost = powerCost.Replace("%num2%", hasPotion.ToString());

            return(powerCost);
        }
示例#9
0
        private void TryBuyPower()
        {
            PowerTag power = buyPower.HighlightedPower;

            if (pcPower.IsBuyable(power) && !pcPower.HasPower(power))
            {
                if (confirmToBuy)
                {
                    pcPower.BuyPower(power);
                    ReadyToBuy(false);
                }
                else
                {
                    ReadyToBuy(true);
                }
            }
        }
示例#10
0
        public bool HasPower(PowerSlotTag slot,
                             out PowerTag tag, out bool isActive)
        {
            if (powerDict.TryGetValue(slot, out tag))
            {
                if (tag != PowerTag.INVALID)
                {
                    isActive
                        = GetComponent <Stress>().CurrentStress
                          >= ((int)slot + 1);
                    return(true);
                }
            }

            tag      = PowerTag.INVALID;
            isActive = false;
            return(false);
        }
示例#11
0
        public bool IsBuyable(PowerTag power,
                              out PowerSlotTag slot, out int potion)
        {
            PowerSlotTag[] checkSlot = new PowerSlotTag[]
            { PowerSlotTag.Slot1, PowerSlotTag.Slot2, PowerSlotTag.Slot3 };

            bool     slotIsFull   = true;
            bool     preIsMissing = true;
            PowerTag prePower     = powerData.GetPrerequisite(power);

            slot   = PowerSlotTag.Slot1;
            potion = 0;

            potion = powerData.GetPowerCost(power);
            if (GetComponent <Potion>().CurrentPotion < potion)
            {
                return(false);
            }

            foreach (PowerSlotTag s in checkSlot)
            {
                if (powerDict[s] == prePower)
                {
                    preIsMissing = false;
                }
                if (powerDict[s] == PowerTag.INVALID)
                {
                    slotIsFull = false;
                    slot       = s;

                    // If current slot is empty, it means we have checked all
                    // powers that PC has and `preIsMissing` will no longer
                    // change. We can break out of the loop safely.
                    break;
                }
            }
            if (slotIsFull || preIsMissing)
            {
                return(false);
            }

            return(true);
        }
示例#12
0
 public bool IsBuyable(PowerTag power)
 {
     return(IsBuyable(power, out _, out _));
 }
示例#13
0
 public void GainPower(PowerSlotTag slot, PowerTag power)
 {
     powerDict[slot] = power;
 }
示例#14
0
 public string GetPowerName(PowerTag tag)
 {
     return(GetComponent <GameText>().GetStringData("PowerName", tag));
 }
示例#15
0
 public int GetPowerCost(PowerTag tag)
 {
     return(GetComponent <GameData>().GetIntData("PowerCost", tag));
 }