Add new stuff/compendium
This commit is contained in:
@@ -26,6 +26,15 @@ export class SoSActorSheet extends ActorSheet {
|
||||
let data = super.getData();
|
||||
|
||||
data.data.edgecard = this.actor.getEdgesCard();
|
||||
data.data.skills = this.actor.data.items.filter( item => item.type == 'skill').sort( (a, b) => {
|
||||
if ( a.name > b.name ) return 1;
|
||||
return -1;
|
||||
});
|
||||
data.data.skill1 = data.data.skills.slice(0, Math.ceil(data.data.skills.length/2) )
|
||||
data.data.skill2 = data.data.skills.slice(Math.ceil(data.data.skills.length/2), data.data.skills.length )
|
||||
|
||||
data.data.subculture = this.actor.data.items.find( item => item.type == 'subculture');
|
||||
data.data.geneline = this.actor.data.items.find( item => item.type == 'geneline');
|
||||
data.data.editStatSkill = this.options.editStatSkill;
|
||||
console.log("stats", data);
|
||||
//data.stats = duplicate(this.actor.stats);
|
||||
@@ -74,6 +83,12 @@ export class SoSActorSheet extends ActorSheet {
|
||||
this.options.editStatSkill = !this.options.editStatSkill;
|
||||
this.render(true);
|
||||
});
|
||||
html.find('.item-link a').click((event) => {
|
||||
const itemId = $(event.currentTarget).data("item-id");
|
||||
const item = this.actor.getOwnedItem(itemId);
|
||||
item.sheet.render(true);
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
|
@@ -1,5 +1,6 @@
|
||||
import { SoSCardDeck } from "./sos-card-deck.js";
|
||||
import { SoSUtility } from "./sos-utility.js";
|
||||
import { SoSFlipDialog } from "./sos-flip-dialog.js";
|
||||
|
||||
|
||||
/* -------------------------------------------- */
|
||||
@@ -57,7 +58,7 @@ export class SoSActor extends Actor {
|
||||
/* -------------------------------------------- */
|
||||
resetDeck( ) {
|
||||
this.cardDeck.shuffleDeck();
|
||||
this.cardDeck.drawEdge();
|
||||
this.cardDeck.drawEdge( this.data.data.scores.edge.value );
|
||||
this.saveDeck();
|
||||
}
|
||||
|
||||
@@ -134,9 +135,19 @@ export class SoSActor extends Actor {
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
rollStat( statKey ) {
|
||||
console.log("STAT", this);
|
||||
let result = this.cardDeck.doFlipStat( duplicate(this.data.data.stat[statKey]) );
|
||||
async rollStat( statKey ) {
|
||||
|
||||
let flipData = {
|
||||
mode: 'stat',
|
||||
stat: duplicate(this.data.data.stats[statKey]),
|
||||
actor: this,
|
||||
modifierList: SoSUtility.fillRange(-10, +10)
|
||||
}
|
||||
let html = await renderTemplate('systems/foundryvtt-shadows-over-sol/templates/dialog-flip.html', flipData);
|
||||
new SoSFlipDialog(flipData, html).render(true);
|
||||
|
||||
//console.log("STAT", this);
|
||||
//let result = this.cardDeck.doFlipStat( duplicate(this.data.data.stat[statKey]) );
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -53,27 +53,53 @@ export class SoSCardDeck {
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
drawEdge() {
|
||||
this.data.cardEdge.push( this.data.deck.pop() );
|
||||
this.data.cardEdge.push( this.data.deck.pop() );
|
||||
|
||||
console.log("DRAW EDGE", this.data.cardEdge);
|
||||
drawEdge( edgeNumber ) {
|
||||
for (let i=0; i<edgeNumber; i++) {
|
||||
this.data.cardEdge.push( this.data.deck.pop() );
|
||||
console.log("DRAW EDGE", this.data.cardEdge);
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
cleanCardList() {
|
||||
this.data.discard = []; // Reinit discard pile
|
||||
this.data.deck = [];
|
||||
this.data.cardEdge = [];
|
||||
for (let i = 0; i < NB_POKER_CARD; i++) {
|
||||
this.data.cardState[i] = false;
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
doFlipStat( statData ) {
|
||||
doFlipFromDeck( ) {
|
||||
let card = this.data.deck.pop();
|
||||
this.data.discard.push( card );
|
||||
console.log("CARD IS : ", card, this.data.deck.length );
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
getDeckHTML( ) {
|
||||
return "<img class='view-deck flip-card' src='systems/foundryvtt-shadows-over-sol/img/cards/card_back.webp' />";
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
getEdgeHTML( ) {
|
||||
let html = "";
|
||||
for (let edge of this.data.cardEdge) {
|
||||
html += `<img class='view-discard flip-card' src='systems/foundryvtt-shadows-over-sol/img/cards/${edge.cardName}.webp' />`
|
||||
}
|
||||
|
||||
return html;
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
getDiscardTopHTML( ) {
|
||||
let html = "";
|
||||
console.log( "DISCARD: ", this.data.discard );
|
||||
if ( this.data.discard.length > 0) {
|
||||
let card = this.data.discard[this.data.discard.length-1];
|
||||
html = `<img class='view-discard flip-card' src='systems/foundryvtt-shadows-over-sol/img/cards/${card.cardName}.webp' />`;
|
||||
}
|
||||
return html;
|
||||
}
|
||||
}
|
63
module/sos-flip-dialog.js
Normal file
63
module/sos-flip-dialog.js
Normal file
@@ -0,0 +1,63 @@
|
||||
|
||||
export class SoSFlipDialog extends Dialog {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
constructor(flipData, html) {
|
||||
let conf = {
|
||||
title: 'Flip Dialog',
|
||||
content: html,
|
||||
buttons: {
|
||||
'flip-close': { label: 'Flip and Close', callback: html => this.onFlipClose() }
|
||||
},
|
||||
default: 'flip'
|
||||
};
|
||||
super(conf, { classes: ["sosdialog"], width: 800, height: 800 });
|
||||
|
||||
this.flipData = flipData;
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
onFlipClose( ) {
|
||||
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async updateFlip( flipData ) {
|
||||
console.log("UPDATE !!!", flipData);
|
||||
$('.view-deck').remove();
|
||||
$("#view-deck").append(await flipData.actor.cardDeck.getDeckHTML());
|
||||
|
||||
$('.view-discard').remove();
|
||||
$("#view-discard").append(await flipData.actor.cardDeck.getDiscardTopHTML());
|
||||
|
||||
$('.view-edge').remove();
|
||||
$("#view-edge").append(await flipData.actor.cardDeck.getEdgeHTML());
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
activateListeners(html) {
|
||||
super.activateListeners(html);
|
||||
|
||||
this.bringToTop();
|
||||
|
||||
var dialog = this;
|
||||
|
||||
function onLoad() {
|
||||
let flipData = dialog.flipData;
|
||||
//RdDItemSort.setCoutReveReel(rollData.selectedSort);
|
||||
//$("#diffLibre").val(Misc.toInt(rollData.diffLibre));
|
||||
//$("#diffConditions").val(Misc.toInt(rollData.diffConditions));
|
||||
dialog.updateFlip(flipData);
|
||||
}
|
||||
|
||||
// Setup everything onload
|
||||
$(function () { onLoad(); });
|
||||
|
||||
html.find('#do-flip-deck').click((event) => {
|
||||
dialog.flipData.actor.cardDeck.doFlipFromDeck();
|
||||
dialog.updateFlip( dialog.flipData);
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
}
|
@@ -8,9 +8,18 @@ export class SoSUtility {
|
||||
'systems/foundryvtt-shadows-over-sol/templates/actor-sheet.html',
|
||||
'systems/foundryvtt-shadows-over-sol/templates/editor-notes-gm.html',
|
||||
'systems/foundryvtt-shadows-over-sol/templates/stat-option-list.html',
|
||||
'systems/foundryvtt-shadows-over-sol/templates/stat-name-list.html',
|
||||
|
||||
'systems/foundryvtt-shadows-over-sol/templates/item-sheet.html',
|
||||
'systems/foundryvtt-shadows-over-sol/templates/stat-name-list.html'
|
||||
'systems/foundryvtt-shadows-over-sol/templates/item-geneline-sheet.html',
|
||||
'systems/foundryvtt-shadows-over-sol/templates/item-subculture-sheet.html',
|
||||
|
||||
'systems/foundryvtt-shadows-over-sol/templates/dialog-flip.html'
|
||||
]
|
||||
return loadTemplates(templatePaths);
|
||||
return loadTemplates(templatePaths);
|
||||
}
|
||||
|
||||
static fillRange (start, end) {
|
||||
return Array(end - start + 1).fill().map((item, index) => start + index);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user