diff --git a/FiestaCraftingCalculator/FiestaCraftingCalculator.cpp b/FiestaCraftingCalculator/FiestaCraftingCalculator.cpp index e0597e5..77337ac 100644 --- a/FiestaCraftingCalculator/FiestaCraftingCalculator.cpp +++ b/FiestaCraftingCalculator/FiestaCraftingCalculator.cpp @@ -11,189 +11,215 @@ using namespace olc::QuickGUI; int PANEL_WIDTH=620; int PANEL_HEIGHT=240; -std::mapIDToName={ - {"El1","Elrue [1]"}, - {"El2","Elrue [2]"}, - {"El3","Elrue [3]"}, - {"El4","Elrue [4]"}, - {"El5","Elrue [5]"}, - {"Lix1","Lix [1]"}, - {"Lix2","Lix [2]"}, - {"Lix3","Lix [3]"}, - {"Lix4","Lix [4]"}, - {"Lix5","Lix [5]"}, - {"Xir1","Xir [1]"}, - {"Xir2","Xir [2]"}, - {"Xir3","Xir [3]"}, - {"Xir4","Xir [4]"}, - {"Xir5","Xir [5]"}, - {"BestLowHpPotion","HP Potion (Tier 1)"}, - {"LowHpPotion","HP Potion (Tier 2)"}, - {"NorHpPotion","HP Potion (Tier 3)"}, - {"HighHpPotion","HP Potion (Tier 4)"}, - {"BestHighHpPotion","HP Potion (Tier 5)"}, - {"BestLowSpPotion","SP Potion (Tier 1)"}, - {"LowSpPotion","SP Potion (Tier 2)"}, - {"NorSpPotion","SP Potion (Tier 3)"}, - {"HighSpPotion","SP Potion (Tier 4)"}, - {"BestHighSpPotion","SP Potion (Tier 5)"}, - {"BestLowConHPPotion","HP Regeneration Potion (Tier 1)"}, - {"LowConHPPotion","HP Regeneration Potion (Tier 2)"}, - {"NorConHPPotion","HP Regeneration Potion (Tier 3)"}, - {"HighConHPPotion","HP Regeneration Potion (Tier 4)"}, - {"BestHighConHPPotion","HP Regeneration Potion (Tier 5)"}, - {"BestLowConSPPotion","SP Regeneration Potion (Tier 1)"}, - {"LowConSPPotion","SP Regeneration Potion (Tier 2)"}, - {"NorConSPPotion","SP Regeneration Potion (Tier 3)"}, - {"HighConSPPotion","SP Regeneration Potion (Tier 4)"}, - {"BestHighConSPPotion","SP Regeneration Potion (Tier 5)"}, - {"BestLowTHScroll","Aim(Tier 1)"}, - {"LowTHScroll","Aim(Tier 2)"}, - {"NorTHScroll","Aim(Tier 3)"}, - {"HighTHScroll","Aim(Tier 4)"}, - {"BestHighTHScroll","Aim(Tier 5)"}, - {"BestLowTBScroll","Nature's Agility (Tier 1)"}, - {"LowTBScroll","Nature's Agility (Tier 2)"}, - {"NorTBScroll","Nature's Agility (Tier 3)"}, - {"HighTBScroll","Nature's Agility (Tier 4)"}, - {"BestHighTBScroll","Nature's Agility (Tier 5)"}, - {"BestLowMRScroll","Magical Defense (Tier 1)"}, - {"LowMRScroll","Magical Defense (Tier 2)"}, - {"NorMRScroll","Magical Defense (Tier 3)"}, - {"HighMRScroll","Magical Defense (Tier 4)"}, - {"BestHighMRScroll","Magical Defense (Tier 5)"}, - {"BestLowACScroll","Shield Increase (Tier 1)"}, - {"LowACScroll","Shield Increase (Tier 2)"}, - {"NorACScroll","Shield Increase (Tier 3)"}, - {"HighACScroll","Shield Increase (Tier 4)"}, - {"BestHighACScroll","Shield Increase (Tier 5)"}, - {"BestLowMaxHPScroll","Vitality (Tier 1)"}, - {"LowMaxHPScroll","Vitality (Tier 2)"}, - {"NorMaxHPScroll","Vitality (Tier 3)"}, - {"HighMaxHPScroll","Vitality (Tier 4)"}, - {"BestHighMaxHPScroll","Vitality (Tier 5)"}, - {"BestLowMaxSPScroll","Mentality (Tier 1)"}, - {"LowMaxSPScroll","Mentality (Tier 2)"}, - {"NorMaxSPScroll","Mentality (Tier 3)"}, - {"HighMaxSPScroll","Mentality (Tier 4)"}, - {"BestHighMaxSPScroll","Mentality (Tier 5)"}, - {"NorMSScroll","Speed Increase (Tier 3)"}, - {"LowMSScroll","Speed Increase (Tier 2)"}, - {"HighMSScroll","Speed Increase (Tier 4)"}, - {"BestMSScroll","Speed Increase (Tier 5)"}, - {"BestLowMSScroll","Speed Increase (Tier 1)"}, - {"LowPsnResiPotion","Antitoxin (Tier 1)"}, - {"NorPsnResiPotion","Antitoxin (Tier 2)"}, - {"HighPsnResiPotion","Antitoxin (Tier 3)"}, - {"LowDssResiPotion","Antibiotic (Tier 1)"}, - {"NorDssResiPotion","Antibiotic (Tier 2)"}, - {"HighDssResiPotion","Antibiotic (Tier 3)"}, - {"LowCurResiPotion","Bless (Tier 1)"}, - {"NorCurResiPotion","Bless (Tier 2)"}, - {"HighCurResiPotion","Bless (Tier 3)"}, - {"LowPsnCurPotion","Antidote (Tier 1)"}, - {"NorPsnCurPotion","Antidote (Tier 2)"}, - {"HighPsnCurPotion","Antidote (Tier 3)"}, - {"LowDssCurPotion","Cure (Tier 1)"}, - {"NorDssCurPotion","Cure (Tier 2)"}, - {"HighDssCurPotion","Cure (Tier 3)"}, - {"BestLowCurScroll","Divine Magic (Tier 1)"}, - {"LowCurScroll","Divine Magic (Tier 2)"}, - {"NorCurScroll","Divine Magic (Tier 3)"}, - {"HighCurScroll","Divine Magic (Tier 4)"}, - {"BestHighCurScroll","Divine Magic (Tier 5)"}, - {"NorBeastLeather","Beast Leather (Normal Quality)"}, - {"HighBeastLeather","Beast Leather (High Quality)"}, - {"BeastHead","Beast Head"}, - {"NorBeastTooth","Beast Dogtooth (Normal Quality)"}, - {"HighBeastTooth","Beast Dogtooth (High Quality)"}, - {"NorBrokenBone","Bone (Normal Quality)"}, - {"HighBrokenBone","Bone (High Quality)"}, - {"BestBrokenBone","Bone (Highest Quality)"}, - {"NorCleanWater","Spirit's Nectar (Normal Quality)"}, - {"HighCleanWater","Spirit's Nectar (High Quality)"}, - {"BestCleanWater","Spirit's Nectar (Highest Quality)"}, - {"IronBadge","Iron Badge"}, - {"NorCopperOre","Copper Ore (Normal Quality)"}, - {"HighCopperOre","Copper Ore (High Quality)"}, - {"NorGemDust","Gem Dust (Normal Quality)"}, - {"HighGemDust","Gem Dust (High Quality)"}, - {"BestGemDust","Gem Dust (Highest Quality)"}, - {"Violet","Vilolet"}, - {"Ramsear","Ramsear"}, - {"Salvia","Eucalyptus"}, - {"LowGoldOre","Gold Ore (Low Quality)"}, - {"NorGoldOre","Gold Ore (Normal Quality)"}, - {"HighGoldOre","Gold Ore (High Quality)"}, - {"NorKylinLeather","Summoned Beast Leather (Normal Quality)"}, - {"HighKylinLeather","Summoned Beast Leather (High Quality)"}, - {"KylinTooth","Summoned Beast's Tooth"}, - {"MermaidScale","Mermaid's Scale"}, - {"KylinFighterTail","Summoned Beast Fighter's Tail"}, - {"NorMagicCrystal","Magic Crystal (Normal Quality)"}, - {"HighMagicCrystal","Magic Crystal (High Quality)"}, - {"BestMagicCrystal","Magic Crystal (Highest Quality)"}, - {"NorMeat","Meat (Normal Quality)"}, - {"HighMeat","Meat (High Quality)"}, - {"BestMeat","Meat (Highest Quality)"}, - {"NorMushrooms","Mushroom (Normal Quality)"}, - {"HighMushrooms","Mushroom (High Quality)"}, - {"BestMushrooms","Mushroom (Highest Quality)"}, - {"NorPledge","Sign (Normal Quality)"}, - {"HighPledge","Sign (High Quality)"}, - {"BestPledge","Sign (Highest Quality)"}, - {"Rosemary","Rosemary"}, - {"Basil","Basil"}, - {"Marigold","Marigold"}, - {"LowSilverOre","Silver Ore (Low Quality)"}, - {"NorSilverOre","Silver Ore (Normal Quality)"}, - {"HighSilverOre","Silver Ore (High Quality)"}, - {"NorSkin","Leather (Normal Quality)"}, - {"HighSkin","Leather (High Quality)"}, - {"BestSkin","Leather (Highest Quality)"}, - {"NorSoulDust","Soul Dust (Normal Quality)"}, - {"HighSoulDust","Soul Dust (High Quality)"}, - {"BestSoulDust","Soul Dust (Highest Quality)"}, - {"NorSpiritDust","Spirit Dust (Normal Quality)"}, - {"HighSpiritDust","Spirit Dust (High Quality)"}, - {"BestSpiritDust","Spirit Dust (Highest Quality)"}, - {"NorToadStool","Toadstool (Normal Quality)"}, - {"HighToadStool","Toadstool (High Quality)"}, - {"BestToadStool","Toadstool (Highest Quality)"}, - {"Ruby","Ruby"}, - {"Sapphire","Sapphire"}, - {"NorWoodSab","Sap (Normal Quality)"}, - {"HighWoodSab","Sap (High Quality)"}, - {"BestWoodSab","Sap (Highest Quality)"}, - {"LowBeastLeather","Beast Leather (Low Quality)"}, - {"NorBeastLeather","Beast Leather (Normal Quality)"}, - {"HighBeastLeather","Beast Leather (High Quality)"}, - {"LowBeastTooth","Beast Dogtooth (Low Quality)"}, - {"NorBeastTooth","Beast Dogtooth (Normal Quality)"}, - {"HighBeastTooth","Beast Dogtooth (High Quality)"}, - {"LowBrokenBone","Bone (Low Quality)"}, - {"NorBrokenBone","Bone (Normal Quality)"}, - {"HighBrokenBone","Bone (High Quality)"}, - {"LowCleanWater","Spirit's Nectar (Low Quality)"}, - {"NorCleanWater","Spirit's Nectar (Normal Quality)"}, - {"HighCleanWater","Spirit's Nectar (High Quality)"}, - {"CommanderBadge","Master Commander's Badge"}, - {"LowCopperOre","Copper Ore (Low Quality)"}, - {"NorCopperOre","Copper Ore (Normal Quality)"}, - {"HighCopperOre","Copper Ore (High Quality)"}, - {"LowGemDust","Gem Dust (Low Quality)"}, - {"NorGemDust","Gem Dust (Normal Quality)"}, - {"HighGemDust","Gem Dust (High Quality)"}, - {"Geranium","Geranium"}, - {"Violet","Vilolet"}, - {"Ramsear","Ramsear"}, - {"LowGoldOre","Gold Ore (Low Quality)"}, - {"NorGoldOre","Gold Ore (Normal Quality)"}, - {"LowKylinLeather","Summoned Beast Leather (Low Quality)"}, - {"NorKylinLeather","Summoned Beast Leather (Normal Quality)"}, - {"HighKylinLeather","Summoned Beast Leather (High Quality)"}, - {"KylinTail","Summoned Beast's Tail"}, - {"LowMagicCrystal","Magic Crystal (Low Quality)"}, + +enum Image{ + PRODUCTION, + COLLECTIBLE, + COLLECTIBLE2 +}; + +enum Grade{ + GRADE_NONE, + GRADEL, + GRADEM, + GRADEH, + GRADE1, + GRADE2, + GRADE3, + GRADE4, + GRADE5, +}; + +struct ItemData{ + std::string name; + Pixel borderCol; + vi2d tilesheetPos={0,0}; + Image img=COLLECTIBLE; + Grade grade=GRADE_NONE; +}; + +std::mapIDToName={ + {"El1",{"Elrue [1]",{0,0,0},{6,2},PRODUCTION,GRADE1}}, + {"El2",{"Elrue [2]",{0,0,0},{6,2},PRODUCTION,GRADE2}}, + {"El3",{"Elrue [3]",{0,0,0},{6,2},PRODUCTION,GRADE3}}, + {"El4",{"Elrue [4]",{0,0,0},{6,2},PRODUCTION,GRADE4}}, + {"El5",{"Elrue [5]",{0,0,0},{6,2},PRODUCTION,GRADE5}}, + {"Lix1",{"Lix [1]",{0,0,0},{1,3},PRODUCTION,GRADE1}}, + {"Lix2",{"Lix [2]",{0,0,0},{1,3},PRODUCTION,GRADE2}}, + {"Lix3",{"Lix [3]",{0,0,0},{1,3},PRODUCTION,GRADE3}}, + {"Lix4",{"Lix [4]",{0,0,0},{1,3},PRODUCTION,GRADE4}}, + {"Lix5",{"Lix [5]",{0,0,0},{1,3},PRODUCTION,GRADE5}}, + {"Xir1",{"Xir [1]",{0,0,0},{4,3},PRODUCTION,GRADE1}}, + {"Xir2",{"Xir [2]",{0,0,0},{4,3},PRODUCTION,GRADE2}}, + {"Xir3",{"Xir [3]",{0,0,0},{4,3},PRODUCTION,GRADE3}}, + {"Xir4",{"Xir [4]",{0,0,0},{4,3},PRODUCTION,GRADE4}}, + {"Xir5",{"Xir [5]",{0,0,0},{4,3},PRODUCTION,GRADE5}}, + {"BestLowHpPotion",{"HP Potion (Tier 1)",{0,0,0},{0,0},PRODUCTION}}, + {"LowHpPotion",{"HP Potion (Tier 2)",{0,0,0},{0,0},PRODUCTION,GRADEL}}, + {"NorHpPotion",{"HP Potion (Tier 3)",{0,0,0},{1,0},PRODUCTION,GRADEM}}, + {"HighHpPotion",{"HP Potion (Tier 4)",{0,0,0},{1,0},PRODUCTION,GRADEH}}, + {"BestHighHpPotion",{"HP Potion (Tier 5)",{0,0,0},{2,0},PRODUCTION}}, + {"BestLowSpPotion",{"SP Potion (Tier 1)",{0,0,0},{3,0},PRODUCTION}}, + {"LowSpPotion",{"SP Potion (Tier 2)",{0,0,0},{3,0},PRODUCTION,GRADEL}}, + {"NorSpPotion",{"SP Potion (Tier 3)",{0,0,0},{4,0},PRODUCTION,GRADEM}}, + {"HighSpPotion",{"SP Potion (Tier 4)",{0,0,0},{4,0},PRODUCTION,GRADEH}}, + {"BestHighSpPotion",{"SP Potion (Tier 5)",{0,0,0},{5,0},PRODUCTION}}, + {"BestLowConHPPotion",{"HP Regeneration Potion (Tier 1)",{0,0,0},{0,0},PRODUCTION}}, + {"LowConHPPotion",{"HP Regeneration Potion (Tier 2)",{0,0,0},{0,0},PRODUCTION,GRADEL}}, + {"NorConHPPotion",{"HP Regeneration Potion (Tier 3)",{0,0,0},{1,0},PRODUCTION,GRADEM}}, + {"HighConHPPotion",{"HP Regeneration Potion (Tier 4)",{0,0,0},{1,0},PRODUCTION,GRADEH}}, + {"BestHighConHPPotion",{"HP Regeneration Potion (Tier 5)",{0,0,0},{2,0},PRODUCTION}}, + {"BestLowConSPPotion",{"SP Regeneration Potion (Tier 1)",{0,0,0},{3,0},PRODUCTION}}, + {"LowConSPPotion",{"SP Regeneration Potion (Tier 2)",{0,0,0},{3,0},PRODUCTION,GRADEL}}, + {"NorConSPPotion",{"SP Regeneration Potion (Tier 3)",{0,0,0},{4,0},PRODUCTION,GRADEM}}, + {"HighConSPPotion",{"SP Regeneration Potion (Tier 4)",{0,0,0},{4,0},PRODUCTION,GRADEH}}, + {"BestHighConSPPotion",{"SP Regeneration Potion (Tier 5)",{0,0,0},{5,0},PRODUCTION}}, + {"BestLowTHScroll",{"Aim(Tier 1)",{0,0,0},{4,1},PRODUCTION}}, + {"LowTHScroll",{"Aim(Tier 2)",{0,0,0},{4,1},PRODUCTION,GRADEL}}, + {"NorTHScroll",{"Aim(Tier 3)",{0,0,0},{4,1},PRODUCTION,GRADEM}}, + {"HighTHScroll",{"Aim(Tier 4)",{0,0,0},{4,1},PRODUCTION,GRADEH}}, + {"BestHighTHScroll",{"Aim(Tier 5)",{0,0,0},{4,1},PRODUCTION}}, + {"BestLowTBScroll",{"Nature's Agility (Tier 1)",{0,0,0},{5,1},PRODUCTION}}, + {"LowTBScroll",{"Nature's Agility (Tier 2)",{0,0,0},{5,1},PRODUCTION,GRADEL}}, + {"NorTBScroll",{"Nature's Agility (Tier 3)",{0,0,0},{5,1},PRODUCTION,GRADEM}}, + {"HighTBScroll",{"Nature's Agility (Tier 4)",{0,0,0},{5,1},PRODUCTION,GRADEH}}, + {"BestHighTBScroll",{"Nature's Agility (Tier 5)",{0,0,0},{5,1},PRODUCTION}}, + {"BestLowMRScroll",{"Magical Defense (Tier 1)",{0,0,0},{6,1},PRODUCTION}}, + {"LowMRScroll",{"Magical Defense (Tier 2)",{0,0,0},{6,1},PRODUCTION,GRADEL}}, + {"NorMRScroll",{"Magical Defense (Tier 3)",{0,0,0},{6,1},PRODUCTION,GRADEM}}, + {"HighMRScroll",{"Magical Defense (Tier 4)",{0,0,0},{6,1},PRODUCTION,GRADEH}}, + {"BestHighMRScroll",{"Magical Defense (Tier 5)",{0,0,0},{6,1},PRODUCTION}}, + {"BestLowACScroll",{"Shield Increase (Tier 1)",{0,0,0},{6,1},PRODUCTION}}, + {"LowACScroll",{"Shield Increase (Tier 2)",{0,0,0},{6,1},PRODUCTION,GRADEL}}, + {"NorACScroll",{"Shield Increase (Tier 3)",{0,0,0},{6,1},PRODUCTION,GRADEM}}, + {"HighACScroll",{"Shield Increase (Tier 4)",{0,0,0},{6,1},PRODUCTION,GRADEH}}, + {"BestHighACScroll",{"Shield Increase (Tier 5)",{0,0,0},{6,1},PRODUCTION}}, + {"BestLowMaxHPScroll",{"Vitality (Tier 1)",{0,0,0},{0,2},PRODUCTION}}, + {"LowMaxHPScroll",{"Vitality (Tier 2)",{0,0,0},{0,2},PRODUCTION,GRADEL}}, + {"NorMaxHPScroll",{"Vitality (Tier 3)",{0,0,0},{0,2},PRODUCTION,GRADEM}}, + {"HighMaxHPScroll",{"Vitality (Tier 4)",{0,0,0},{0,2},PRODUCTION,GRADEH}}, + {"BestHighMaxHPScroll",{"Vitality (Tier 5)",{0,0,0},{0,2},PRODUCTION}}, + {"BestLowMaxSPScroll",{"Mentality (Tier 1)",{0,0,0},{1,2},PRODUCTION}}, + {"LowMaxSPScroll",{"Mentality (Tier 2)",{0,0,0},{1,2},PRODUCTION,GRADEL}}, + {"NorMaxSPScroll",{"Mentality (Tier 3)",{0,0,0},{1,2},PRODUCTION,GRADEM}}, + {"HighMaxSPScroll",{"Mentality (Tier 4)",{0,0,0},{1,2},PRODUCTION,GRADEH}}, + {"BestHighMaxSPScroll",{"Mentality (Tier 5)",{0,0,0},{1,2},PRODUCTION}}, + {"NorMSScroll",{"Speed Increase (Tier 3)",{0,0,0},{1,2},PRODUCTION,GRADEM}}, + {"LowMSScroll",{"Speed Increase (Tier 2)",{0,0,0},{1,2},PRODUCTION,GRADEL}}, + {"HighMSScroll",{"Speed Increase (Tier 4)",{0,0,0},{1,2},PRODUCTION,GRADEH}}, + {"BestMSScroll",{"Speed Increase (Tier 5)",{0,0,0},{1,2},PRODUCTION}}, + {"BestLowMSScroll",{"Speed Increase (Tier 1)",{0,0,0},{1,2},PRODUCTION}}, + {"LowPsnResiPotion",{"Antitoxin (Tier 1)",{0,0,0},{6,0},PRODUCTION,GRADEL}}, + {"NorPsnResiPotion",{"Antitoxin (Tier 2)",{0,0,0},{7,0},PRODUCTION,GRADEM}}, + {"HighPsnResiPotion",{"Antitoxin (Tier 3)",{0,0,0},{0,1},PRODUCTION,GRADEH}}, + {"LowDssResiPotion",{"Antibiotic (Tier 1)",{0,0,0},{6,0},PRODUCTION,GRADEL}}, + {"NorDssResiPotion",{"Antibiotic (Tier 2)",{0,0,0},{7,0},PRODUCTION,GRADEM}}, + {"HighDssResiPotion",{"Antibiotic (Tier 3)",{0,0,0},{0,1},PRODUCTION,GRADEH}}, + {"LowCurResiPotion",{"Bless (Tier 1)",{0,0,0},{6,0},PRODUCTION,GRADEL}}, + {"NorCurResiPotion",{"Bless (Tier 2)",{0,0,0},{7,0},PRODUCTION,GRADEM}}, + {"HighCurResiPotion",{"Bless (Tier 3)",{0,0,0},{0,1},PRODUCTION,GRADEH}}, + {"LowPsnCurPotion",{"Antidote (Tier 1)",{0,0,0},{6,0},PRODUCTION,GRADEL}}, + {"NorPsnCurPotion",{"Antidote (Tier 2)",{0,0,0},{7,0},PRODUCTION,GRADEM}}, + {"HighPsnCurPotion",{"Antidote (Tier 3)",{0,0,0},{0,1},PRODUCTION,GRADEH}}, + {"LowDssCurPotion",{"Cure (Tier 1)",{0,0,0},{6,0},PRODUCTION,GRADEL}}, + {"NorDssCurPotion",{"Cure (Tier 2)",{0,0,0},{7,0},PRODUCTION,GRADEM}}, + {"HighDssCurPotion",{"Cure (Tier 3)",{0,0,0},{0,1},PRODUCTION,GRADEH}}, + {"BestLowCurScroll",{"Divine Magic (Tier 1)",{0,0,0},{2,2},PRODUCTION}}, + {"LowCurScroll",{"Divine Magic (Tier 2)",{0,0,0},{2,2},PRODUCTION,GRADEL}}, + {"NorCurScroll",{"Divine Magic (Tier 3)",{0,0,0},{2,2},PRODUCTION,GRADEM}}, + {"HighCurScroll",{"Divine Magic (Tier 4)",{0,0,0},{2,2},PRODUCTION,GRADEH}}, + {"BestHighCurScroll",{"Divine Magic (Tier 5)",{0,0,0},{2,2},PRODUCTION}}, + {"NorBeastLeather",{"Beast Leather (Normal Quality)",{255,255,0},{7,1}}}, + {"HighBeastLeather",{"Beast Leather (High Quality)",{0,255,0},{0,2}}}, + {"BeastHead",{"Beast Head",{0,255,255},{1,2}}}, + {"NorBeastTooth",{"Beast Dogtooth (Normal Quality)",{255,255,0},{5,1}}}, + {"HighBeastTooth",{"Beast Dogtooth (High Quality)",{0,255,0},{6,1}}}, + {"NorBrokenBone",{"Bone (Normal Quality)",{255,255,0},{4,0}}}, + {"HighBrokenBone",{"Bone (High Quality)",{0,255,0},{4,0}}}, + {"BestBrokenBone",{"Bone (Highest Quality)",{0,255,255},{4,0}}}, + {"NorCleanWater",{"Spirit's Nectar (Normal Quality)",{255,255,0},{7,5}}}, + {"HighCleanWater",{"Spirit's Nectar (High Quality)",{0,255,0},{0,6}}}, + {"BestCleanWater",{"Spirit's Nectar (Highest Quality)",{0,255,255},{0,6}}}, + {"IronBadge",{"Iron Badge",{255,255,0},{2,4}}}, + {"NorCopperOre",{"Copper Ore (Normal Quality)",{255,255,0},{4,4}}}, + {"HighCopperOre",{"Copper Ore (High Quality)",{0,255,0},{5,4}}}, + {"NorGemDust",{"Gem Dust (Normal Quality)",{255,255,0},{6,0}}}, + {"HighGemDust",{"Gem Dust (High Quality)",{0,255,0},{6,0}}}, + {"BestGemDust",{"Gem Dust (Highest Quality)",{0,255,255},{6,0}}}, + {"Violet",{"Vilolet",{0,0,0},{1,1},COLLECTIBLE2}}, + {"Ramsear",{"Ramsear",{0,0,0},{1,1},COLLECTIBLE2}}, + {"Salvia",{"Eucalyptus",{255,255,255},{5,7}}}, + {"LowGoldOre",{"Gold Ore (Low Quality)",{255,255,255},{1,6}}}, + {"NorGoldOre",{"Gold Ore (Normal Quality)",{255,255,0},{2,6}}}, + {"HighGoldOre",{"Gold Ore (High Quality)",{0,255,0},{3,6}}}, + {"NorKylinLeather",{"Summoned Beast Leather (Normal Quality)",{255,255,0},{3,2}}}, + {"HighKylinLeather",{"Summoned Beast Leather (High Quality)",{0,255,0},{4,2}}}, + {"KylinTooth",{"Summoned Beast's Tooth",{0,255,0},{7,2}}}, + {"MermaidScale",{"Mermaid's Scale",{0,0,0},{2,3}}}, + {"KylinFighterTail",{"Summoned Beast Fighter's Tail",{255,255,0},{6,2}}}, + {"NorMagicCrystal",{"Magic Crystal (Normal Quality)",{255,255,0},{4,5}}}, + {"HighMagicCrystal",{"Magic Crystal (High Quality)",{0,255,0},{5,5}}}, + {"BestMagicCrystal",{"Magic Crystal (Highest Quality)",{0,255,255},{5,5}}}, + {"NorMeat",{"Meat (Normal Quality)",{255,255,0},{1,0}}}, + {"HighMeat",{"Meat (High Quality)",{0,255,0},{1,0}}}, + {"BestMeat",{"Meat (Highest Quality)",{0,255,255},{1,0}}}, + {"NorMushrooms",{"Mushroom (Normal Quality)",{255,255,0},{4,3}}}, + {"HighMushrooms",{"Mushroom (High Quality)",{0,255,0},{4,3}}}, + {"BestMushrooms",{"Mushroom (Highest Quality)",{0,255,255},{4,3}}}, + {"NorPledge",{"Sign (Normal Quality)",{255,255,0},{3,0}}}, + {"HighPledge",{"Sign (High Quality)",{0,255,0},{3,0}}}, + {"BestPledge",{"Sign (Highest Quality)",{0,255,255},{3,0}}}, + {"Rosemary",{"Rosemary",{0,255,0},{4,7}}}, + {"Basil",{"Basil",{0,255,255},{5,7}}}, + {"Marigold",{"Marigold",{0,0,255},{6,7}}}, + {"LowSilverOre",{"Silver Ore (Low Quality)",{255,255,255},{6,4}}}, + {"NorSilverOre",{"Silver Ore (Normal Quality)",{255,255,0},{7,4}}}, + {"HighSilverOre",{"Silver Ore (High Quality)",{0,255,0},{0,5}}}, + {"NorSkin",{"Leather (Normal Quality)",{255,255,0},{5,0}}}, + {"HighSkin",{"Leather (High Quality)",{0,255,0},{5,0}}}, + {"BestSkin",{"Leather (Highest Quality)",{0,255,255},{5,0}}}, + {"NorSoulDust",{"Soul Dust (Normal Quality)",{255,255,0},{2,1}}}, + {"HighSoulDust",{"Soul Dust (High Quality)",{0,255,0},{2,1}}}, + {"BestSoulDust",{"Soul Dust (Highest Quality)",{0,255,255},{2,1}}}, + {"NorSpiritDust",{"Spirit Dust (Normal Quality)",{255,255,0},{0,0}}}, + {"HighSpiritDust",{"Spirit Dust (High Quality)",{0,255,0},{0,0}}}, + {"BestSpiritDust",{"Spirit Dust (Highest Quality)",{0,255,255},{0,0}}}, + {"NorToadStool",{"Toadstool (Normal Quality)",{255,255,0},{3,3}}}, + {"HighToadStool",{"Toadstool (High Quality)",{0,255,0},{3,3}}}, + {"BestToadStool",{"Toadstool (Highest Quality)",{0,255,255},{3,3}}}, + {"Ruby",{"Ruby",{255,255,0},{2,5}}}, + {"Sapphire",{"Sapphire",{0,255,0},{4,6}}}, + {"NorWoodSab",{"Sap (Normal Quality)",{255,255,0},{6,6}}}, + {"HighWoodSab",{"Sap (High Quality)",{0,255,0},{7,6}}}, + {"BestWoodSab",{"Sap (Highest Quality)",{0,255,255},{0,7}}}, + {"LowBeastLeather",{"Beast Leather (Low Quality)",{255,255,255},{7,1}}}, + {"LowBeastTooth",{"Beast Dogtooth (Low Quality)",{255,255,255},{4,1}}}, + {"LowBrokenBone",{"Bone (Low Quality)",{255,255,255},{4,0}}}, + {"LowCleanWater",{"Spirit's Nectar (Low Quality)",{255,255,255},{6,5}}}, + {"CommanderBadge",{"Master Commander's Badge",{255,255,255},{1,4}}}, + {"LowCopperOre",{"Copper Ore (Low Quality)",{255,255,255},{3,4}}}, + {"LowGemDust",{"Gem Dust (Low Quality)",{255,255,255},{6,0}}}, + {"Geranium",{"Geranium",{0,0,0},{1,1},COLLECTIBLE2}}, + {"LowKylinLeather",{"Summoned Beast Leather (Low Quality)",{255,255,255},{2,2}}}, + {"KylinTail",{"Summoned Beast's Tail",{255,255,255},{5,2}}}, + {"LowMagicCrystal",{"Magic Crystal (Low Quality)",{255,255,255},{3,5}}}, + {"LowMeat",{"Meat (Low Quality)",{255,255,255},{1,0}}}, + {"LowMushrooms",{"Mushroom (Low Quality)",{255,255,255},{4,3}}}, + {"LowPledge",{"Sign (Low Quality)",{255,255,255},{3,0}}}, + {"Sage",{"Sage",{255,255,0},{3,7}}}, + {"LowSkin",{"Leather (Low Quality)",{255,255,255},{5,0}}}, + {"LowSoulDust",{"Soul Dust (Low Quality)",{255,255,255},{2,1}}}, + {"LowSpiritDust",{"Spirit Dust (Low Quality)",{255,255,255},{0,0}}}, + {"LowToadStool",{"Toadstool (Low Quality)",{255,255,255},{3,3}}}, + {"Topaz",{"Topaz",{255,255,255},{1,5}}}, + {"LowWoodSab",{"Sap (Low Quality)",{255,255,255},{5,6}}}, + {"LowSlimeJelly",{"Slime Jelly (Low Quality)",{255,255,255},{0,3}}}, + {"HighSlimeJelly",{"Slime Jelly (High Quality)",{255,255,0},{1,3}}}, + {"Converter1",{"Alchemy Stone[1]",{255,255,255},{4,2},PRODUCTION}}, + {"Converter3",{"Alchemy Stone[3]",{0,255,0},{4,2},PRODUCTION}}, + {"Converter5",{"Alchemy Stone[5]",{0,255,255},{4,2},PRODUCTION}}, + {"Converter2",{"Alchemy Stone[2]",{255,255,0},{4,2},PRODUCTION}}, + {"Converter4",{"Alchemy Stone[4]",{0,255,255},{4,2},PRODUCTION}}, }; class Recipe{ @@ -250,7 +276,7 @@ class FiestaCraftingCalculator : public olc::PixelGameEngine CompProd=new ImageCheckBox(manager,FiestaCraftingCalculator::ProdIcon,false,displayPos+vi2d{145,10},{40,40},{96,160},{32,32}); DecompProd=new ImageCheckBox(manager,FiestaCraftingCalculator::ProdIcon,false,displayPos+vi2d{190,10},{40,40},{64,160},{32,32}); CloseButton=new CustomButton(manager,FiestaCraftingCalculator::CloseIcon,FiestaCraftingCalculator::CloseBackIcon,displayPos+vf2d{PANEL_WIDTH-30.f,0},{26,26},{0,0},{26,26}); - RecipeList=new ListBox(manager,recipeItems,displayPos+vi2d{10,90},{240,140}); + RecipeList=new ListBox(manager,recipeItems,displayPos+vi2d{10,90},{300,140},16); RecipeList->bVisible=false; } bool Update(FiestaCraftingCalculator*pge,int panelNumber){ @@ -262,8 +288,8 @@ class FiestaCraftingCalculator : public olc::PixelGameEngine DecompProd->vPos=displayPos+vi2d{190,10}; CloseButton->vPos=displayPos+vf2d{PANEL_WIDTH-30.f,0}; RecipeList->vPos=displayPos+vi2d{10,90}; - RecipeList->m_pSlider->vPosMin=displayPos+vi2d{10,90}+vf2d{240 - manager.fGrabRad - 1,manager.fGrabRad + 1 }; - RecipeList->m_pSlider->vPosMax=displayPos+vi2d{10,90}+vf2d{240 - manager.fGrabRad - 1,140-manager.fGrabRad - 1 }; + RecipeList->m_pSlider->vPosMin=displayPos+vi2d{10,90}+vf2d{300 - manager.fGrabRad - 1,manager.fGrabRad + 1 }; + RecipeList->m_pSlider->vPosMax=displayPos+vi2d{10,90}+vf2d{300 - manager.fGrabRad - 1,140-manager.fGrabRad - 1 }; manager.Update(pge); DisplayProdText=SelectedProdText; if(CloseButton->bPressed){ diff --git a/FiestaCraftingCalculator/assets/Produce.txt b/FiestaCraftingCalculator/assets/Produce.txt index ec2f255..a728712 100644 --- a/FiestaCraftingCalculator/assets/Produce.txt +++ b/FiestaCraftingCalculator/assets/Produce.txt @@ -177,7 +177,7 @@ 24036 Recipe_R_NorGoldOre Gold Ore NorGoldOre 1 HighGoldOre 1 Converter5 1 - 0 - 0 - 0 - 0 - 0 - 0 5 60 5 100000 24038 Recipe_R_LowKylinLeather Summoned Beast Leather (Low Quality) LowKylinLeather 14 NorKylinLeather 1 Converter2 1 - 0 - 0 - 0 - 0 - 0 - 0 5 2 5 1000 24039 Recipe_R_NorKylinLeather Summoned Beast Leather NorKylinLeather 3 HighKylinLeather 1 Converter3 1 - 0 - 0 - 0 - 0 - 0 - 0 5 12 5 24000 -24040 Recipe_R_HighKylinLeather Material Decomposition :Summoned Beast Leather (High Quality) HighKylinLeather 2 KylinTooth 1 Converter5 1 - 0 - 0 - 0 - 0 - 0 - 0 5 40 5 100000 +24040 Recipe_R_HighKylinLeather Summoned Beast Leather (High Quality) HighKylinLeather 2 KylinTooth 1 Converter5 1 - 0 - 0 - 0 - 0 - 0 - 0 5 40 5 100000 24041 Recipe_R_KylinTail Summoned Beast's Tail KylinTail 3 KylinFighterTail 1 Converter3 1 - 0 - 0 - 0 - 0 - 0 - 0 5 10 5 18000 24042 Recipe_R_LowMagicCrystal Magic Crystal (Low Quality) LowMagicCrystal 19 NorMagicCrystal 1 Converter1 1 - 0 - 0 - 0 - 0 - 0 - 0 5 2 5 400 24043 Recipe_R_NorMagicCrystal Magic Crystal NorMagicCrystal 4 HighMagicCrystal 1 Converter3 1 - 0 - 0 - 0 - 0 - 0 - 0 5 12 5 30000 diff --git a/FiestaCraftingCalculator/assets/collectibles.png b/FiestaCraftingCalculator/assets/collectibles.png new file mode 100644 index 0000000..11a7fdb Binary files /dev/null and b/FiestaCraftingCalculator/assets/collectibles.png differ diff --git a/FiestaCraftingCalculator/assets/collectibles2.png b/FiestaCraftingCalculator/assets/collectibles2.png new file mode 100644 index 0000000..5c0e2cc Binary files /dev/null and b/FiestaCraftingCalculator/assets/collectibles2.png differ diff --git a/FiestaCraftingCalculator/assets/grade.png b/FiestaCraftingCalculator/assets/grade.png new file mode 100644 index 0000000..38225b1 Binary files /dev/null and b/FiestaCraftingCalculator/assets/grade.png differ diff --git a/FiestaCraftingCalculator/olcPGEX_QuickGUI.h b/FiestaCraftingCalculator/olcPGEX_QuickGUI.h index 8cd2636..3f536c9 100644 --- a/FiestaCraftingCalculator/olcPGEX_QuickGUI.h +++ b/FiestaCraftingCalculator/olcPGEX_QuickGUI.h @@ -363,7 +363,8 @@ namespace olc::QuickGUI ListBox(olc::QuickGUI::Manager& manager, // Associate with a Manager std::vector& vList, const olc::vf2d& pos, // Location of list top-left - const olc::vf2d& size); // Size of list + const olc::vf2d& size, // Location of list top-left + const float fontSize=10); // Size of list // Position of list olc::vf2d vPos; @@ -379,6 +380,7 @@ namespace olc::QuickGUI Manager m_group; size_t m_nVisibleItems = 0; std::vector& m_vList; + float fontSize=10; public: // Item currently selected @@ -1078,8 +1080,8 @@ namespace olc::QuickGUI #pragma endregion #pragma region ListBox - ListBox::ListBox(olc::QuickGUI::Manager& manager, std::vector& vList, const olc::vf2d& pos, const olc::vf2d& size) - : BaseControl(manager), m_vList(vList) + ListBox::ListBox(olc::QuickGUI::Manager& manager, std::vector& vList, const olc::vf2d& pos, const olc::vf2d& size, const float fontSize) + : BaseControl(manager), m_vList(vList), fontSize(fontSize) { m_group.CopyThemeFrom(m_manager); vPos = pos; @@ -1099,16 +1101,11 @@ namespace olc::QuickGUI bHovered=pge->GetMouseX() >= vPos.x && pge->GetMouseX() < vPos.x + vSize.x && pge->GetMouseY() >= vPos.y && pge->GetMouseY() < vPos.y + vSize.y; - if(bHovered){ - std::cout<<"Hovering"<GetMouse(olc::Mouse::LEFT).bPressed) + if (pge->GetMouse(olc::Mouse::LEFT).bHeld) { if (vMouse.x >= 0 && vMouse.x < vSize.x - (m_group.fGrabRad * 2) && vMouse.y >= 0 && vMouse.y < vSize.y) { - - nSelectedItem = size_t(m_pSlider->fValue + vMouse.y / 10); + nSelectedItem = size_t(m_pSlider->fValue + vMouse.y / fontSize); } } @@ -1117,7 +1114,7 @@ namespace olc::QuickGUI bSelectionChanged = nSelectedItem != nPreviouslySelectedItem; - m_pSlider->fMax = float(m_vList.size()-vSize.y/10+1); + m_pSlider->fMax = float(m_vList.size()-vSize.y/fontSize+1); if(bHovered&&pge->GetMouseWheel()!=0){ if(pge->GetMouseWheel()>0){ @@ -1127,6 +1124,8 @@ namespace olc::QuickGUI } } + m_pSlider->fValue=int(m_pSlider->fValue); + m_group.Update(pge); } @@ -1145,15 +1144,15 @@ namespace olc::QuickGUI size_t idx0 = size_t(m_pSlider->fValue); - size_t idx1 = std::min(idx0 + size_t((vSize.y - 4) / 10), m_vList.size()); + size_t idx1 = std::min(idx0 + size_t((vSize.y - 4) / fontSize), m_vList.size()); olc::vf2d vTextPos = vPos + olc::vf2d(2,2); for (size_t idx = idx0; idx < idx1; idx++) { if (idx == nSelectedItem) - pge->FillRect(vTextPos - olc::vi2d(1,-1), {int32_t(vSize.x - m_group.fGrabRad * 2), 10}, m_group.colHover); - pge->DrawStringProp(vTextPos + olc::vi2d(0,2), m_vList[idx]); - vTextPos.y += 10; + pge->FillRect(vTextPos - olc::vi2d(1,-1), {int32_t(vSize.x - m_group.fGrabRad * 2), int(fontSize)}, m_group.colHover); + pge->DrawStringProp(vTextPos + olc::vi2d(0,2), m_vList[idx],olc::WHITE,fontSize/10); + vTextPos.y += fontSize; } m_group.Draw(pge); @@ -1168,15 +1167,21 @@ namespace olc::QuickGUI pge->FillRectDecal(vPos + olc::vf2d(1, 1), vSize - olc::vf2d(2, 2), m_manager.colNormal); size_t idx0 = size_t(m_pSlider->fValue); - size_t idx1 = std::min(idx0 + size_t((vSize.y - 4) / 10), m_vList.size()); + size_t idx1 = std::min(idx0 + size_t((vSize.y - 4) / fontSize), m_vList.size()); olc::vf2d vTextPos = vPos + olc::vf2d(2, 2); for (size_t idx = idx0; idx < idx1; idx++) { if (idx == nSelectedItem) - pge->FillRectDecal(vTextPos - olc::vi2d(1, -1), { vSize.x - m_group.fGrabRad * 2.0f, 10.0f }, m_group.colHover); - pge->DrawStringPropDecal(vTextPos + olc::vi2d(0,2), m_vList[idx]); - vTextPos.y += 10; + pge->FillRectDecal(vTextPos - olc::vi2d(1, -1), { vSize.x - m_group.fGrabRad * 2.0f, fontSize }, m_group.colHover); + float width = pge->GetTextSizeProp(m_vList[idx]).x*fontSize/10; + if (width>vSize.x-m_manager.fGrabRad*2){ + float scaleX = (vSize.x-m_manager.fGrabRad*2)/width; + pge->DrawStringPropDecal(vTextPos + olc::vi2d(0,2), m_vList[idx], olc::WHITE, olc::vf2d{scaleX,1}*fontSize/10); + } else { + pge->DrawStringPropDecal(vTextPos + olc::vi2d(0,2), m_vList[idx], olc::WHITE, olc::vf2d{1,1}*fontSize/10); + } + vTextPos.y += fontSize; } if (bHasBorder)