Tout objet d'inventaire a une fréquence (en ville/village, ou autre milieu)
		
			
				
	
	
		
			69 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			69 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| import { RdDItemSheet } from "../item-sheet.js";
 | |
| import { RdDItemSigneDraconique } from "./signedraconique.js";
 | |
| import { TMRUtility } from "../tmr-utility.js";
 | |
| 
 | |
| /**
 | |
|  * Item sheet pour signes draconiques
 | |
|  * @extends {RdDItemSheet}
 | |
|  */
 | |
| export class RdDSigneDraconiqueItemSheet extends RdDItemSheet {
 | |
| 
 | |
|   static get ITEM_TYPE() { return "signedraconique" }
 | |
| 
 | |
|   /* -------------------------------------------- */
 | |
|   /** @override */
 | |
|   setPosition(options = {}) {
 | |
|     const position = super.setPosition(options);
 | |
|     const sheetHeader = this.element.find(".sheet-header");
 | |
|     const sheetBody = this.element.find(".sheet-body");
 | |
|     sheetBody.css("height", position.height - sheetHeader[0].clientHeight)
 | |
|     return position;
 | |
|   }
 | |
| 
 | |
| 
 | |
|   /* -------------------------------------------- */
 | |
|   async getData() {
 | |
|     const formData = await super.getData();
 | |
|     this.tmrs = TMRUtility.buildSelectionTypesTMR(this.item.system.typesTMR);
 | |
|     formData.tmrs = this.tmrs;
 | |
|     return formData;
 | |
|   }
 | |
| 
 | |
|   /* -------------------------------------------- */
 | |
|   /** @override */
 | |
|   activateListeners(html) {
 | |
|     super.activateListeners(html);
 | |
| 
 | |
|     if (!this.options.editable) return;
 | |
| 
 | |
|     html.find(".signe-aleatoire").click(event => this.setSigneAleatoire());
 | |
|     html.find("input.select-tmr").change(event => this.onSelectTmr(event));
 | |
|     html.find(".signe-xp-sort").change(event => this.onValeurXpSort(event.currentTarget.attributes['data-typereussite']?.value, Number(event.currentTarget.value)));
 | |
|   }
 | |
| 
 | |
|   async setSigneAleatoire() {
 | |
|     const newSigne = await RdDItemSigneDraconique.randomSigneDraconique();
 | |
|     newSigne.name = this.item.name;
 | |
|     this.item.update(newSigne);
 | |
|   }
 | |
| 
 | |
|   async onSelectTmr(event) {
 | |
|     const tmrName = $(event.currentTarget)?.data("tmr-name");
 | |
|     const onTmr = this.tmrs.find(it => it.name == tmrName);
 | |
|     if (onTmr){
 | |
|       onTmr.selected = event.currentTarget.checked;
 | |
|     }
 | |
| 
 | |
|     this.item.update({ 'system.typesTMR': TMRUtility.buildListTypesTMRSelection(this.tmrs) });
 | |
|   }
 | |
| 
 | |
|   async onValeurXpSort(event) {
 | |
|     const codeReussite = event.currentTarget.attributes['data-typereussite']?.value ?? 0;
 | |
|     const xp = Number(event.currentTarget.value);
 | |
|     const oldValeur = this.item.system.valeur;
 | |
|     const newValeur = RdDItemSigneDraconique.calculValeursXpSort(codeReussite, xp, oldValeur);
 | |
|     await this.item.update({ 'system.valeur': newValeur });
 | |
|   }
 | |
| 
 | |
| }
 |