microboard-temp 0.4.10 → 0.4.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/browser.js +317 -22
- package/dist/cjs/index.js +317 -22
- package/dist/cjs/node.js +317 -22
- package/dist/esm/browser.js +317 -22
- package/dist/esm/index.js +317 -22
- package/dist/esm/node.js +317 -22
- package/dist/types/Camera/Camera.d.ts +0 -1
- package/dist/types/Items/Examples/CardGame/Card/AddHand.d.ts +0 -0
- package/dist/types/Items/Examples/CardGame/Card/Card.d.ts +42 -0
- package/dist/types/Items/Examples/CardGame/Card/CardOperation.d.ts +14 -0
- package/dist/types/Items/Examples/CardGame/Card/index.d.ts +1 -0
- package/dist/types/Items/Examples/CardGame/Deck/Deck.d.ts +28 -0
- package/dist/types/Items/Examples/CardGame/Deck/DeckOperation.d.ts +15 -0
- package/dist/types/Items/Examples/CardGame/Deck/index.d.ts +1 -0
- package/dist/types/Items/RegisterItem.d.ts +1 -1
- package/dist/types/Items/index.d.ts +2 -0
- package/dist/types/utils.d.ts +1 -0
- package/package.json +1 -1
package/dist/esm/node.js
CHANGED
|
@@ -47966,7 +47966,9 @@ function registerItem({
|
|
|
47966
47966
|
const { itemType } = defaultData2;
|
|
47967
47967
|
itemFactories[itemType] = createItemFactory(item, defaultData2);
|
|
47968
47968
|
itemValidators[itemType] = createItemValidator(defaultData2);
|
|
47969
|
-
|
|
47969
|
+
if (toolData) {
|
|
47970
|
+
registeredTools[toolData.name] = toolData.tool;
|
|
47971
|
+
}
|
|
47970
47972
|
itemCommandFactories[itemType] = createItemCommandFactory(itemType);
|
|
47971
47973
|
}
|
|
47972
47974
|
function createItemFactory(item, defaultData2) {
|
|
@@ -48280,6 +48282,318 @@ registerItem({
|
|
|
48280
48282
|
defaultData: defaultCounterData,
|
|
48281
48283
|
toolData: { name: "AddCounter", tool: AddCounter }
|
|
48282
48284
|
});
|
|
48285
|
+
// src/utils.ts
|
|
48286
|
+
function throttle(func, delay) {
|
|
48287
|
+
let lastCall = 0;
|
|
48288
|
+
let timeoutId = null;
|
|
48289
|
+
return function(...args) {
|
|
48290
|
+
const now = Date.now();
|
|
48291
|
+
if (lastCall + delay <= now) {
|
|
48292
|
+
lastCall = now;
|
|
48293
|
+
func(...args);
|
|
48294
|
+
if (timeoutId) {
|
|
48295
|
+
clearTimeout(timeoutId);
|
|
48296
|
+
timeoutId = null;
|
|
48297
|
+
}
|
|
48298
|
+
} else if (!timeoutId) {
|
|
48299
|
+
timeoutId = setTimeout(() => {
|
|
48300
|
+
lastCall = Date.now();
|
|
48301
|
+
timeoutId = null;
|
|
48302
|
+
func(...args);
|
|
48303
|
+
}, delay - (now - lastCall));
|
|
48304
|
+
}
|
|
48305
|
+
};
|
|
48306
|
+
}
|
|
48307
|
+
|
|
48308
|
+
// src/Items/Examples/CardGame/Card/Card.ts
|
|
48309
|
+
var defaultCardData = {
|
|
48310
|
+
itemType: "Card",
|
|
48311
|
+
isOpen: false,
|
|
48312
|
+
name: "",
|
|
48313
|
+
isInDeck: false
|
|
48314
|
+
};
|
|
48315
|
+
var CARD_DIMENSIONS = { width: 250, height: 400 };
|
|
48316
|
+
|
|
48317
|
+
class Card extends BaseItem {
|
|
48318
|
+
subject = new Subject;
|
|
48319
|
+
name = "";
|
|
48320
|
+
isOpen = false;
|
|
48321
|
+
isInDeck = false;
|
|
48322
|
+
throttledBringToFront;
|
|
48323
|
+
image = null;
|
|
48324
|
+
backside = null;
|
|
48325
|
+
imageToRender = null;
|
|
48326
|
+
shouldUseCustomRender = false;
|
|
48327
|
+
constructor(board, id = "", defaultData2, name) {
|
|
48328
|
+
super(board, id, defaultCardData);
|
|
48329
|
+
this.name = name;
|
|
48330
|
+
this.createImages();
|
|
48331
|
+
this.throttledBringToFront = throttle(() => {
|
|
48332
|
+
this.board.bringToFront(this);
|
|
48333
|
+
}, 1000);
|
|
48334
|
+
this.transformation.subject.subscribe(() => {
|
|
48335
|
+
this.throttledBringToFront();
|
|
48336
|
+
this.updateMbr();
|
|
48337
|
+
this.updateImageToRender();
|
|
48338
|
+
this.subject.publish(this);
|
|
48339
|
+
});
|
|
48340
|
+
this.updateMbr();
|
|
48341
|
+
}
|
|
48342
|
+
createImages() {
|
|
48343
|
+
this.image = conf.documentFactory.createElement("img");
|
|
48344
|
+
this.backside = conf.documentFactory.createElement("img");
|
|
48345
|
+
this.image.src = `/Assets/Cards/${this.name}.png`;
|
|
48346
|
+
this.backside.src = `/Assets/Cards/backside.png`;
|
|
48347
|
+
this.image.onload = () => {
|
|
48348
|
+
this.subject.publish(this);
|
|
48349
|
+
};
|
|
48350
|
+
this.backside.onload = () => {
|
|
48351
|
+
this.subject.publish(this);
|
|
48352
|
+
};
|
|
48353
|
+
}
|
|
48354
|
+
setIsInDeck(isInDeck) {
|
|
48355
|
+
this.emit({
|
|
48356
|
+
class: "Card",
|
|
48357
|
+
method: "setIsInDeck",
|
|
48358
|
+
item: [this.getId()],
|
|
48359
|
+
newData: { isInDeck },
|
|
48360
|
+
prevData: { isInDeck: this.isInDeck }
|
|
48361
|
+
});
|
|
48362
|
+
}
|
|
48363
|
+
updateImageToRender() {
|
|
48364
|
+
this.imageToRender = this.backside;
|
|
48365
|
+
if (this.isOpen) {
|
|
48366
|
+
this.imageToRender = this.image;
|
|
48367
|
+
}
|
|
48368
|
+
}
|
|
48369
|
+
render(context, deckRenderData) {
|
|
48370
|
+
if (this.transformationRenderBlock || this.isInDeck && !deckRenderData) {
|
|
48371
|
+
return;
|
|
48372
|
+
}
|
|
48373
|
+
const ctx = context.ctx;
|
|
48374
|
+
if (this.imageToRender && this.imageToRender.complete) {
|
|
48375
|
+
ctx.save();
|
|
48376
|
+
let left = this.left;
|
|
48377
|
+
let top = this.top;
|
|
48378
|
+
if (deckRenderData) {
|
|
48379
|
+
left = deckRenderData.left + 2 * deckRenderData.cardPosition;
|
|
48380
|
+
top = deckRenderData.top;
|
|
48381
|
+
}
|
|
48382
|
+
ctx.drawImage(this.imageToRender, left, top, CARD_DIMENSIONS.width, CARD_DIMENSIONS.height);
|
|
48383
|
+
ctx.restore();
|
|
48384
|
+
}
|
|
48385
|
+
}
|
|
48386
|
+
updateMbr() {
|
|
48387
|
+
const { translateX, translateY, scaleX, scaleY } = this.transformation.matrix;
|
|
48388
|
+
this.left = translateX;
|
|
48389
|
+
this.top = translateY;
|
|
48390
|
+
this.right = this.left + CARD_DIMENSIONS.width * scaleX;
|
|
48391
|
+
this.bottom = this.top + CARD_DIMENSIONS.height * scaleY;
|
|
48392
|
+
}
|
|
48393
|
+
getMbr() {
|
|
48394
|
+
if (this.isInDeck) {
|
|
48395
|
+
return new Mbr(1e4, 1e4, 1e4, 1e4);
|
|
48396
|
+
}
|
|
48397
|
+
return super.getMbr();
|
|
48398
|
+
}
|
|
48399
|
+
getPath() {
|
|
48400
|
+
return new Path(this.getMbr().getLines());
|
|
48401
|
+
}
|
|
48402
|
+
renderHTML(documentFactory) {
|
|
48403
|
+
const div = documentFactory.createElement("card-item");
|
|
48404
|
+
return div;
|
|
48405
|
+
}
|
|
48406
|
+
deserialize(data) {
|
|
48407
|
+
super.deserialize(data);
|
|
48408
|
+
this.updateMbr();
|
|
48409
|
+
this.createImages();
|
|
48410
|
+
this.subject.publish(this);
|
|
48411
|
+
return this;
|
|
48412
|
+
}
|
|
48413
|
+
toggleIsOpen() {
|
|
48414
|
+
this.emit({
|
|
48415
|
+
class: "Card",
|
|
48416
|
+
method: "setIsOpen",
|
|
48417
|
+
item: [this.getId()],
|
|
48418
|
+
newData: { isOpen: !this.isOpen },
|
|
48419
|
+
prevData: { isOpen: this.isOpen }
|
|
48420
|
+
});
|
|
48421
|
+
}
|
|
48422
|
+
apply(op) {
|
|
48423
|
+
super.apply(op);
|
|
48424
|
+
switch (op.class) {
|
|
48425
|
+
case "Card":
|
|
48426
|
+
switch (op.method) {
|
|
48427
|
+
case "setIsOpen":
|
|
48428
|
+
this.isOpen = op.newData.isOpen;
|
|
48429
|
+
this.updateImageToRender();
|
|
48430
|
+
break;
|
|
48431
|
+
case "setIsInDeck":
|
|
48432
|
+
this.isInDeck = op.newData.isInDeck;
|
|
48433
|
+
break;
|
|
48434
|
+
}
|
|
48435
|
+
break;
|
|
48436
|
+
}
|
|
48437
|
+
this.subject.publish(this);
|
|
48438
|
+
}
|
|
48439
|
+
}
|
|
48440
|
+
registerItem({
|
|
48441
|
+
item: Card,
|
|
48442
|
+
defaultData: defaultCardData
|
|
48443
|
+
});
|
|
48444
|
+
// src/Items/Examples/CardGame/Deck/Deck.ts
|
|
48445
|
+
var defaultDeckData = {
|
|
48446
|
+
itemType: "Deck",
|
|
48447
|
+
cardIds: []
|
|
48448
|
+
};
|
|
48449
|
+
|
|
48450
|
+
class Deck extends BaseItem {
|
|
48451
|
+
subject = new Subject;
|
|
48452
|
+
shouldUseCustomRender = false;
|
|
48453
|
+
cardIds = [];
|
|
48454
|
+
cards = [];
|
|
48455
|
+
constructor(board, id = "", defaultData2, cards) {
|
|
48456
|
+
super(board, id, defaultDeckData);
|
|
48457
|
+
if (cards) {
|
|
48458
|
+
this.cards = cards;
|
|
48459
|
+
cards.forEach((card) => card.setIsInDeck(true));
|
|
48460
|
+
this.transformation.matrix = cards[cards.length - 1].transformation.matrix;
|
|
48461
|
+
this.cardIds = cards.map((card) => card.getId());
|
|
48462
|
+
}
|
|
48463
|
+
this.transformation.subject.subscribe(() => {
|
|
48464
|
+
this.updateMbr();
|
|
48465
|
+
this.subject.publish(this);
|
|
48466
|
+
});
|
|
48467
|
+
this.updateMbr();
|
|
48468
|
+
}
|
|
48469
|
+
getDeck() {
|
|
48470
|
+
return this.cards;
|
|
48471
|
+
}
|
|
48472
|
+
getTopCard() {
|
|
48473
|
+
const cardId = this.cardIds[this.cardIds.length - 1];
|
|
48474
|
+
return this.getCards([cardId])[0];
|
|
48475
|
+
}
|
|
48476
|
+
getBottomCard() {
|
|
48477
|
+
const cardId = this.cardIds[0];
|
|
48478
|
+
return this.getCards([cardId])[0];
|
|
48479
|
+
}
|
|
48480
|
+
getRandomCard() {
|
|
48481
|
+
const cardId = this.cardIds[Math.ceil(Math.random() * this.cardIds.length) - 1];
|
|
48482
|
+
return this.getCards([cardId])[0];
|
|
48483
|
+
}
|
|
48484
|
+
getCards(cardIds) {
|
|
48485
|
+
const cards = this.findCardsOnBoard(cardIds);
|
|
48486
|
+
this.removeCards(cards);
|
|
48487
|
+
return cards;
|
|
48488
|
+
}
|
|
48489
|
+
findCardsOnBoard(cardIds) {
|
|
48490
|
+
return cardIds.map((cardId) => {
|
|
48491
|
+
return this.board.items.getById(cardId);
|
|
48492
|
+
}).filter((card) => !!card);
|
|
48493
|
+
}
|
|
48494
|
+
updateCards() {
|
|
48495
|
+
if (this.cardIds.length === this.cards.length) {
|
|
48496
|
+
return this.cards;
|
|
48497
|
+
}
|
|
48498
|
+
this.cards = this.findCardsOnBoard(this.cardIds);
|
|
48499
|
+
return this.cards;
|
|
48500
|
+
}
|
|
48501
|
+
shuffleDeck() {
|
|
48502
|
+
const shuffled = [...this.cardIds];
|
|
48503
|
+
for (let i = shuffled.length - 1;i > 0; i--) {
|
|
48504
|
+
const j = Math.floor(Math.random() * (i + 1));
|
|
48505
|
+
[shuffled[i], shuffled[j]] = [shuffled[j], shuffled[i]];
|
|
48506
|
+
}
|
|
48507
|
+
const cards = this.findCardsOnBoard(shuffled);
|
|
48508
|
+
this.addCards(cards, true);
|
|
48509
|
+
}
|
|
48510
|
+
addCards(cards, shouldReplaceExistingCards = false) {
|
|
48511
|
+
cards.forEach((card) => {
|
|
48512
|
+
card.setIsInDeck(true);
|
|
48513
|
+
});
|
|
48514
|
+
this.board.bringToFront(cards);
|
|
48515
|
+
this.emit({
|
|
48516
|
+
class: "Deck",
|
|
48517
|
+
method: "addCards",
|
|
48518
|
+
item: [this.getId()],
|
|
48519
|
+
newData: {
|
|
48520
|
+
cardIds: cards.map((card) => card.getId()),
|
|
48521
|
+
shouldReplaceExistingCards
|
|
48522
|
+
},
|
|
48523
|
+
prevData: { cardIds: this.cardIds, shouldReplaceExistingCards }
|
|
48524
|
+
});
|
|
48525
|
+
}
|
|
48526
|
+
removeCards(cards) {
|
|
48527
|
+
cards.forEach((card) => {
|
|
48528
|
+
card.setIsInDeck(false);
|
|
48529
|
+
});
|
|
48530
|
+
this.emit({
|
|
48531
|
+
class: "Deck",
|
|
48532
|
+
method: "removeCards",
|
|
48533
|
+
item: [this.getId()],
|
|
48534
|
+
newData: { cardIds: cards.map((card) => card.getId()) },
|
|
48535
|
+
prevData: { cardIds: this.cardIds }
|
|
48536
|
+
});
|
|
48537
|
+
}
|
|
48538
|
+
apply(op) {
|
|
48539
|
+
super.apply(op);
|
|
48540
|
+
switch (op.class) {
|
|
48541
|
+
case "Deck":
|
|
48542
|
+
switch (op.method) {
|
|
48543
|
+
case "addCards":
|
|
48544
|
+
if (op.newData.shouldReplaceExistingCards) {
|
|
48545
|
+
this.cardIds = op.newData.cardIds;
|
|
48546
|
+
this.cards = this.findCardsOnBoard(this.cardIds);
|
|
48547
|
+
} else {
|
|
48548
|
+
this.cardIds = [
|
|
48549
|
+
...op.newData.cardIds,
|
|
48550
|
+
...this.cardIds
|
|
48551
|
+
];
|
|
48552
|
+
this.updateCards();
|
|
48553
|
+
this.updateMbr();
|
|
48554
|
+
}
|
|
48555
|
+
break;
|
|
48556
|
+
case "removeCards":
|
|
48557
|
+
this.cardIds = this.cardIds.filter((card) => {
|
|
48558
|
+
return !op.newData.cardIds.includes(card);
|
|
48559
|
+
});
|
|
48560
|
+
this.updateCards();
|
|
48561
|
+
this.updateMbr();
|
|
48562
|
+
break;
|
|
48563
|
+
}
|
|
48564
|
+
break;
|
|
48565
|
+
}
|
|
48566
|
+
this.subject.publish(this);
|
|
48567
|
+
}
|
|
48568
|
+
updateMbr() {
|
|
48569
|
+
const { translateX, translateY, scaleX, scaleY } = this.transformation.matrix;
|
|
48570
|
+
this.left = translateX;
|
|
48571
|
+
this.top = translateY;
|
|
48572
|
+
this.right = this.left + CARD_DIMENSIONS.width * scaleX + 2 * this.cardIds.length;
|
|
48573
|
+
this.bottom = this.top + CARD_DIMENSIONS.height * scaleY;
|
|
48574
|
+
}
|
|
48575
|
+
deserialize(data) {
|
|
48576
|
+
super.deserialize(data);
|
|
48577
|
+
this.updateCards();
|
|
48578
|
+
return this;
|
|
48579
|
+
}
|
|
48580
|
+
render(context) {
|
|
48581
|
+
if (this.transformationRenderBlock) {
|
|
48582
|
+
return;
|
|
48583
|
+
}
|
|
48584
|
+
this.cards.forEach((card, index2) => {
|
|
48585
|
+
card.render(context, {
|
|
48586
|
+
top: this.top,
|
|
48587
|
+
left: this.left,
|
|
48588
|
+
cardPosition: index2 + 1
|
|
48589
|
+
});
|
|
48590
|
+
});
|
|
48591
|
+
}
|
|
48592
|
+
}
|
|
48593
|
+
registerItem({
|
|
48594
|
+
item: Deck,
|
|
48595
|
+
defaultData: defaultDeckData
|
|
48596
|
+
});
|
|
48283
48597
|
// src/Pointer/Cursor.ts
|
|
48284
48598
|
var defaultCursors = [
|
|
48285
48599
|
"default",
|
|
@@ -48792,27 +49106,6 @@ class Camera {
|
|
|
48792
49106
|
requestAnimationFrame(animate);
|
|
48793
49107
|
}
|
|
48794
49108
|
}
|
|
48795
|
-
function throttle(func, delay) {
|
|
48796
|
-
let lastCall = 0;
|
|
48797
|
-
let timeoutId = null;
|
|
48798
|
-
return function(...args) {
|
|
48799
|
-
const now = Date.now();
|
|
48800
|
-
if (lastCall + delay <= now) {
|
|
48801
|
-
lastCall = now;
|
|
48802
|
-
func(...args);
|
|
48803
|
-
if (timeoutId) {
|
|
48804
|
-
clearTimeout(timeoutId);
|
|
48805
|
-
timeoutId = null;
|
|
48806
|
-
}
|
|
48807
|
-
} else if (!timeoutId) {
|
|
48808
|
-
timeoutId = setTimeout(() => {
|
|
48809
|
-
lastCall = Date.now();
|
|
48810
|
-
timeoutId = null;
|
|
48811
|
-
func(...args);
|
|
48812
|
-
}, delay - (now - lastCall));
|
|
48813
|
-
}
|
|
48814
|
-
};
|
|
48815
|
-
}
|
|
48816
49109
|
// src/hotkeys.json
|
|
48817
49110
|
var hotkeys_default = {
|
|
48818
49111
|
select: {
|
|
@@ -58417,6 +58710,7 @@ export {
|
|
|
58417
58710
|
Drawing,
|
|
58418
58711
|
DefaultTransformationData,
|
|
58419
58712
|
DefaultShapeData,
|
|
58713
|
+
Deck,
|
|
58420
58714
|
DEFAULT_SHAPE,
|
|
58421
58715
|
CubicBezier,
|
|
58422
58716
|
Counter,
|
|
@@ -58424,6 +58718,7 @@ export {
|
|
|
58424
58718
|
Connector2 as Connector,
|
|
58425
58719
|
ConnectionLineWidths,
|
|
58426
58720
|
Comment,
|
|
58721
|
+
Card,
|
|
58427
58722
|
Camera,
|
|
58428
58723
|
CURSORS_IDLE_CLEANUP_DELAY,
|
|
58429
58724
|
CURSORS_ANIMATION_DURATION,
|
|
File without changes
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { BaseItem, BaseItemData, SerializedItemData } from "Items/BaseItem/BaseItem";
|
|
2
|
+
import { Board } from "Board";
|
|
3
|
+
import { DrawingContext } from "Items/DrawingContext";
|
|
4
|
+
import { DocumentFactory } from "api/DocumentFactory";
|
|
5
|
+
import { Path } from "Items/Path/Path";
|
|
6
|
+
import { Subject } from "Subject";
|
|
7
|
+
import { Paths } from "Items/Path/Paths";
|
|
8
|
+
import { CardOperation } from "Items/Examples/CardGame/Card/CardOperation";
|
|
9
|
+
import { Mbr } from "Items/Mbr/Mbr";
|
|
10
|
+
export type DeckRenderData = {
|
|
11
|
+
left: number;
|
|
12
|
+
top: number;
|
|
13
|
+
cardPosition: number;
|
|
14
|
+
};
|
|
15
|
+
export declare const defaultCardData: BaseItemData;
|
|
16
|
+
export declare const CARD_DIMENSIONS: {
|
|
17
|
+
width: number;
|
|
18
|
+
height: number;
|
|
19
|
+
};
|
|
20
|
+
export declare class Card extends BaseItem {
|
|
21
|
+
readonly subject: Subject<Card>;
|
|
22
|
+
private name;
|
|
23
|
+
private isOpen;
|
|
24
|
+
private isInDeck;
|
|
25
|
+
private throttledBringToFront;
|
|
26
|
+
image: HTMLImageElement | null;
|
|
27
|
+
backside: HTMLImageElement | null;
|
|
28
|
+
private imageToRender;
|
|
29
|
+
shouldUseCustomRender: boolean;
|
|
30
|
+
constructor(board: Board, id: string | undefined, defaultData: BaseItemData | undefined, name: string);
|
|
31
|
+
createImages(): void;
|
|
32
|
+
setIsInDeck(isInDeck: boolean): void;
|
|
33
|
+
updateImageToRender(): void;
|
|
34
|
+
render(context: DrawingContext, deckRenderData?: DeckRenderData): void;
|
|
35
|
+
updateMbr(): void;
|
|
36
|
+
getMbr(): Mbr;
|
|
37
|
+
getPath(): Path | Paths;
|
|
38
|
+
renderHTML(documentFactory: DocumentFactory): HTMLElement;
|
|
39
|
+
deserialize(data: SerializedItemData): this;
|
|
40
|
+
toggleIsOpen(): void;
|
|
41
|
+
apply(op: CardOperation): void;
|
|
42
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { BaseOperation } from "Events/EventsOperations";
|
|
2
|
+
export type CardOperation = SetIsOpen | SetIsInDeck;
|
|
3
|
+
export interface SetIsOpen extends BaseOperation<{
|
|
4
|
+
isOpen: boolean;
|
|
5
|
+
}> {
|
|
6
|
+
class: "Card";
|
|
7
|
+
method: "setIsOpen";
|
|
8
|
+
}
|
|
9
|
+
export interface SetIsInDeck extends BaseOperation<{
|
|
10
|
+
isInDeck: boolean;
|
|
11
|
+
}> {
|
|
12
|
+
class: "Card";
|
|
13
|
+
method: "setIsInDeck";
|
|
14
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { Card } from "./Card";
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { BaseItem, BaseItemData, SerializedItemData } from "Items/BaseItem/BaseItem";
|
|
2
|
+
import { Board } from "Board";
|
|
3
|
+
import { Subject } from "Subject";
|
|
4
|
+
import { Card } from "Items/Examples/CardGame/Card/Card";
|
|
5
|
+
import { DrawingContext } from "Items/DrawingContext";
|
|
6
|
+
import { DeckOperation } from "Items/Examples/CardGame/Deck/DeckOperation";
|
|
7
|
+
export declare const defaultDeckData: BaseItemData;
|
|
8
|
+
export declare class Deck extends BaseItem {
|
|
9
|
+
readonly subject: Subject<Deck>;
|
|
10
|
+
shouldUseCustomRender: boolean;
|
|
11
|
+
cardIds: string[];
|
|
12
|
+
cards: Card[];
|
|
13
|
+
constructor(board: Board, id?: string, defaultData?: BaseItemData, cards?: Card[]);
|
|
14
|
+
getDeck(): Card[];
|
|
15
|
+
getTopCard(): Card | undefined;
|
|
16
|
+
getBottomCard(): Card | undefined;
|
|
17
|
+
getRandomCard(): Card | undefined;
|
|
18
|
+
private getCards;
|
|
19
|
+
private findCardsOnBoard;
|
|
20
|
+
updateCards(): Card[];
|
|
21
|
+
shuffleDeck(): void;
|
|
22
|
+
addCards(cards: Card[], shouldReplaceExistingCards?: boolean): void;
|
|
23
|
+
removeCards(cards: Card[]): void;
|
|
24
|
+
apply(op: DeckOperation): void;
|
|
25
|
+
updateMbr(): void;
|
|
26
|
+
deserialize(data: SerializedItemData): this;
|
|
27
|
+
render(context: DrawingContext): void;
|
|
28
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { BaseOperation } from "Events/EventsOperations";
|
|
2
|
+
export type DeckOperation = AddCards | RemoveCards;
|
|
3
|
+
export interface AddCards extends BaseOperation<{
|
|
4
|
+
cardIds: string[];
|
|
5
|
+
shouldReplaceExistingCards: boolean;
|
|
6
|
+
}> {
|
|
7
|
+
class: "Deck";
|
|
8
|
+
method: "addCards";
|
|
9
|
+
}
|
|
10
|
+
export interface RemoveCards extends BaseOperation<{
|
|
11
|
+
cardIds: string[];
|
|
12
|
+
}> {
|
|
13
|
+
class: "Deck";
|
|
14
|
+
method: "removeCards";
|
|
15
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { Deck } from "./Deck";
|
|
@@ -23,5 +23,7 @@ export type { Item, ItemType, ItemData } from "./Item";
|
|
|
23
23
|
export { registerItem } from "./RegisterItem";
|
|
24
24
|
export { Star } from "./Examples/Star";
|
|
25
25
|
export { Counter } from "./Examples/Counter";
|
|
26
|
+
export { Card } from "./Examples/CardGame/Card";
|
|
27
|
+
export { Deck } from "./Examples/CardGame/Deck";
|
|
26
28
|
export { Comment } from "./Comment";
|
|
27
29
|
export type { HorisontalAlignment, VerticalAlignment } from "./Alignment";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function throttle<T extends (...args: any[]) => unknown>(func: T, delay: number): (...args: Parameters<T>) => void;
|