From 21ef3d59ff6fd753615f356ca43922a8d5146f1d Mon Sep 17 00:00:00 2001 From: ferricles Date: Wed, 6 Jan 2021 12:54:15 -0800 Subject: [PATCH] Added barebones build class --- README.md | 5 ++- build.js | 127 +++++++++++++++++++++++++++++++++++++++++------------ index.html | 11 +++-- test.js | 39 ++++++++++++++++ 4 files changed, 151 insertions(+), 31 deletions(-) diff --git a/README.md b/README.md index 10ddd6d..d7e1195 100644 --- a/README.md +++ b/README.md @@ -1 +1,4 @@ -Hello! +#Hello! +##We don't have a name for this project yet +###Nor have we publicly released it. +Authors: **hppeng** and **ferricles** diff --git a/build.js b/build.js index 1530aa0..3f0b4c7 100644 --- a/build.js +++ b/build.js @@ -1,29 +1,102 @@ -//Turns the input amount of skill points into a 3-decimal precision percentage. -function skillPointsToPercentage(skp){ - if (skp<=0){ - return 0.0; - }else if(skp>=150){ - return 0.808; - }else{ - return(-0.0000000066695* Math.pow(Math.E, -0.00924033 * skp + 18.9) + 1.0771); - //return(-0.0000000066695* Math.pow(Math.E, -0.00924033 * skp + 18.9) + 1.0771).toFixed(3); - } -} -for (i = 0; i < 151; i++) { - console.log(i, ", ",skillPointsToPercentage(i)); - } - - +/*Class that represents a wynn player's build. +*/ class Build{ - constructor(helmet,chestplate,leggings,boots,ring1,ring2,bracelet,necklace,level){ - this.helmet = helmet; - this.chestplate = chestplate; - this.leggings = leggings; - this.boots = boots; - this.ring1 = ring1; - this.ring2 = ring2; - this.bracelet = bracelet; - this.necklace = necklace; - this.level = level; + item_fields = [ "name", "displayName", "tier", "set", "slots", "type", "armorType", "color", "lore", "material", "drop", "quest", "restrict", "nDam", "fDam", "wDam", "aDam", "tDam", "eDam", "atkSpd", "hp", "fDef", "wDef", "aDef", "tDef", "eDef", "lvl", "classReq", "strReq", "dexReq", "intReq", "agiReq", "defReq", "hprPct", "mr", "sdPct", "mdPct", "ls", "ms", "xpb", "lb", "ref", "str", "dex", "int", "agi", "def", "thorns", "expoding", "spd", "atkTier", "poison", "hpBonus", "spRegen", "eSteal", "hprRaw", "sdRaw", "mdRaw", "fDamPct", "wDamPct", "aDamPct", "tDamPct", "eDamPct", "fDefPct", "wDefPct", "aDefPct", "tDefPct", "eDefPct", "accessoryType", "fixID", "skin", "category", "spPct1", "spRaw1", "spPct2", "spRaw2", "spPct3", "spRaw3", "spPct4", "spRaw4", "rainbowRaw", "sprint", "sprintReg", "jh", "lq", "gXp", "gSpd" ]; + /*Turns the input amount of skill points into a float precision percentage. + * @param skp - the integer skillpoint count to be converted + */ + static skillPointsToPercentage(skp){ + if (skp<=0){ + return 0.0; + }else if(skp>=150){ + return 0.808; + }else{ + return(-0.0000000066695* Math.pow(Math.E, -0.00924033 * skp + 18.9) + 1.0771); + //return(-0.0000000066695* Math.pow(Math.E, -0.00924033 * skp + 18.9) + 1.0771).toFixed(3); + } } -} \ No newline at end of file + + /*Turns the input amount of levels into skillpoints available. + * + * @param level - the integer level count te be converted + */ + static levelToSkillPoints(level){ + if(level < 1){ + return 0; + }else if(level >= 101){ + return 200; + }else{ + return (level - 1) * 2; + } + } + /*Construct a build. + */ + constructor(level,helmet,chestplate,leggings,boots,ring1,ring2,bracelet,necklace,weapon){ + if(helmet.type.valueOf() != "helmet".valueOf()){ + throw new TypeError("No such helmet named ", helmet.name); + }else{ + this.helmet = helmet; + } + if(chestplate.type.valueOf() != "chestplate"){ + throw new TypeError("No such chestplate named ", chestplate.name); + }else{ + this.chestplate = chestplate; + } + if(leggings.type.valueOf() != "leggings"){ + throw new TypeError("No such leggings named ", leggings.name); + }else{ + this.leggings = leggings; + } + if(boots.type.valueOf() != "boots"){ + throw new TypeError("No such boots named ", boots.name); + }else{ + this.boots = boots; + } + if(ring1.type.valueOf() != "rings"){ + throw new TypeError("No such ring named ", ring1.name); + }else{ + this.ring1 = ring1; + } + if(ring2.type.valueOf() != "rings"){ + throw new TypeError("No such ring named ", ring2.name); + }else{ + this.ring2 = ring2; + } + if(bracelet.type.valueOf() != "bracelet"){ + throw new TypeError("No such bracelet named ", bracelet.name); + }else{ + this.bracelet = bracelet; + } + if(necklace.type.valueOf() != "necklace"){ + throw new TypeError("No such necklace named ", necklace.name); + }else{ + this.necklace = necklace; + } + if(weapon.type.valueOf() == "wand" || weapon.type.valueOf() == "bow" || weapon.type.valueOf() == "dagger" || weapon.type.valueOf() == "spear" || weapon.type.valueOf() == "relik"){ + this.necklace = necklace; + }else{ + throw new TypeError("No such weapon named ", weapon.name); + } + if(level < 1){ //Should these be constants? + this.level = 1; + }else if (level > 106){ + this.level = 106; + }else{ + this.level = level; + } + this.skillpoints = levelToSkillPoints(this.level) + } + + /*Returns build in string format + */ TODO + toString(){ + return this.helmet.name + ", " + this.chestplate.name + ", " + this.leggings.name + ", " + this.boots.name + ", " + this.ring1.name + ", " + this.ring2.name + ", " + this.bracelet.name + ", " + this.necklace.name + ", " + this.weapon.name; + } + + /* Getters */ TODO + getHealth() + /* Setters */ TODO + +} + +export{Build}; \ No newline at end of file diff --git a/index.html b/index.html index 832c02a..7bc586b 100644 --- a/index.html +++ b/index.html @@ -111,10 +111,14 @@
- Calculate +
- Reset +
@@ -140,6 +144,7 @@
- + + diff --git a/test.js b/test.js index f85c75d..6df3177 100644 --- a/test.js +++ b/test.js @@ -1,3 +1,4 @@ +import {Build} from "./build.js" const DB_VERSION = 1; // @See https://github.com/mdn/learning-area/blob/master/javascript/apis/client-side-storage/indexeddb/video-store/index.js @@ -155,3 +156,41 @@ request.onupgradeneeded = function(e) { console.log("DB setup complete..."); } +function calculateBuild(){ + //TODO: implement level changing + let player_build = new Build( + 106, + itemMap.get(document.getElementById("helmet-choice").value), + itemMap.get(document.getElementById("chestplate-choice").value), + itemMap.get(document.getElementById("leggings-choice").value), + itemMap.get(document.getElementById("boots-choice").value), + itemMap.get(document.getElementById("ring1-choice").value), + itemMap.get(document.getElementById("ring2-choice").value), + itemMap.get(document.getElementById("bracelet-choice").value), + itemMap.get(document.getElementById("necklace-choice").value), + itemMap.get(document.getElementById("weapon-choice").value), + ); + console.log(player_build.toString()) +} + +function resetFields(){ + document.getElementById("helmet-choice").value = ""; + document.getElementById("helmet-powder").value = ""; + document.getElementById("chestplate-choice").value = ""; + document.getElementById("chestplate-powder").value = ""; + document.getElementById("leggings-choice").value = ""; + document.getElementById("leggings-powder").value = ""; + document.getElementById("boots-choice").value = ""; + document.getElementById("boots-powder").value = ""; + document.getElementById("ring1-choice").value = ""; + document.getElementById("ring2-choice").value = ""; + document.getElementById("bracelet-choice").value = ""; + document.getElementById("necklace-choice").value = ""; + document.getElementById("weapon-choice").value = ""; + document.getElementById("weapon-powder").value = ""; + document.getElementById("str-skp").value = ""; + document.getElementById("dex-skp").value = ""; + document.getElementById("int-skp").value = ""; + document.getElementById("def-skp").value = ""; + document.getElementById("agi-skp").value = ""; +} \ No newline at end of file