create hand with variable cards.
This commit is contained in:
@ -1,21 +1,36 @@
|
|||||||
import { Assets, Container, Sprite } from "pixi.js";
|
import { Assets, Container, Size, Sprite } from "pixi.js";
|
||||||
import { Card } from "./Card";
|
import { Card } from "./Card";
|
||||||
|
|
||||||
|
const CARD_WIDTH = 144;
|
||||||
|
const CARD_HEIGHT = 224;
|
||||||
|
|
||||||
const spritesheet = await Assets.load("/public/assets/cards.json");
|
const spritesheet = await Assets.load("/public/assets/cards.json");
|
||||||
|
|
||||||
export class Hand {
|
export class Hand {
|
||||||
cards: Container;
|
cards: Container;
|
||||||
|
#containerSize: Size;
|
||||||
|
#offset: number;
|
||||||
|
#roomRemaining: number;
|
||||||
|
|
||||||
|
constructor(maxWidth: number, cards: Card[] = []) {
|
||||||
|
if (maxWidth < CARD_WIDTH) {
|
||||||
|
throw new Error("hand cannot be narrower than a single card");
|
||||||
|
}
|
||||||
|
|
||||||
|
this.#roomRemaining = maxWidth;
|
||||||
|
this.#containerSize = { width: maxWidth, height: CARD_HEIGHT };
|
||||||
|
this.#offset = CARD_WIDTH;
|
||||||
|
|
||||||
constructor(cards: Card[] = []) {
|
|
||||||
const sprites: Container = new Container();
|
const sprites: Container = new Container();
|
||||||
sprites.position.set(0, 0);
|
sprites.position.set(0, 0);
|
||||||
sprites.height = 300;
|
|
||||||
sprites.width = 300;
|
|
||||||
|
|
||||||
|
let x = 0;
|
||||||
for (const card of cards) {
|
for (const card of cards) {
|
||||||
const sprite = new Sprite(spritesheet.textures[card]);
|
const sprite = new Sprite(spritesheet.textures[card]);
|
||||||
sprite.height /= 1.5;
|
|
||||||
sprite.width /= 1.5;
|
sprite.x = x;
|
||||||
|
x += this.#offset;
|
||||||
|
|
||||||
sprites.addChild(sprite);
|
sprites.addChild(sprite);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
import { Application, Assets, Sprite } from "pixi.js";
|
import { Application, Assets, Sprite } from "pixi.js";
|
||||||
import { Hand } from "./hand";
|
import { Hand } from "./Hand";
|
||||||
|
|
||||||
(async () => {
|
(async () => {
|
||||||
// Create a new application
|
// Create a new application
|
||||||
@ -12,31 +12,18 @@ import { Hand } from "./hand";
|
|||||||
document.getElementById("pixi-container")!.appendChild(app.canvas);
|
document.getElementById("pixi-container")!.appendChild(app.canvas);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// Create the SpriteSheet from data and image
|
const hand = new Hand(1000, [
|
||||||
const cards = await Assets.load("/public/assets/cards.json");
|
"fourOfDiamonds",
|
||||||
|
"eightOfDiamonds",
|
||||||
|
"threeOfClubs",
|
||||||
|
"kingOfSpades",
|
||||||
|
]);
|
||||||
|
|
||||||
console.log(cards);
|
|
||||||
|
|
||||||
// Create a bunny Sprite
|
|
||||||
const bunny = new Sprite(cards.textures["fourOfHearts"]);
|
|
||||||
|
|
||||||
console.log(bunny);
|
|
||||||
|
|
||||||
// Center the sprite's anchor point
|
|
||||||
bunny.anchor.set(0.5);
|
|
||||||
|
|
||||||
// Move the sprite to the center of the screen
|
|
||||||
bunny.position.set(app.screen.width / 2, app.screen.height / 2);
|
|
||||||
|
|
||||||
bunny.height /= 1.5;
|
|
||||||
bunny.width /= 1.5;
|
|
||||||
|
|
||||||
// Add the bunny to the stage
|
|
||||||
// app.stage.addChild(bunny);
|
|
||||||
|
|
||||||
const hand = new Hand(["fourOfDiamonds"]);
|
|
||||||
app.stage.addChild(hand.cards);
|
app.stage.addChild(hand.cards);
|
||||||
|
|
||||||
|
hand.cards.position.set(app.screen.width / 2, 0);
|
||||||
|
hand.cards.pivot.set(hand.cards.width / 2, 0);
|
||||||
|
|
||||||
// Listen for animate update
|
// Listen for animate update
|
||||||
// app.ticker.add((time) => {
|
// app.ticker.add((time) => {
|
||||||
// // Just for fun, let's rotate mr rabbit a little.
|
// // Just for fun, let's rotate mr rabbit a little.
|
||||||
|
|||||||
Reference in New Issue
Block a user