Skip to content

Commit

Permalink
Merge branch 'Gander7-feat/roll-initiative'
Browse files Browse the repository at this point in the history
  • Loading branch information
ChunkLightTuna committed Apr 6, 2024
2 parents 5ef2a75 + f758fa0 commit a3be7f0
Show file tree
Hide file tree
Showing 5 changed files with 53 additions and 18 deletions.
53 changes: 35 additions & 18 deletions src/combat.mjs
Original file line number Diff line number Diff line change
@@ -1,28 +1,45 @@
import {item_roll, Logger} from "./util.mjs";
import {socket} from "./module.mjs";
import {COMBAT_HEALTH_ESTIMATE, COMBAT_HEALTH_ESTIMATE_TYPE, ID_MAP, MODULE_ID} from "./constants.mjs";
import {combat_hooks, socket} from "./module.mjs";
import {COMBAT_ENABLED, COMBAT_HEALTH_ESTIMATE, COMBAT_HEALTH_ESTIMATE_TYPE, ID_MAP, MODULE_ID} from "./constants.mjs";
import {actor_to_discord_ids} from "./sync.mjs";

const onCombatStart = async (combat, updateData) => {
const roundRender = parseCombatRound({...combat, ...updateData})
const turnRender = parseTurn(combat, updateData)
socket.emit('combat', roundRender + turnRender)
}
const onCombatTurn = async (combat, updateData, updateOptions) => {
if (updateOptions.direction < 1) return
const turnRender = parseTurn(combat, updateData)
socket.emit('combat', turnRender)
}
const onCombatRound = async (combat, updateData, updateOptions) => {
if (updateOptions.direction < 1) return
const roundRender = parseCombatRound({...combat, ...updateData}, updateOptions)
const turnRender = parseTurn(combat, updateData)
socket.emit('combat', roundRender + turnRender)
}

export function set_combat_hooks() {
Logger.info("Setting Combat Hooks.")

Hooks.on("combatStart", async (combat, updateData) => {
const roundRender = parseCombatRound({...combat, ...updateData})
const turnRender = parseTurn(combat, updateData)
socket.emit('combat', roundRender + turnRender)
})
Hooks.on("combatTurn", async (combat, updateData, updateOptions) => {
if (updateOptions.direction < 1) return
const turnRender = parseTurn(combat, updateData)
socket.emit('combat', turnRender)
})
Hooks.on("combatRound", async (combat, updateData, updateOptions) => {
if (updateOptions.direction < 1) return
const roundRender = parseCombatRound({...combat, ...updateData}, updateOptions)
const turnRender = parseTurn(combat, updateData)
socket.emit('combat', roundRender + turnRender)
})
Logger.info(combat_hooks)
const turnOffHook = (key) => {
if (combat_hooks[key]) {
Hooks.off(key, combat_hooks[key])
combat_hooks[key] = undefined
}
}

// Turn off hooks
["combatStart", "combatTurn", "combatRound"].forEach(turnOffHook)

// Turn them back on
if (game.settings.get(MODULE_ID, COMBAT_ENABLED)) {
combat_hooks.combatStart = Hooks.on("combatStart", onCombatStart)
combat_hooks.combatTurn = Hooks.on("combatTurn", onCombatTurn)
combat_hooks.combatRound = Hooks.on("combatRound", onCombatRound)
}
}

function getEffectsInMarkdown(actor, token) {
Expand Down
1 change: 1 addition & 0 deletions src/constants.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ export const MODULE_DEBUG_TAG = [
export const AUTH = "auth"
export const ORONDER_CONFIGURATION_FORM = "oronder_options"
export const ID_MAP = "id_map"
export const COMBAT_ENABLED = 'combat_enabled'
export const COMBAT_HEALTH_ESTIMATE = 'combat_health_estimate'
export const COMBAT_HEALTH_ESTIMATE_TYPE = Object.freeze({
Monsters: 0,
Expand Down
5 changes: 5 additions & 0 deletions src/module.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,11 @@ import {handle_incoming_rolls, set_combat_hooks} from "./combat.mjs";
export let socket
export let session_id
export let session_ts
export let combat_hooks = {
combatStart: undefined,
combatRound: undefined,
combatTurn: undefined
}
let session_name
let default_title

Expand Down
5 changes: 5 additions & 0 deletions src/settings-form-application.mjs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import {Logger} from "./util.mjs"
import {
AUTH,
COMBAT_ENABLED,
COMBAT_HEALTH_ESTIMATE,
COMBAT_HEALTH_ESTIMATE_TYPE,
DAYS_OF_WEEK,
Expand All @@ -12,6 +13,7 @@ import {
} from "./constants.mjs"
import {full_sync, sync_actor} from "./sync.mjs"
import {open_socket_with_oronder} from "./module.mjs"
import { set_combat_hooks } from "./combat.mjs"

export class OronderSettingsFormApplication extends FormApplication {
constructor(object = {}, options = {}) {
Expand Down Expand Up @@ -194,6 +196,7 @@ export class OronderSettingsFormApplication extends FormApplication {

this.bind()

await game.settings.set(MODULE_ID, COMBAT_ENABLED, this.object.guild.combat_tracking_enabled)
await game.settings.set(MODULE_ID, COMBAT_HEALTH_ESTIMATE, this.object.combat_health_estimate)

const updated_id_map = await game.settings.set(MODULE_ID, ID_MAP,
Expand Down Expand Up @@ -243,6 +246,8 @@ export class OronderSettingsFormApplication extends FormApplication {
.catch(Logger.error)

await Promise.all(actors_to_sync.map(sync_actor)).catch(Logger.error)

set_combat_hooks()
}

async _full_sync(clear_cache = false) {
Expand Down
7 changes: 7 additions & 0 deletions src/settings.mjs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import {
AUTH,
COMBAT_ENABLED,
COMBAT_HEALTH_ESTIMATE,
COMBAT_HEALTH_ESTIMATE_TYPE,
ID_MAP,
Expand All @@ -22,6 +23,12 @@ export const registerSettings = async () => {
config: false,
default: {}
})
game.settings.register(MODULE_ID, COMBAT_ENABLED, {
scope: 'world',
type: Boolean,
config: false,
default: false
})
game.settings.register(MODULE_ID, COMBAT_HEALTH_ESTIMATE, {
scope: 'world',
type: Number,
Expand Down

0 comments on commit a3be7f0

Please sign in to comment.