HUD + liste de talents
This commit is contained in:
		
							
								
								
									
										71
									
								
								modules/hawkmoon-hud.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										71
									
								
								modules/hawkmoon-hud.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,71 @@ | ||||
| /* -------------------------------------------- */ | ||||
|  | ||||
| /* -------------------------------------------- */ | ||||
| export class HawkmoonTokenHud { | ||||
|  | ||||
|   static init() { | ||||
|     // Integration du TokenHUD | ||||
|     Hooks.on('renderTokenHUD', (app, html, data) => { HawkmoonTokenHud.addTokenHudExtensions(app, html, data._id) }); | ||||
|   } | ||||
|  | ||||
|   /* -------------------------------------------- */ | ||||
|   static async removeExtensionHud(app, html, tokenId) { | ||||
|     html.find('.control-icon.hawkmoon-adversite').remove() | ||||
|   } | ||||
|  | ||||
|   /* -------------------------------------------- */ | ||||
|   static async addExtensionHud(app, html, tokenId) { | ||||
|  | ||||
|     let token = canvas.tokens.get(tokenId) | ||||
|     let actor = token.actor | ||||
|     app.hasExtension = true | ||||
|  | ||||
|     const hudData = { actor: actor } | ||||
|  | ||||
|     const controlIconActions = html.find('.control-icon[data-action=combat]'); | ||||
|     // initiative | ||||
|     await HawkmoonTokenHud._configureSubMenu(controlIconActions, 'systems/fvtt-hawkmoon-cyd/templates/hud-adversites.html', hudData, | ||||
|       (event) => { | ||||
|         let adversite = event.currentTarget.attributes['data-action-index'].value | ||||
|         let value = Number(event.currentTarget.attributes['data-action-value'].value) | ||||
|         hudData.actor.incDecAdversite( adversite, value) | ||||
|       } ) | ||||
|   } | ||||
|  | ||||
|   /* -------------------------------------------- */ | ||||
|   static async addTokenHudExtensions(app, html, tokenId) { | ||||
|     const controlIconCombat  = html.find('.control-icon[data-action=combat]') | ||||
|     if (controlIconCombat.length>0 ) { | ||||
|       HawkmoonTokenHud.addExtensionHud(app, html, tokenId); | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   /* -------------------------------------------- */ | ||||
|   static async _configureSubMenu(insertionPoint, template, hudData, onMenuItem) { | ||||
|     const hud = $(await renderTemplate(template, hudData)) | ||||
|     const list = hud.find('div.hawkmoon-hud-list') | ||||
|      | ||||
|     HawkmoonTokenHud._toggleHudListActive(hud, list); | ||||
|      | ||||
|     hud.find('img.hawkmoon-hud-togglebutton').click(event => HawkmoonTokenHud._toggleHudListActive(hud, list)); | ||||
|     list.find('.hawkmoon-hud-adversite').click(onMenuItem); | ||||
|  | ||||
|     insertionPoint.after(hud); | ||||
|   } | ||||
|  | ||||
|   /* -------------------------------------------- */ | ||||
|   static _showControlWhen(control, condition) { | ||||
|     if (condition) { | ||||
|       control.show() | ||||
|     } | ||||
|     else { | ||||
|       control.hide() | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   /* -------------------------------------------- */ | ||||
|   static _toggleHudListActive(hud, list) { | ||||
|     hud.toggleClass('active') | ||||
|     HawkmoonTokenHud._showControlWhen(list, hud.hasClass('active')) | ||||
|   } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user