コード例 #1
0
		//�Private�Methods�(1)�

        private void GetWebResponse(object o)
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(UpgradeURL);
            try
            {
                HttpWebResponse httpResponse = (HttpWebResponse)request.GetResponse();
                using (Stream stream = httpResponse.GetResponseStream())
                {
                    using (StreamReader reader = new StreamReader(stream))
                    {
                        XMLResponse = reader.ReadToEnd();
                    }
                }
            }
            catch{}
            XmlDocument UpgradeInfoDoc = new XmlDocument();
            try
            {
                if (XMLResponse != null)
                {
                    UpgradeInfoDoc.LoadXml(XMLResponse);
                    WebVersion = new UpgradeInfo();
                    WebVersion.webVersion = double.Parse(UpgradeInfoDoc.SelectSingleNode("//version").InnerText,System.Globalization.CultureInfo.InvariantCulture.NumberFormat);
                    WebVersion.DownloadURL = UpgradeInfoDoc.SelectSingleNode("//url").InnerText;
                    WebVersion.UpgradeNotes = UpgradeInfoDoc.SelectSingleNode("//notes").InnerText;

                    if (WebVersion.webVersion > currentVersion)
                    {
                        if (UpgradeFound != null)
                        {
                            UpgradeFound(WebVersion);
                        }
                    }
                    else
                    {
                        if (CurrentVersion != null)
                        {
                            CurrentVersion(WebVersion);
                        }
                    }
                }
            }
            catch
            {
            }
        }
コード例 #2
0
 public void SetUpgradeInfo(UpgradeInfo tempUpgradeInfo)
 {
     this.upgradeInfo  = tempUpgradeInfo;
     text.text         = upgradeInfo.preco.ToString();
     this.image.sprite = tempUpgradeInfo.spriteEnabled;
 }
コード例 #3
0
 public ItemButton(TabButton tab_parent, int index, string text, Station parent, Rectangle rect, Bitmap image, Rectangle region = default(Rectangle))
     : base(index, text, parent, rect, image, region)
 {
     TAB_PARENT = tab_parent;
     PARENT.CONTROLS["item↑"].Click += Description_PageUp_Click;
     PARENT.CONTROLS["item↓"].Click += Description_PageDown_Click;
     PARENT.CONTROLS["Purchase"].Click += Purchase_Click;
     UPGRADE_INFO = UpgradeInfo.Get(text);
     UNLOCKED = UPGRADE_INFO.UnlockRequire;
     using (Font font = new Font("微軟正黑體", 1, FontStyle.Bold))
     {
         NAME_IMAGE = UPGRADE_INFO.Name.ToBitmap(PARENT.CONTROLS["ProductName"].Size, font, Color.FromArgb(255, 255, 255), StringAlign.Left, Color.FromArgb(255, 0, 0));
     }
     using (Font font2 = new Font("微軟正黑體", 15, FontStyle.Bold))
     {
         DESCRIPTION_IMAGE = ("$" + UPGRADE_INFO.Price.ToString() + "\r\n" + UPGRADE_INFO.Description).ToBitmap(PARENT.CONTROLS["ProductDescription"].Size.Width, font2, Color.FromArgb(0, 0, 0), StringAlign.Left, Color.FromArgb(128, 128, 255), new Size(225, 200));
     }
 }
コード例 #4
0
ファイル: StarClient.cs プロジェクト: azhe127/Stardust
        /// <summary>执行更新</summary>
        /// <param name="ur"></param>
        /// <returns></returns>
        public Boolean ProcessUpgrade(UpgradeInfo ur)
        {
            XTrace.WriteLine("执行更新:{0} {1}", ur.Version, ur.Source);

            var dest = ".";
            var url  = ur.Source;

            try
            {
                // 需要下载更新包
                if (!url.IsNullOrEmpty())
                {
                    var fileName = Path.GetFileName(url);
                    if (!fileName.EndsWithIgnoreCase(".zip"))
                    {
                        fileName = Rand.NextString(8) + ".zip";
                    }
                    fileName = "Update".CombinePath(fileName).EnsureDirectory(true);

                    // 清理
                    //NewLife.Net.Upgrade.DeleteBuckup(dest);
                    var ug = new Upgrade {
                        Log = XTrace.Log
                    };
                    ug.DeleteBackup(dest);

                    // 下载
                    var sw     = Stopwatch.StartNew();
                    var client = new HttpClient();
                    client.DownloadFileAsync(url, fileName).Wait();

                    sw.Stop();
                    XTrace.WriteLine("下载 {0} 到 {1} 完成,耗时 {2} 。", url, fileName, sw.Elapsed);

                    // 解压
                    var source = fileName.TrimEnd(".zip");
                    if (Directory.Exists(source))
                    {
                        Directory.Delete(source, true);
                    }
                    source.EnsureDirectory(false);
                    fileName.AsFile().Extract(source, true);

                    // 更新覆盖之前,再次清理exe/dll/pdb
                    foreach (var item in dest.AsDirectory().GetAllFiles("*.exe;*.dll;*.pdb", true))
                    {
                        WriteLog("Delete {0}", item);
                        try
                        {
                            item.Delete();
                        }
                        catch
                        {
                            var del = item.FullName + $".{Rand.Next(100000, 999999)}.del";
                            item.MoveTo(del);
                        }
                    }

                    // 覆盖
                    ug.CopyAndReplace(source, dest);
                    if (Directory.Exists(source))
                    {
                        Directory.Delete(source, true);
                    }
                }

                // 升级处理命令,可选
                var cmd = ur.Executor?.Trim();
                if (!cmd.IsNullOrEmpty())
                {
                    XTrace.WriteLine("执行更新命令:{0}", cmd);

                    var si = new ProcessStartInfo
                    {
                        UseShellExecute = true,
                    };
                    var p = cmd.IndexOf(' ');
                    if (p < 0)
                    {
                        si.FileName = cmd;
                    }
                    else
                    {
                        si.FileName  = cmd.Substring(0, p);
                        si.Arguments = cmd.Substring(p + 1);
                    }

                    Process.Start(si);
                }

                return(true);
            }
            catch (Exception ex)
            {
                XTrace.WriteLine("更新失败!");
                XTrace.WriteException(ex);

                return(false);
            }
        }
コード例 #5
0
    public void OnPointerEnter(PointerEventData eventData)
    {
        Icon.material = DarkestDungeonManager.HighlightMaterial;
        StringBuilder sb = ToolTipManager.TipBody;

        sb.AppendFormat("<color={0}>", DarkestDungeonManager.Data.HexColors["notable"]);
        sb.Append(LocalizationManager.GetString("upgrade_tree_name_" + Tree.Id));
        sb.Append("</color>");

        string toolTip;

        switch (Tree.Id)
        {
        case "sanitarium.cost":
            sb.AppendFormat("\n<color={0}>", DarkestDungeonManager.Data.HexColors["equipment_tooltip_body"]);
            sb.AppendFormat(LocalizationManager.GetString(
                                "upgrade_tree_tooltip_description_reduces_positive_quirk_treatment_cost_format"), 10);
            sb.AppendLine();
            sb.AppendFormat(LocalizationManager.GetString(
                                "upgrade_tree_tooltip_description_reduces_negative_quirk_treatment_cost_format"), 10);
            sb.Append("</color>");
            toolTip = sb.ToString();
            break;

        case "blacksmith.weapon":
            sb.AppendFormat("\n<color={0}>", DarkestDungeonManager.Data.HexColors["equipment_tooltip_body"]);
            sb.AppendFormat(LocalizationManager.GetString(
                                "upgrade_tree_tooltip_description_allows_weapon_upgrades_of_rank_format"),
                            UpgradeInfo.Code == "a"? 2 : UpgradeInfo.Code == "b"? 3 : UpgradeInfo.Code == "c"? 4 : 5);
            sb.Append("</color>");
            toolTip = sb.ToString();
            break;

        case "blacksmith.armour":
            sb.AppendFormat("\n<color={0}>", DarkestDungeonManager.Data.HexColors["equipment_tooltip_body"]);
            sb.AppendFormat(LocalizationManager.GetString(
                                "upgrade_tree_tooltip_description_allows_armour_upgrades_of_rank_format"),
                            UpgradeInfo.Code == "a"? 2 : UpgradeInfo.Code == "b"? 3 : UpgradeInfo.Code == "c"? 4 : 5);
            sb.Append("</color>");
            toolTip = sb.ToString();
            break;

        case "guild.skill_levels":
            sb.AppendFormat("\n<color={0}>", DarkestDungeonManager.Data.HexColors["equipment_tooltip_body"]);
            sb.AppendFormat(LocalizationManager.GetString(
                                "upgrade_tree_tooltip_description_allows_combat_skill_upgrades_of_rank_format"),
                            UpgradeInfo.Code == "a" ? 2 : UpgradeInfo.Code == "b" ? 3 : UpgradeInfo.Code == "c" ? 4 : 5);
            sb.Append("</color>");
            toolTip = sb.ToString();
            break;

        default:
            toolTip = sb.ToString();
            for (int i = 0; i < TownUpgrades.Count; i++)
            {
                toolTip += "\n" + TownUpgrades[i].ToolTip;
            }
            break;
        }

        if (DarkestDungeonManager.Campaign.Estate.GetUpgradeStatus(Tree.Id, UpgradeInfo) == UpgradeStatus.Locked)
        {
            DarkestSoundManager.PlayOneShot("event:/ui/town/button_mouse_over_2");
            ToolTipManager.Instanse.Show(toolTip + "\n" + UpgradeInfo.PrerequisitesTooltip(), rectTransform, ToolTipStyle.FromRight, ToolTipSize.Normal);
        }
        else
        {
            DarkestSoundManager.PlayOneShot("event:/ui/town/button_mouse_over");
            ToolTipManager.Instanse.Show(toolTip, rectTransform, ToolTipStyle.FromRight, ToolTipSize.Normal);
        }
    }
コード例 #6
0
ファイル: AllCards.cs プロジェクト: tuita520/Mech-Storm
    public static void AddAllCards()
    {
        Reset();
        SortedDictionary <string, string> cardNameKeyDict = new SortedDictionary <string, string>();

        foreach (int v in Enum.GetValues(typeof(LanguageShorts)))
        {
            string strName = Enum.GetName(typeof(LanguageShorts), v);
            cardNameKeyDict[strName] = "cardName_" + strName;
        }

        string text;

        using (StreamReader sr = new StreamReader(CardsXMLFile))
        {
            text = sr.ReadToEnd();
        }

        XmlDocument doc = new XmlDocument();

        doc.LoadXml(text);
        XmlElement node_AllCards = doc.DocumentElement;

        for (int i = 0; i < node_AllCards.ChildNodes.Count; i++)
        {
            XmlNode node_Card = node_AllCards.ChildNodes.Item(i);
            int     cardID    = int.Parse(node_Card.Attributes["id"].Value);
            CardDict.Add(cardID, new CardInfo_Base());
        }

        for (int i = 0; i < node_AllCards.ChildNodes.Count; i++)
        {
            XmlNode node_Card = node_AllCards.ChildNodes.Item(i);

            int cardID = int.Parse(node_Card.Attributes["id"].Value);

            BaseInfo    baseInfo    = new BaseInfo();
            UpgradeInfo upgradeInfo = new UpgradeInfo();
            LifeInfo    lifeInfo    = new LifeInfo();
            BattleInfo  battleInfo  = new BattleInfo();
            MechInfo    mechInfo    = new MechInfo();
            EquipInfo   equipInfo   = new EquipInfo();
            WeaponInfo  weaponInfo  = new WeaponInfo();
            ShieldInfo  shieldInfo  = new ShieldInfo();
            PackInfo    packInfo    = new PackInfo();
            MAInfo      maInfo      = new MAInfo();

            SideEffectBundle sideEffectBundle = new SideEffectBundle();
            SideEffectBundle sideEffectBundle_BattleGroundAura = new SideEffectBundle();

            for (int j = 0; j < node_Card.ChildNodes.Count; j++)
            {
                XmlNode node_CardInfo = node_Card.ChildNodes[j];
                switch (node_CardInfo.Attributes["name"].Value)
                {
                case "baseInfo":
                    SortedDictionary <string, string> cardNameDict = new SortedDictionary <string, string>();
                    foreach (KeyValuePair <string, string> kv in cardNameKeyDict)
                    {
                        string cardName = node_CardInfo.Attributes[kv.Value].Value;
                        cardNameDict[kv.Key] = cardName;
                    }

                    baseInfo = new BaseInfo(
                        pictureID: int.Parse(node_CardInfo.Attributes["pictureID"].Value),
                        cardNames: cardNameDict,
                        isTemp: node_CardInfo.Attributes["isTemp"].Value == "True",
                        isHide: node_CardInfo.Attributes["isHide"].Value == "True",
                        metal: int.Parse(node_CardInfo.Attributes["metal"].Value),
                        energy: int.Parse(node_CardInfo.Attributes["energy"].Value),
                        coin: int.Parse(node_CardInfo.Attributes["coin"].Value),
                        effectFactor: 1,
                        limitNum: int.Parse(node_CardInfo.Attributes["limitNum"].Value),
                        cardRareLevel: int.Parse(node_CardInfo.Attributes["cardRareLevel"].Value),
                        shopPrice: int.Parse(node_CardInfo.Attributes["shopPrice"].Value),
                        cardType: (CardTypes)Enum.Parse(typeof(CardTypes), node_CardInfo.Attributes["cardType"].Value));
                    break;

                case "upgradeInfo":
                    int u_id = int.Parse(node_CardInfo.Attributes["upgradeCardID"].Value);
                    int d_id = int.Parse(node_CardInfo.Attributes["degradeCardID"].Value);
                    upgradeInfo = new UpgradeInfo(
                        upgradeCardID: u_id,
                        degradeCardID: d_id,
                        cardLevel: 1,
                        cardLevelMax: 1);
                    break;

                case "lifeInfo":
                    lifeInfo = new LifeInfo(
                        life: int.Parse(node_CardInfo.Attributes["life"].Value),
                        totalLife: int.Parse(node_CardInfo.Attributes["totalLife"].Value));
                    break;

                case "battleInfo":
                    battleInfo = new BattleInfo(
                        basicAttack: int.Parse(node_CardInfo.Attributes["basicAttack"].Value),
                        basicArmor: int.Parse(node_CardInfo.Attributes["basicArmor"].Value),
                        basicShield: int.Parse(node_CardInfo.Attributes["basicShield"].Value));
                    break;

                case "mechInfo":
                    mechInfo = new MechInfo(
                        isSoldier: node_CardInfo.Attributes["isSoldier"].Value == "True",
                        isDefense: node_CardInfo.Attributes["isDefense"].Value == "True",
                        isSniper: node_CardInfo.Attributes["isSniper"].Value == "True",
                        isCharger: node_CardInfo.Attributes["isCharger"].Value == "True",
                        isFrenzy: node_CardInfo.Attributes["isFrenzy"].Value == "True",
                        isSentry: node_CardInfo.Attributes["isSentry"].Value == "True",
                        slot1: (SlotTypes)Enum.Parse(typeof(SlotTypes), node_CardInfo.Attributes["slot1"].Value),
                        slot2: (SlotTypes)Enum.Parse(typeof(SlotTypes), node_CardInfo.Attributes["slot2"].Value),
                        slot3: (SlotTypes)Enum.Parse(typeof(SlotTypes), node_CardInfo.Attributes["slot3"].Value),
                        slot4: (SlotTypes)Enum.Parse(typeof(SlotTypes), node_CardInfo.Attributes["slot4"].Value));
                    break;

                case "weaponInfo":
                    weaponInfo = new WeaponInfo(
                        energy: int.Parse(node_CardInfo.Attributes["energy"].Value),
                        energyMax: int.Parse(node_CardInfo.Attributes["energyMax"].Value),
                        attack: int.Parse(node_CardInfo.Attributes["attack"].Value),
                        weaponType: (WeaponTypes)Enum.Parse(typeof(WeaponTypes), node_CardInfo.Attributes["weaponType"].Value),
                        isSentry: node_CardInfo.Attributes["isSentry"].Value == "True",
                        isFrenzy: node_CardInfo.Attributes["isFrenzy"].Value == "True");
                    equipInfo = new EquipInfo(SlotTypes.Weapon);
                    break;

                case "shieldInfo":
                    shieldInfo = new ShieldInfo(
                        armor: int.Parse(node_CardInfo.Attributes["armor"].Value),
                        shield: int.Parse(node_CardInfo.Attributes["shield"].Value),
                        shieldType: (ShieldTypes)Enum.Parse(typeof(ShieldTypes), node_CardInfo.Attributes["shieldType"].Value),
                        isDefense: node_CardInfo.Attributes["isDefense"].Value == "True");
                    equipInfo = new EquipInfo(SlotTypes.Shield);
                    break;

                case "packInfo":
                    packInfo = new PackInfo(
                        isFrenzy: node_CardInfo.Attributes["isFrenzy"].Value == "True",
                        isDefense: node_CardInfo.Attributes["isDefense"].Value == "True",
                        isSniper: node_CardInfo.Attributes["isSniper"].Value == "True"
                        );
                    equipInfo = new EquipInfo(SlotTypes.Pack);
                    break;

                case "maInfo":
                    maInfo = new MAInfo(
                        isFrenzy: node_CardInfo.Attributes["isFrenzy"].Value == "True",
                        isDefense: node_CardInfo.Attributes["isDefense"].Value == "True",
                        isSniper: node_CardInfo.Attributes["isSniper"].Value == "True"
                        );
                    equipInfo = new EquipInfo(SlotTypes.MA);
                    break;

                case "sideEffectsBundle":
                {
                    ExtractSideEffectBundle(baseInfo.CardType, node_CardInfo, sideEffectBundle);
                    break;
                }

                case "sideEffectsBundle_Aura":
                {
                    ExtractSideEffectBundle(baseInfo.CardType, node_CardInfo, sideEffectBundle_BattleGroundAura);
                    break;
                }
                }
            }

            switch (baseInfo.CardType)
            {
            case CardTypes.Mech:
                addCard(new CardInfo_Mech(
                            cardID: cardID,
                            baseInfo: baseInfo,
                            upgradeInfo: upgradeInfo,
                            lifeInfo: lifeInfo,
                            battleInfo: battleInfo,
                            mechInfo: mechInfo,
                            sideEffectBundle: sideEffectBundle,
                            sideEffectBundle_BattleGroundAura: sideEffectBundle_BattleGroundAura));
                break;

            case CardTypes.Equip:
                addCard(new CardInfo_Equip(
                            cardID: cardID,
                            baseInfo: baseInfo,
                            upgradeInfo: upgradeInfo,
                            equipInfo: equipInfo,
                            weaponInfo: weaponInfo,
                            shieldInfo: shieldInfo,
                            packInfo: packInfo,
                            maInfo: maInfo,
                            sideEffectBundle: sideEffectBundle,
                            sideEffectBundle_BattleGroundAura: sideEffectBundle_BattleGroundAura));
                break;

            case CardTypes.Spell:
                addCard(new CardInfo_Spell(
                            cardID: cardID,
                            baseInfo: baseInfo,
                            upgradeInfo: upgradeInfo,
                            sideEffectBundle: sideEffectBundle,
                            sideEffectBundle_BattleGroundAura: sideEffectBundle_BattleGroundAura));
                break;

            case CardTypes.Energy:
                addCard(new CardInfo_Spell(
                            cardID: cardID,
                            baseInfo: baseInfo,
                            upgradeInfo: upgradeInfo,
                            sideEffectBundle: sideEffectBundle,
                            sideEffectBundle_BattleGroundAura: sideEffectBundle_BattleGroundAura));
                break;
            }
        }

        // Check all upgradeID and degradeID valid in library
        foreach (KeyValuePair <int, CardInfo_Base> kv in CardDict)
        {
            int uid = kv.Value.UpgradeInfo.UpgradeCardID;
            int did = kv.Value.UpgradeInfo.DegradeCardID;

            if (uid != -1)
            {
                if (!CardDict.ContainsKey(uid))
                {
                    kv.Value.UpgradeInfo.UpgradeCardID = -1;
                    NeedReload = true;
                }
            }

            if (did != -1)
            {
                if (!CardDict.ContainsKey(did))
                {
                    kv.Value.UpgradeInfo.DegradeCardID = -1;
                    NeedReload = true;
                }
            }
        }

        //TODO  Check all id in SE

        // Make all upgradeID and degradeID linked
        foreach (KeyValuePair <int, CardInfo_Base> kv in CardDict)
        {
            int uid = kv.Value.UpgradeInfo.UpgradeCardID;
            int did = kv.Value.UpgradeInfo.DegradeCardID;

            if (uid != -1)
            {
                CardInfo_Base uCard = CardDict[uid];
                if (uCard.UpgradeInfo.DegradeCardID != kv.Key)
                {
                    if (uCard.UpgradeInfo.DegradeCardID == -1)
                    {
                        uCard.UpgradeInfo.DegradeCardID = kv.Key;
                    }
                    else
                    {
                        CardInfo_Base uCard_ori_dCard = CardDict[uCard.UpgradeInfo.DegradeCardID];
                        if (uCard_ori_dCard.UpgradeInfo.UpgradeCardID == uCard.CardID)
                        {
                            kv.Value.UpgradeInfo.UpgradeCardID = -1;
                        }
                        else
                        {
                            uCard.UpgradeInfo.DegradeCardID = kv.Key;
                        }
                    }

                    NeedReload = true;
                }
            }

            if (did != -1)
            {
                CardInfo_Base dCard = CardDict[did];
                if (dCard.UpgradeInfo.UpgradeCardID != kv.Key)
                {
                    if (dCard.UpgradeInfo.UpgradeCardID == -1)
                    {
                        dCard.UpgradeInfo.UpgradeCardID = kv.Key;
                    }
                    else
                    {
                        CardInfo_Base dCard_ori_uCard = CardDict[dCard.UpgradeInfo.UpgradeCardID];
                        if (dCard_ori_uCard.UpgradeInfo.DegradeCardID == dCard.CardID)
                        {
                            kv.Value.UpgradeInfo.DegradeCardID = -1;
                        }
                        else
                        {
                            dCard.UpgradeInfo.UpgradeCardID = kv.Key;
                        }
                    }

                    NeedReload = true;
                }
            }
        }

        // Check Series valid, no cycle
        foreach (KeyValuePair <int, CardInfo_Base> kv in CardDict)
        {
            List <int> cardSeries   = GetCardSeries(kv.Key);
            int        cardLevelMax = cardSeries.Count;
            kv.Value.UpgradeInfo.CardLevelMax = cardLevelMax;
            int cardLevel = 0;
            foreach (int cardID in cardSeries)
            {
                cardLevel++;
                if (cardID == kv.Key)
                {
                    break;
                }
            }

            kv.Value.UpgradeInfo.CardLevel = cardLevel;
        }

        //If any problem, refresh XML and reload
        if (NeedReload)
        {
            NeedReload = false;
            RefreshAllCardXML();
            ReloadCardXML();
        }
    }
コード例 #7
0
        public static void DrawSelf(SpriteBatch spriteBatch)
        {
            UIRepairWorkbench.DrawPanel(spriteBatch, UIRepairWorkbench._backgroundTexture, new Color(33, 43, 79) * 0.8f);
            UIRepairWorkbench.DrawPanel(spriteBatch, UIRepairWorkbench._borderTexture, new Color(89, 116, 213) * 0.7f);

            float oldScale = Main.inventoryScale;

            Main.inventoryScale = 0.75f;
            Point value = new Point(Main.mouseX, Main.mouseY);

            Main.spriteBatch.DrawString(Main.fontMouseText,
                                        "Repair Workbench", new Vector2(UIRepairWorkbench.X + 33, UIRepairWorkbench.Y + 10),
                                        Color.White, 0f, default(Vector2), Main.inventoryScale, SpriteEffects.None, 0f);

            Rectangle hitbox = new Rectangle(UIRepairWorkbench.X + 66, UIRepairWorkbench.Y + 180, 50, 18);

            Main.spriteBatch.DrawString(Main.fontMouseText,
                                        "Repair", new Vector2(UIRepairWorkbench.X + 66, UIRepairWorkbench.Y + 180),
                                        Color.White, 0f, default(Vector2), Main.inventoryScale, SpriteEffects.None, 0f);


            if (hitbox.Contains(value) && !PlayerInput.IgnoreMouseInterface && Main.mouseLeft && Main.mouseLeftRelease)
            {
                Main.player[Main.myPlayer].mouseInterface = true;

                if (DushyUpgrade.repairWorkbenchTE.brokenItem.IsAir)
                {
                    Main.NewText("You need an item to repair");
                }
                else if (DushyUpgrade.repairWorkbenchTE.repairScroll.IsAir)
                {
                    Main.NewText("You need a repair scroll to repair your " + DushyUpgrade.repairWorkbenchTE.brokenItem.Name);
                }
                else
                {
                    UpgradeInfo info = DushyUpgrade.repairWorkbenchTE.brokenItem.GetGlobalItem <UpgradeInfo>();
                    info.repairItem(DushyUpgrade.repairWorkbenchTE.brokenItem);
                    DushyUpgrade.repairWorkbenchTE.repairScroll.stack--;
                    ItemText.NewText(Main.player[Main.myPlayer], "Restored !", Color.Gold);
                }
            }
            for (int i = 0; i < 2; i++)
            {
                int       x    = UIRepairWorkbench.X;
                int       y    = 42 * i + UIRepairWorkbench.Y + 40;
                Rectangle r    = new Rectangle(x, y, (int)((float)Main.inventoryBackTexture.Width * Main.inventoryScale), (int)((float)Main.inventoryBackTexture.Height * Main.inventoryScale));
                Item      item = i == 0 ? DushyUpgrade.repairWorkbenchTE.brokenItem : DushyUpgrade.repairWorkbenchTE.repairScroll;

                if (r.Contains(value) && !PlayerInput.IgnoreMouseInterface)
                {
                    Main.player[Main.myPlayer].mouseInterface = true;
                    if (UIRepairWorkbench.CanGoInSlot(Main.mouseItem, i))
                    {
                        ItemSlot.Handle(ref item, 3);
                    }
                }
                ItemSlot.Draw(spriteBatch, ref item, 3, new Vector2(x, y));
                switch (i)
                {
                case 0:
                    DushyUpgrade.repairWorkbenchTE.brokenItem = item;
                    break;

                case 1:
                    DushyUpgrade.repairWorkbenchTE.repairScroll = item;
                    break;

                default:
                    break;
                }

                Main.spriteBatch.DrawString(Main.fontMouseText,
                                            UIRepairWorkbench.labels[i], new Vector2(x + 48, y + 10),
                                            Color.White, 0f, default(Vector2), Main.inventoryScale, SpriteEffects.None, 0f);
            }
            Main.inventoryScale = oldScale;
        }
コード例 #8
0
        public static void DrawSelf(SpriteBatch spriteBatch)
        {
            UIUpgradeWorkbench.DrawPanel(spriteBatch, UIUpgradeWorkbench._backgroundTexture, new Color(33, 43, 79) * 0.8f);
            UIUpgradeWorkbench.DrawPanel(spriteBatch, UIUpgradeWorkbench._borderTexture, new Color(89, 116, 213) * 0.7f);

            float oldScale = Main.inventoryScale;

            Main.inventoryScale = 0.75f;
            Point value = new Point(Main.mouseX, Main.mouseY);

            Main.spriteBatch.DrawString(Main.fontMouseText,
                                        "Upgrade Workbench", new Vector2(UIUpgradeWorkbench.X + 33, UIUpgradeWorkbench.Y + 10),
                                        Color.White, 0f, default(Vector2), Main.inventoryScale, SpriteEffects.None, 0f);

            Rectangle hitbox = new Rectangle(UIUpgradeWorkbench.X + 66, UIUpgradeWorkbench.Y + 180, 50, 18);

            Main.spriteBatch.DrawString(Main.fontMouseText,
                                        "Upgrade", new Vector2(UIUpgradeWorkbench.X + 66, UIUpgradeWorkbench.Y + 180),
                                        Color.White, 0f, default(Vector2), Main.inventoryScale, SpriteEffects.None, 0f);


            if (hitbox.Contains(value) && !PlayerInput.IgnoreMouseInterface && Main.mouseLeft && Main.mouseLeftRelease)
            {
                Main.player[Main.myPlayer].mouseInterface = true;
                if (DushyUpgrade.upgradeWorkbenchTE.itemToUpgrade.IsAir) //First case empty
                {
                    Main.NewText("You need an item to upgrade");
                }
                else if (DushyUpgrade.upgradeWorkbenchTE.upgradeMaterial.IsAir)
                {
                    Main.NewText("You need an upgrade stone or an upgrade scroll to upgrade");
                }
                else
                {
                    Boolean isProtected = !DushyUpgrade.upgradeWorkbenchTE.protectionScroll.IsAir;
                    if (!DushyUpgrade.IsItemBroken(DushyUpgrade.upgradeWorkbenchTE.itemToUpgrade))
                    {
                        UpgradeInfo info = DushyUpgrade.upgradeWorkbenchTE.itemToUpgrade.GetGlobalItem <UpgradeInfo>();
                        int         result;
                        if (DushyUpgrade.upgradeScrolls.Contains(DushyUpgrade.upgradeWorkbenchTE.upgradeMaterial.type))
                        {
                            result = info.upgradeWithScroll(DushyUpgrade.upgradeWorkbenchTE.itemToUpgrade, DushyUpgrade.upgradeWorkbenchTE.upgradeMaterial);
                        }
                        else
                        {
                            result = info.upgrade(DushyUpgrade.upgradeWorkbenchTE.itemToUpgrade, isProtected);
                        }

                        DushyUpgrade.upgradeWorkbenchTE.upgradeMaterial.stack--;
                        if (isProtected)
                        {
                            DushyUpgrade.upgradeWorkbenchTE.protectionScroll.stack--;
                        }

                        if (result == DushyUpgrade.SUCCESS)
                        {
                            ItemText.NewText(Main.player[Main.myPlayer], "Success !", Color.Green);
                            if (DushyUpgrade.IsItemMaxLevel(DushyUpgrade.upgradeWorkbenchTE.itemToUpgrade))
                            {
                                ItemText.NewText(Main.player[Main.myPlayer], "Level Max !", Color.LightSkyBlue);
                                Player player = Main.player[Main.myPlayer];
                                Item   item   = DushyUpgrade.upgradeWorkbenchTE.itemToUpgrade;
                                item.position = player.Center;
                                Item leftoverItem = player.GetItem(player.whoAmI, DushyUpgrade.upgradeWorkbenchTE.itemToUpgrade, false, true);
                                if (leftoverItem.stack > 0)
                                {
                                    int num = Item.NewItem((int)player.position.X, (int)player.position.Y, player.width, player.height, leftoverItem.type, leftoverItem.stack, false, (int)leftoverItem.prefix, true, false);
                                    Main.item[num]             = leftoverItem.Clone();
                                    Main.item[num].newAndShiny = false;
                                    if (Main.netMode == 1)
                                    {
                                        NetMessage.SendData(21, -1, -1, null, num, 1f, 0f, 0f, 0, 0, 0);
                                    }
                                }
                                DushyUpgrade.upgradeWorkbenchTE.itemToUpgrade.TurnToAir();
                            }
                        }
                        else if (result == DushyUpgrade.NO_CHANGE)
                        {
                            ItemText.NewText(Main.player[Main.myPlayer], "No Change !", Color.White);
                        }
                        else if (result == DushyUpgrade.FAILURE)
                        {
                            ItemText.NewText(Main.player[Main.myPlayer], "Failure !", Color.LightGray);
                        }
                        else if (result == DushyUpgrade.RESET)
                        {
                            ItemText.NewText(Main.player[Main.myPlayer], "Reset !", Color.Gray);
                        }
                        else if (result == DushyUpgrade.BREAKING)
                        {
                            ItemText.NewText(Main.player[Main.myPlayer], "Breaking !", Color.Black);
                        }
                        else
                        {
                            ItemText.NewText(Main.player[Main.myPlayer], "Protected !", Color.DarkBlue);
                        }
                    }
                }
            }
            for (int i = 0; i < 3; i++)
            {
                int       x    = UIUpgradeWorkbench.X;
                int       y    = 42 * i + UIUpgradeWorkbench.Y + 40;
                Rectangle r    = new Rectangle(x, y, (int)((float)Main.inventoryBackTexture.Width * Main.inventoryScale), (int)((float)Main.inventoryBackTexture.Height * Main.inventoryScale));
                Item      item = i == 0 ? DushyUpgrade.upgradeWorkbenchTE.itemToUpgrade : (i == 1 ? DushyUpgrade.upgradeWorkbenchTE.upgradeMaterial : DushyUpgrade.upgradeWorkbenchTE.protectionScroll);

                if (r.Contains(value) && !PlayerInput.IgnoreMouseInterface)
                {
                    Main.player[Main.myPlayer].mouseInterface = true;
                    if (UIUpgradeWorkbench.CanGoInSlot(Main.mouseItem, i))
                    {
                        ItemSlot.Handle(ref item, 3);
                    }
                }
                ItemSlot.Draw(spriteBatch, ref item, 3, new Vector2(x, y));
                switch (i)
                {
                case 0:
                    DushyUpgrade.upgradeWorkbenchTE.itemToUpgrade = item;
                    break;

                case 1:
                    DushyUpgrade.upgradeWorkbenchTE.upgradeMaterial = item;
                    break;

                case 2:
                    DushyUpgrade.upgradeWorkbenchTE.protectionScroll = item;
                    break;

                default:
                    break;
                }

                Main.spriteBatch.DrawString(Main.fontMouseText,
                                            UIUpgradeWorkbench.labels[i], new Vector2(x + 48, y + 10),
                                            Color.White, 0f, default(Vector2), Main.inventoryScale, SpriteEffects.None, 0f);
            }
            Main.inventoryScale = oldScale;
        }