hide skill when learned

Changes:
 + Hide learned skills from unlearned skill list
This commit is contained in:
Byroks 2023-11-19 20:52:29 +01:00
parent 0d259f40a7
commit 8dd29e8da5
2 changed files with 76 additions and 67 deletions

View File

@ -1,98 +1,105 @@
import Logger from "./utils/Logger" import Logger from "./utils/Logger";
import M5CharacterSheet from "./module/sheets/M5CharacterSheet" import M5CharacterSheet from "./module/sheets/M5CharacterSheet";
import preloadTemplates from "./PreloadTemplates" import preloadTemplates from "./PreloadTemplates";
import { M5Character } from "./module/actors/M5Character" import { M5Character } from "./module/actors/M5Character";
import { M5Skill } from "./module/M5Base" import { M5Skill } from "./module/M5Base";
import { M5ItemSheet } from "./module/sheets/M5ItemSheet" import { M5ItemSheet } from "./module/sheets/M5ItemSheet";
import { M5Item } from "./module/items/M5Item" import { M5Item } from "./module/items/M5Item";
Hooks.once("init", async () => { Hooks.once("init", async () => {
Logger.log("M5 | Initialisierung Midgard 5") Logger.log("M5 | Initialisierung Midgard 5");
Handlebars.registerHelper("times", (n: number, block) => { Handlebars.registerHelper("times", (n: number, block) => {
var accum = "" var accum = "";
for(let i = 0; i < n; ++i) for (let i = 0; i < n; ++i) accum += block.fn(i);
accum += block.fn(i) return accum;
return accum });
})
Handlebars.registerHelper("array", (arr: any[], index: number) => { Handlebars.registerHelper("array", (arr: any[], index: number) => {
return arr[index] return arr[index];
}) });
Handlebars.registerHelper("m5concat", (...values) => { Handlebars.registerHelper("m5concat", (...values) => {
const options = values.pop(); const options = values.pop();
const join = options.hash?.join || ""; const join = options.hash?.join || "";
//return new Handlebars.SafeString(values.join(join)); //return new Handlebars.SafeString(values.join(join));
return values.map(val => val.toString()).join(join) return values.map((val) => val.toString()).join(join);
}) });
Handlebars.registerHelper("add", (...values) => { Handlebars.registerHelper("add", (...values) => {
const options = values.pop(); const options = values.pop();
return values.reduce((prev, cur) => prev + cur) return values.reduce((prev, cur) => prev + cur);
}) });
Handlebars.registerHelper("localizeMidgard", (str: string) => { Handlebars.registerHelper("localizeMidgard", (str: string) => {
const template = Handlebars.compile("{{localize value}}") const template = Handlebars.compile("{{localize value}}");
return template({ return template({
value: "midgard5." + str value: "midgard5." + str,
}) });
}) });
Handlebars.registerHelper("skillBonus", (actorId: string, skill: M5Skill) => { Handlebars.registerHelper("skillBonus", (actorId: string, skill: M5Skill) => {
const actor = (game as Game).actors.get(actorId) as M5Character const actor = (game as Game).actors.get(actorId) as M5Character;
return actor.skillBonus(skill).toString() return actor.skillBonus(skill).toString();
}) });
Handlebars.registerHelper("skillEw", (actorId: string, skill: M5Skill) => { Handlebars.registerHelper("skillEw", (actorId: string, skill: M5Skill) => {
const actor = (game as Game).actors.get(actorId) as M5Character const actor = (game as Game).actors.get(actorId) as M5Character;
return actor.skillEw(skill).toString() return actor.skillEw(skill).toString();
}) });
Handlebars.registerHelper("skill", (skillId: string) => { Handlebars.registerHelper("skill", (skillId: string) => {
return (game as Game).items.get(skillId) return (game as Game).items.get(skillId);
}) });
Handlebars.registerHelper("itemValue", (id: string, path: string) => { Handlebars.registerHelper("itemValue", (id: string, path: string) => {
let obj = (game as Game).items.get(id) let obj = (game as Game).items.get(id);
path.split(".").forEach(p => obj = obj[p]) path.split(".").forEach((p) => (obj = obj[p]));
return `${obj}` return `${obj}`;
}) });
Handlebars.registerHelper("actorItemValue", (actorId: any, itemId: string, path: string) => { Handlebars.registerHelper("actorItemValue", (actorId: any, itemId: string, path: string) => {
//console.log("actorItemValue", actorId, itemId, path) //console.log("actorItemValue", actorId, itemId, path)
const actor = (game as Game).actors.get(actorId) const actor = (game as Game).actors.get(actorId);
let obj = actor.items.get(itemId).system let obj = actor.items.get(itemId).system;
path.split(".").forEach(p => { path.split(".").forEach((p) => {
if (obj) if (obj) obj = obj[p];
obj = obj[p] });
}) return `${obj}`;
return `${obj}` });
})
Handlebars.registerHelper("icon", (relpath: string) => { Handlebars.registerHelper("icon", (relpath: string) => {
return `systems/midgard5/assets/icons/${relpath}` return `systems/midgard5/assets/icons/${relpath}`;
}) });
Handlebars.registerHelper("isSkillInList", (skillName: string, list: any) => {
for (let key in list) {
if (list[key]?.label?.toLowerCase() === skillName?.toLowerCase()) {
return true;
}
}
return false;
});
// Default Sheet für Items definieren und das Standardsheet deaktivieren // Default Sheet für Items definieren und das Standardsheet deaktivieren
Items.unregisterSheet("core", ItemSheet) Items.unregisterSheet("core", ItemSheet);
Items.registerSheet("midgard5", M5ItemSheet, { makeDefault: true }) Items.registerSheet("midgard5", M5ItemSheet, { makeDefault: true });
// Default Sheet für Actors definieren und das Standardsheet deaktivieren // Default Sheet für Actors definieren und das Standardsheet deaktivieren
Actors.unregisterSheet("core", ActorSheet) Actors.unregisterSheet("core", ActorSheet);
Actors.registerSheet("midgard5", M5CharacterSheet, { makeDefault: true }) Actors.registerSheet("midgard5", M5CharacterSheet, { makeDefault: true });
CONFIG.Actor.documentClass = M5Character CONFIG.Actor.documentClass = M5Character;
CONFIG.Item.documentClass = M5Item CONFIG.Item.documentClass = M5Item;
//RegisterSettings(); //RegisterSettings();
await preloadTemplates() await preloadTemplates();
}) });
Hooks.once("setup", () => { Hooks.once("setup", () => {
Logger.log("Template module is being setup.") Logger.log("Template module is being setup.");
}) });
Hooks.once("ready", () => { Hooks.once("ready", () => {
Logger.ok("Template module is now ready.") Logger.ok("Template module is now ready.");
}) });

View File

@ -119,6 +119,7 @@
</thead> </thead>
<tbody> <tbody>
{{#each data.skills.general as |skill key|}} {{#each data.skills.general as |skill key|}}
{{#unless (isSkillInList (localizeMidgard key) ../actor.system.calc.skills.general) }}
<tr data-skill="{{key}}"> <tr data-skill="{{key}}">
<td><button class="learn-button">{{localize "midgard5.learn"}}</button></td> <td><button class="learn-button">{{localize "midgard5.learn"}}</button></td>
<td class="padding">{{localizeMidgard key}}</td> <td class="padding">{{localizeMidgard key}}</td>
@ -129,6 +130,7 @@
<td class="fixed-value"><button class="roll-button roll-general-button"></button></td> <td class="fixed-value"><button class="roll-button roll-general-button"></button></td>
<td class="fixed-value"></td> <td class="fixed-value"></td>
</tr> </tr>
{{/unless}}
{{/each}} {{/each}}
</tbody> </tbody>
</table> </table>