Skip to content

Commit

Permalink
0.4.7
Browse files Browse the repository at this point in the history
  • Loading branch information
sdenec committed Jan 12, 2021
1 parent ea497ca commit 6b9a251
Show file tree
Hide file tree
Showing 4 changed files with 171 additions and 1 deletion.
1 change: 1 addition & 0 deletions changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ Thank you very much!
- minor css fix for NPC CR text color
- NPC sheets now have a toggle button for the personality infos (now hidden by default) in the biography tab
- fix to prevent items sometimes becoming invisible when toggling the item details
- you now can use DAE to set a "custom" formula for data.details.maxSpellPreparation to calculate your available spell preparations thanks @tposney!

*Version 0.4.6*
- fixed character art popup when pressing enter/return while editing an input field
Expand Down
110 changes: 110 additions & 0 deletions src/scripts/app/settings.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,113 @@
export class Tidy5eSettings extends FormApplication {
static init() {
game.settings.registerMenu('tidy5e-sheet', 'menu', {
name: '',
label: 'Sheet Settings',
icon: 'fas fa-scroll',
type: Tidy5eSettings,
restricted: false
});

// open a dialogue to reload the window when saving
/*
game.settings.register('tidy5e-sheet', 'world-settings', {
name: 'Settings object for world level markdown editor settings',
type: Object,
default: {
chat: true,
richText: true
},
config: false,
onChange: () => {
new Dialog({
content: `<p>Some settings have changed, that require a refresh of the page to be applied.</p>`,
buttons: {
yes: {
icon: '<i class="fas fa-check"></i>',
label: 'Refresh page.',
callback: () => location.reload()
},
no: {
icon: '<i class="fas fa-times"></i>',
label: 'I\'ll refresh later.'
}
}
}).render(true);
}
})
*/

game.settings.register('tidy5e-sheet', 'vim-mode', {
name: 'VIM Keybindings',
hint: 'Enable VIM keybindings for the markdown editor. [User Setting]',
scope: 'client',
default: false,
type: Boolean,
restricted: false,
config: true
});
}

// settings template
static get defaultOptions() {
return {
...super.defaultOptions,
template: "modules/tidy5e-sheet/templates/settings/settings.html",
height: "auto",
title: "Tidy5e Sheet - Settings",
width: 600,
classes: ["tidy5e-sheet", "settings"],
tabs: [
{
navSelector: '.tabs',
contentSelector: 'form',
initial: 'Player Settings'
}
],
submitOnClose: true
}
}

static get isRichTextActive() {
const settings = game.settings.get('tidy5e-sheet', 'world-settings');
return settings.richText;
}

static get isChatActive() {
const settings = game.settings.get('tidy5e-sheet', 'world-settings');
return settings.chat;
}

constructor(object = {}, options) {
super(object, options);
}

_getHeaderButtons() {
let btns = super._getHeaderButtons();
btns[0].label = "Save & Close";
return btns;
}

getSettingsData() {
return game.settings.get('tidy5e-sheet', 'world-settings');
}

getData() {
let data = super.getData();
data.settings = this.getSettingsData();
return data;
}

activateListeners(html) {
super.activateListeners(html);
}

_updateObject(ev, formData) {
const data = expandObject(formData);
game.settings.set('tidy5e-sheet', 'world-settings', data);
}
}

export const tidy5eSettings = function () {

// Classic Item Controls for PC Sheets
Expand Down
29 changes: 28 additions & 1 deletion src/scripts/tidy5e-sheet.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { DND5E } from "../../../systems/dnd5e/module/config.js";
import ActorSheet5e from "../../../systems/dnd5e/module/actor/sheets/base.js";
import ActorSheet5eCharacter from "../../../systems/dnd5e/module/actor/sheets/character.js";
import { tidy5eSettings } from "./app/settings.js";
// import { Tidy5eSettings } from './app/settings.js';

import { preloadTidy5eHandlebarsTemplates } from "./app/tidy5e-templates.js";
import { tidy5eListeners } from "./app/listeners.js";
Expand Down Expand Up @@ -370,6 +371,30 @@ async function abbreviateCurrency(app,html,data) {
});
}

// transform DAE formulas for maxPreparesSpells
function tidyCustomEffect(actor, change) {
if (change.key !== "data.details.maxPreparedSpells") return;
if (change.value?.length > 0) {
let oldValue = getProperty(actor.data, change.key) || 0;
let changeText = change.value.trim();
let op = "none";
if (["+","-","/","*","="].includes(changeText[0])) {
op = changeText[0];
changeText = changeText.slice(1);
}
const value = new Roll(changeText, actor.getRollData()).roll().total;
oldValue = Number.isNumeric(oldValue) ? parseInt(oldValue) : 0;
switch (op) {
case "+": return setProperty(actor.data, change.key, oldValue + value);
case "-": return setProperty(actor.data, change.key, oldValue - value);
case "*": return setProperty(actor.data, change.key, oldValue * value);
case "/": return setProperty(actor.data, change.key, oldValue / value);
case "=": return setProperty(actor.data, change.key, value);
default: return setProperty(actor.data, change.key, value);
}
}
}

// Manage Sheet Options
async function setSheetClasses(app, html, data) {
let actor = game.actors.entities.find(a => a.data._id === data.actor._id);
Expand Down Expand Up @@ -436,6 +461,8 @@ async function setSheetClasses(app, html, data) {
// Preload tidy5e Handlebars Templates
Hooks.once("init", () => {
preloadTidy5eHandlebarsTemplates();
Hooks.on("applyActiveEffect", tidyCustomEffect);
// Tidy5eSettings.init();
});

// Register Tidy5e Sheet and make default character sheet
Expand All @@ -455,7 +482,7 @@ Hooks.on("renderTidy5eSheet", (app, html, data) => {
countAttunedItems(app, html, data);
abbreviateCurrency(app,html,data);
spellAttackMod(app,html,data);
console.log(data);
// console.log(data);
// console.log("Tidy5e Sheet rendered!");
});

Expand Down
32 changes: 32 additions & 0 deletions src/templates/settings/settings.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
<form class="{{classes}}" autocomplete="off">
<nav class="sheet-tabs tabs">
<a class='item' data-tab='general'>General</a>
<a class='item' data-tab='pc-sheet'>Players</a>
<a class='item' data-tab='npc-sheet'>NPCs/Vehicles</a>
<a class='item' data-tab='gm-options'>GM Options</a>
<a class='item' data-tab='info'>Info</a>
</nav>

<section class='tab' data-tab='general'>
<h2>General</h2>
<!--
<div class='form-checkbox-group'>
<input type='checkbox' data-dtype='boolean' name='chat' id='meme-chat' {{checked settings.chat}}/><label for='meme-chat'>Activate markdown support for chat.</label>
</div>
<div class='form-checkbox-group'>
<input type='checkbox' data-dtype='boolean' name='richText' id='meme-richText' {{checked settings.richText}}/><label for='meme-richText'>Activate markdown support for all rich text editors.</label>
</div> -->
</section>
<section class='tab' data-tab='pc-sheet'>
<h2>Player Character Sheets</h2>
</section>
<section class='tab' data-tab='npc-sheet'>
<h2>NPC/Vehicle Sheets</h2>
</section>
<section class='tab' data-tab='gm-options'>
<h2>GM Sheet Options</h2>
</section>
<section class='tab' data-tab='info'>
<h2>Module Info</h2>
</section>
</form>

0 comments on commit 6b9a251

Please sign in to comment.