diff --git a/README.md b/README.md
index b435d3f..6656725 100644
--- a/README.md
+++ b/README.md
@@ -1,28 +1,115 @@
-
+ on:scoredPoints={backgroundAnimation}
+ on:doublePressed={doubleDownEffect}
+ on:suitPressed={revealSuitEffect}
+ on:remainingPressed={seeRemainingEffect}
+ on:futurePressed={seeTheFutureEffect}>
diff --git a/src/lib/Deck.svelte b/src/lib/Deck.svelte
index 539a5d6..81663de 100644
--- a/src/lib/Deck.svelte
+++ b/src/lib/Deck.svelte
@@ -141,7 +141,14 @@
export function shuffleDeck()
{
- return deck.sort((a, b) => Math.random() - 0.5);
+ let currentIndex = deck.length;
+
+ while(currentIndex != 0) {
+ let randomIndex = Math.floor(Math.random() * currentIndex);
+ currentIndex--;
+
+ [deck[currentIndex], deck[randomIndex]] = [deck[randomIndex], deck[currentIndex]];
+ }
}
export function drawCard()
diff --git a/src/lib/HiLo.svelte b/src/lib/HiLo.svelte
index 2ad9a2d..7bb586e 100644
--- a/src/lib/HiLo.svelte
+++ b/src/lib/HiLo.svelte
@@ -6,7 +6,8 @@
export const MAIN_SCREEN = "MainScreen";
export const REMAINING_SCREEN = "RemainingScreen";
- let screenMode = MAIN_SCREEN;
+ const FINAL_SCREEN = "FinalScreen";
+ export let screenMode = MAIN_SCREEN;
let doubleButton;
let suitButton;
@@ -22,9 +23,13 @@
let suitUses = suitUsesMax;
let remainingUses = remainingUsesMax;
let futureUses = futureUsesMax;
+ let doubleUsed = false;
+ let futureUsed = false;
+ let suitUsed = false;
let currentCard;
let deck;
+ let powers;
let score = 0;
let multiplier = 1;
let recentScore = 0;
@@ -34,6 +39,11 @@
export function initiateGame(p5)
{
deck.loadDeckImages(p5);
+ startGame();
+ }
+
+ export function startGame()
+ {
deck.createDeck();
deck.shuffleDeck();
gameEnd = false;
@@ -47,6 +57,9 @@
suitUses = suitUsesMax;
remainingUses = remainingUsesMax;
futureUses = futureUsesMax;
+ doubleUsed = false;
+ futureUsed = false;
+ suitUsed = false;
doubleButton.innerHTML = "Double Down x" + doubleUses;
suitButton.innerHTML = "Reveal Suit x" + suitUses;
remainingButton.innerHTML = "See Remaining x" + remainingUses;
@@ -84,15 +97,21 @@
{
recentScore = -(15 - topValue);
}
+
recentScore *= multiplier;
+ multiplier = 1;
+ doubleUsed = false;
+ suitUsed = false;
+ futureUsed = false;
+
score += recentScore
currentCard = topCard;
- multiplier = 1;
dispatch("scoredPoints", { recentScore })
if(deck.getRemaining() == 0) {
+ changeScreenMode(FINAL_SCREEN);
gameEnd = true;
}
return;
@@ -114,12 +133,29 @@
}
}
+ export function changeScreenMode(mode)
+ {
+ screenMode = mode;
+ switch(mode)
+ {
+ case MAIN_SCREEN:
+ remainingButton.innerHTML = "See Remaining x" + remainingUses;
+ break;
+ case REMAINING_SCREEN:
+ remainingButton.innerHTML = "Go Back";
+ break;
+ }
+
+ }
+
// Powers
function doubleDown()
{
+ if(gameEnd) return;
changeScreenMode(MAIN_SCREEN);
- if(doubleUses > 0) {
+ if(doubleUses > 0 && !doubleUsed) {
doubleUses -= 1;
+ doubleUsed = true;
multiplier = 2;
doubleButton.innerHTML = "Double Down x" + doubleUses;
dispatch("doublePressed");
@@ -128,9 +164,11 @@
function revealSuit()
{
+ if(gameEnd) return;
changeScreenMode(MAIN_SCREEN);
- if(suitUses > 0) {
+ if(suitUses > 0 && !suitUsed) {
suitUses -= 1;
+ suitUsed = true;
const suit = deck.getTopCardSuit();
const backImage = deck.getSpecificImage(suit + "Back");
@@ -141,6 +179,7 @@
function seeRemaining()
{
+ if(gameEnd) return;
if(screenMode == MAIN_SCREEN)
{
if(remainingUses > 0) {
@@ -157,9 +196,11 @@
function seeTheFuture()
{
+ if(gameEnd) return;
changeScreenMode(MAIN_SCREEN);
- if(futureUses > 0) {
+ if(futureUses > 0 && !futureUsed) {
futureUses -= 1;
+ futureUsed = true;
futureButton.innerHTML = "See The Future x" + futureUses;
dispatch("futurePressed");
}
@@ -202,21 +243,6 @@
return screenMode;
}
- function changeScreenMode(mode)
- {
- screenMode = mode;
- switch(mode)
- {
- case MAIN_SCREEN:
- remainingButton.innerHTML = "See Remaining x" + remainingUses;
- break;
- case REMAINING_SCREEN:
- remainingButton.innerHTML = "Go Back";
- break;
- }
-
- }
-
export function getRemaining() {
return deck.getRemaining();
}