Skip to content

Commit

Permalink
Merge v1.5.0 into master (#109)
Browse files Browse the repository at this point in the history
* Bump version to v1.5.0

* Add support for versatile roll buttons

Update character.py function signatures

Closes #108
  • Loading branch information
averycrespi authored Nov 25, 2020
1 parent 6714589 commit 2d4c714
Show file tree
Hide file tree
Showing 6 changed files with 55 additions and 38 deletions.
2 changes: 1 addition & 1 deletion manifest.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"manifest_version": 2,
"name": "VTT Bridge",
"version": "1.4.0",
"version": "1.5.0",
"description": "Connect Dungeon Master's Vault to Roll20.",
"icons": {
"48": "icons/48.png",
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"name": "vtt-bridge",
"description": "Connect Dungeon Master's Vault to Roll20.",
"author": "Avery Crespi",
"version": "1.4.0",
"version": "1.5.0",
"license": "MIT",
"dependencies": {
"beedle": "^0.8.1",
Expand Down
28 changes: 17 additions & 11 deletions src/dispatch/weapon.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ const ready = (store) => {
continue;
}

const [attackButton, damageButton] = row.querySelectorAll(".roll-button");
const [attackButton, ...damageButtons] = row.querySelectorAll(".roll-button");

const attack = attackButton.innerText;
if (!isValidAttack(attack)) {
Expand All @@ -35,16 +35,22 @@ const ready = (store) => {
});
console.debug(`Added weapon attack listener: ${name}`);

const damage = damageButton.innerText;
if (!isValidDamage(damage)) {
store.dispach("error", { name, property: "damage", value: damage });
continue;
for (const damageButton of damageButtons) {
let damage = damageButton.innerText;
if (damage.charAt(0) === "v") {
// Remove versatility indicator.
damage = damage.slice("v ".length);
}
if (!isValidDamage(damage)) {
store.dispach("error", { name, property: "damage", value: damage });
continue;
}

damageButton.classList.add(classes.rollWeaponDamage);
damageButton.addEventListener("click", function (event) {
store.dispatch(STORE_CLICK, { className: classes.rollWeaponDamage, event, data: { name, damage } });
});
console.debug(`Added weapon damage listener: ${name}`);
}

damageButton.classList.add(classes.rollWeaponDamage);
damageButton.addEventListener("click", function () {
store.dispatch(STORE_CLICK, { className: classes.rollWeaponDamage, event, data: { name, damage } });
});
console.debug(`Added weapon damage listener: ${name}`);
}
};
6 changes: 4 additions & 2 deletions tests/character.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@ def __init__(
*,
url: str,
name: str = "",
num_weapons: int = 0,
num_total_weapons: int = 0,
num_versatile_weapons: int = 0,
num_tools: int = 0,
num_spells: int = 0,
num_features: int = 0,
Expand All @@ -16,7 +17,8 @@ def __init__(
"""Create a new character."""
self.url = url
self.name = name
self.num_weapons = num_weapons
self.num_total_weapons = num_total_weapons
self.num_versatile_weapons = num_versatile_weapons
self.num_tools = num_tools
self.num_spells = num_spells
self.num_features = num_features
Expand Down
3 changes: 2 additions & 1 deletion tests/characters.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@
{
"url": "https://www.dungeonmastersvault.com/pages/dnd/5e/characters/17592227885528?frame=true",
"name": "Bard",
"num_weapons": 2,
"num_total_weapons": 2,
"num_versatile_weapons": 1,
"num_tools": 3,
"num_spells": 8,
"num_features": 5,
Expand Down
52 changes: 30 additions & 22 deletions tests/runner.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,18 +18,18 @@ def run(self, character: Character):
self._check_left_panel()

self.logger.debug("Moving forwards through tabs")
self._check_combat_tab(character.num_weapons)
self._check_proficiencies_tab(character.num_tools)
self._check_features_tab(character.num_features)
self._check_spells_tab(character.num_spells)
self._check_equipment_tab(character.num_weapons)
self._check_combat_tab(character)
self._check_proficiencies_tab(character)
self._check_features_tab(character)
self._check_spells_tab(character)
self._check_equipment_tab(character)

self.logger.debug("Moving backwards through tabs")
self._check_equipment_tab(character.num_weapons)
self._check_spells_tab(character.num_spells)
self._check_features_tab(character.num_features)
self._check_proficiencies_tab(character.num_tools)
self._check_combat_tab(character.num_weapons)
self._check_equipment_tab(character)
self._check_spells_tab(character)
self._check_features_tab(character)
self._check_proficiencies_tab(character)
self._check_combat_tab(character)

self.logger.debug("Checking user interaction")
self._check_roll_strength_button()
Expand All @@ -49,43 +49,51 @@ def _check_left_panel(self):
saving_throw = self.engine.find(".vtt-roll-saving-throw")
assert len(saving_throw) == 6, "Wrong number of roll saving throw buttons"

def _check_combat_tab(self, num_weapons: int):
def _check_combat_tab(self, c: Character):
self.logger.debug("Checking combat tab")
self.engine.select_tab_by_index(0)
initiative = self.engine.find(".vtt-roll-initiative")
assert len(initiative) == 1, "Wrong number of roll initiative buttons"
attack = self.engine.find(".vtt-attack-with-weapon")
assert len(attack) == num_weapons, "Wrong number of attack with weapon buttons"
assert (
len(attack) == c.num_total_weapons
), "Wrong number of attack with weapon buttons"
damage = self.engine.find(".vtt-roll-weapon-damage")
assert len(damage) == num_weapons, "Wrong number of roll weapon damage buttons"
assert (
len(damage) == c.num_total_weapons + c.num_versatile_weapons
), "Wrong number of roll weapon damage buttons"

def _check_proficiencies_tab(self, num_tools: int):
def _check_proficiencies_tab(self, c: Character):
self.logger.debug("Checking proficiencies tab")
self.engine.select_tab_by_index(1)
proficiency = self.engine.find(".vtt-roll-proficiency")
assert (
len(proficiency) == 18 + num_tools
len(proficiency) == 18 + c.num_tools
), "Wrong number of roll proficiency buttons"

def _check_spells_tab(self, num_spells: int):
def _check_spells_tab(self, c: Character):
self.logger.debug("Checking spells tab")
self.engine.select_tab_by_index(2)
attack = self.engine.find(".vtt-attack-with-spell")
assert len(attack) == num_spells, "Wrong number of attack with spell buttons"
assert len(attack) == c.num_spells, "Wrong number of attack with spell buttons"

def _check_features_tab(self, num_features: int):
def _check_features_tab(self, c: Character):
self.logger.debug("Checking features tab")
self.engine.select_tab_by_index(3)
feature = self.engine.find(".vtt-use-feature")
assert len(feature) == num_features, "Wrong number of use feature buttons"
assert len(feature) == c.num_features, "Wrong number of use feature buttons"

def _check_equipment_tab(self, num_weapons: int):
def _check_equipment_tab(self, c: Character):
self.logger.debug("Checking equipment tab")
self.engine.select_tab_by_index(4)
attack = self.engine.find(".vtt-attack-with-weapon")
assert len(attack) == num_weapons, "Wrong number of attack with weapon buttons"
assert (
len(attack) == c.num_total_weapons
), "Wrong number of attack with weapon buttons"
damage = self.engine.find(".vtt-roll-weapon-damage")
assert len(damage) == num_weapons, "Wrong number of roll weapon damage buttons"
assert (
len(damage) == c.num_total_weapons + c.num_versatile_weapons
), "Wrong number of roll weapon damage buttons"

def _check_roll_strength_button(self):
self.logger.debug("Checking roll strength button")
Expand Down

0 comments on commit 2d4c714

Please sign in to comment.