Added support for multiple decks
This commit is contained in:
@@ -56,8 +56,18 @@ function reshuffleDeck($game) {
|
||||
*/
|
||||
function readyGame($game) {
|
||||
$deck = array(); # Used to get the deck ready
|
||||
for ($i=0;$i<52;$i++) {
|
||||
array_push($deck, $i);
|
||||
$decks = dbRequest2("SELECT decks FROM golfGame WHERE ID='$game'");
|
||||
# Makes sure that it is not asking for an unreasonable amount of decks
|
||||
if ($decks > 50) {
|
||||
$decks = 50;
|
||||
} elseif ($decks < 1) {
|
||||
$decks = 1;
|
||||
}
|
||||
# Creates the cards for all the decks.
|
||||
for ($j=0;$j<$decks;$j++) {
|
||||
for ($i=0;$i<52;$i++) {
|
||||
array_push($deck, $i);
|
||||
}
|
||||
}
|
||||
shuffle($deck);
|
||||
$gameData = dbRequest2("SELECT * FROM golfGame WHERE ID='$game'");
|
||||
@@ -100,9 +110,11 @@ function readyGame($game) {
|
||||
}
|
||||
}
|
||||
if ($USERNAME) {
|
||||
if (array_key_exists("game", $_GET)){ // Gets the log
|
||||
$playing = dbRequest2("SELECT name, password, players, playersToStart, cardNumber, flipNumber, multiplierForFlip, pointsToEnd, ID FROM golfGame WHERE EXISTS (SELECT * FROM golfGamePlayers WHERE golfGamePlayers.gameID = ID and user='$USERNAME') ORDER BY turnStartTime DESC");
|
||||
$data = dbRequest2("SELECT name, password, players, playersToStart, cardNumber, flipNumber, multiplierForFlip, pointsToEnd, ID FROM golfGame WHERE players != playersToStart and NOT EXISTS (SELECT * FROM golfGamePlayers WHERE golfGamePlayers.gameID = ID and user='$USERNAME') ORDER BY players DESC");
|
||||
if (array_key_exists("game", $_GET)){ // Gets the game
|
||||
# Finds all games the player is still playing.
|
||||
$playing = dbRequest2("SELECT name, password, players, playersToStart, cardNumber, flipNumber, multiplierForFlip, pointsToEnd, ID, decks FROM golfGame WHERE EXISTS (SELECT * FROM golfGamePlayers WHERE golfGamePlayers.gameID = ID and user='$USERNAME') ORDER BY turnStartTime DESC");
|
||||
# Finds all open games.
|
||||
$data = dbRequest2("SELECT name, password, players, playersToStart, cardNumber, flipNumber, multiplierForFlip, pointsToEnd, ID, decks FROM golfGame WHERE players != playersToStart and NOT EXISTS (SELECT * FROM golfGamePlayers WHERE golfGamePlayers.gameID = ID and user='$USERNAME') ORDER BY players DESC");
|
||||
foreach ($data as $id => $entry) { // Makes sure to not leak the password
|
||||
if ($entry["password"]) {
|
||||
$data[$id]["password"] = true;
|
||||
@@ -313,7 +325,7 @@ if ($USERNAME) {
|
||||
http_response_code(404);
|
||||
echo "Game not found";
|
||||
}
|
||||
} elseif (array_key_exists("create", $_POST) and array_key_exists("cardNumber", $_POST) and array_key_exists("flipNumber", $_POST) and array_key_exists("playersToStart", $_POST) and array_key_exists("multiplierForFlip", $_POST)) { # Used to create a new room
|
||||
} elseif (array_key_exists("create", $_POST) and array_key_exists("cardNumber", $_POST) and array_key_exists("flipNumber", $_POST) and array_key_exists("playersToStart", $_POST) and array_key_exists("multiplierForFlip", $_POST) and array_key_exists("decks", $_POST)) { # Used to create a new room
|
||||
$password = "";
|
||||
$name = $_POST["create"];
|
||||
$cardNumber = intval($_POST["cardNumber"]);
|
||||
@@ -321,6 +333,7 @@ if ($USERNAME) {
|
||||
$multiplierForFlip = floatval($_POST["multiplierForFlip"]);
|
||||
$playersToStart = $_POST["playersToStart"];
|
||||
$pointsToEnd = intval($_POST["pointsToEnd"]);
|
||||
$decks = intval($_POST["decks"]);
|
||||
$time = time();
|
||||
if (array_key_exists("password", $_POST)) {
|
||||
$password = $_POST["password"];
|
||||
@@ -340,13 +353,16 @@ if ($USERNAME) {
|
||||
} elseif ($pointsToEnd <= 0) {
|
||||
http_response_code(400);
|
||||
echo "The points to end need to be more than 0";
|
||||
} elseif ($playersToStart * $cardNumber >= 52) {
|
||||
} elseif ($playersToStart * $cardNumber >= 52 * $decks) {
|
||||
http_response_code(400);
|
||||
echo "There are not enough cards in a deck for that amount of players and cards";
|
||||
} elseif ($decks > 50 or $decks < 1) {
|
||||
http_response_code(400);
|
||||
echo "You can only have 50 decks";
|
||||
} else {
|
||||
dbCommand("INSERT INTO golfGame (deck, discard, cardNumber, flipNumber, multiplierForFlip, pointsToEnd, name, password, players, playersToStart, currentPlayer, turnStartTime) VALUES ('[]', '[]', $cardNumber, $flipNumber, $multiplierForFlip, $pointsToEnd, '$name', '$password', 0, $playersToStart, -1, $time)");
|
||||
dbCommand("INSERT INTO golfGame (deck, discard, cardNumber, flipNumber, multiplierForFlip, pointsToEnd, name, password, players, playersToStart, currentPlayer, turnStartTime, decks) VALUES ('[]', '[]', $cardNumber, $flipNumber, $multiplierForFlip, $pointsToEnd, '$name', '$password', 0, $playersToStart, -1, $time, $decks)");
|
||||
echo "Created Game";
|
||||
writeLog(14, "$USERNAME created game for $playersToStart players and $cardNumber cards and name $name with ip of $address");
|
||||
writeLog(14, "$USERNAME created game for $playersToStart players, $cardNumber cards, $decks decks, and name $name with ip of $address");
|
||||
}
|
||||
} elseif (array_key_exists("forceUpdate", $_GET)) { // Used to force the update the next time an update is called
|
||||
$id = $_GET["forceUpdate"];
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
function update(repeat=false) { // Will update the game.
|
||||
var text = "<tr><th>Name</th><Players</th><th>Current Players</th><th>Max Players</th><th>Multiplier for Flipping Last Card</th><th>Points to Out</th><th>Password</th><th>Cards</th><th>Cards to flip</th></tr>";
|
||||
var text = "<tr><th>Name</th><Players</th><th>Current Players</th><th>Max Players</th><th>Multiplier for Flipping Last Card</th><th>Points to Out</th><th>Password</th><th>Cards</th><th>Cards to flip</th><th>Decks</th></tr>";
|
||||
const ajax = new XMLHttpRequest();
|
||||
ajax.onload = function() {
|
||||
if (ajax.status == 200) {
|
||||
@@ -8,7 +8,7 @@ function update(repeat=false) { // Will update the game.
|
||||
if (element.players == element.playersToStart) {
|
||||
joinText = "Continue";
|
||||
}
|
||||
text += `<tr><td>${element.name} <button onClick='joinGame(${element.ID})'>${joinText}</button></td><td>${element.players}</td><td>${element.playersToStart}</td><td>${element.multiplierForFlip}</td><td>${element.pointsToEnd}</td><td>${element.password ? `true` : "false"}</td><td>${element.cardNumber}</td><td>${element.flipNumber}</td></tr>`;
|
||||
text += `<tr><td>${element.name} <button onClick='joinGame(${element.ID})'>${joinText}</button></td><td>${element.players}</td><td>${element.playersToStart}</td><td>${element.multiplierForFlip}</td><td>${element.pointsToEnd}</td><td>${element.password ? `true` : "false"}</td><td>${element.cardNumber}</td><td>${element.flipNumber}</td><td>${element.decks}</td></tr>`;
|
||||
});
|
||||
$("#games").html(text);
|
||||
} else {
|
||||
@@ -40,7 +40,7 @@ function create() { // Will create a game
|
||||
if ($("#password").val()) {
|
||||
password = `&password=${$("#password").val()}`;
|
||||
}
|
||||
ajax.send(`create=${$("#name").val()}&cardNumber=${$("#cardNumber").val()}&flipNumber=${$("#flipNumber").val()}&playersToStart=${$("#playersToStart").val()}&multiplierForFlip=${$("#multiplierForFlip").val()}&pointsToEnd=${$("#pointsToEnd").val()}&key='${getCookie('user')}'${password}`);
|
||||
ajax.send(`create=${$("#name").val()}&cardNumber=${$("#cardNumber").val()}&flipNumber=${$("#flipNumber").val()}&playersToStart=${$("#playersToStart").val()}&multiplierForFlip=${$("#multiplierForFlip").val()}&pointsToEnd=${$("#pointsToEnd").val()}&decks=${$("#decks").val()}&key='${getCookie('user')}'${password}`);
|
||||
}
|
||||
function joinGame(id) {
|
||||
window.location = `game.php?game=${id}`;
|
||||
|
||||
@@ -37,6 +37,7 @@
|
||||
<label for="playersToStart">Players: </label><input type='number' value='4' id="playersToStart"><br>
|
||||
<label for="multiplierForFlip">Multiplier for flipping last card: </label><input type='number' value='2' id="multiplierForFlip"><br>
|
||||
<label for="pointsToEnd">Points to get out: </label><input type='number' value='100' id="pointsToEnd"><br>
|
||||
<label for="decks">Number of decks to use </label><input type='number' value='1' id="decks"><br>
|
||||
<label for="password">Password(leave blank for none): </label><input type='password' value='' id="password"><br>
|
||||
<button id='create'>Create</button>
|
||||
</div>
|
||||
|
||||
@@ -167,7 +167,7 @@ def repair(): # Repairs all tables or updates them if needed
|
||||
"space3likes" : [["id", 1], ["account", 0]],
|
||||
"golfGamePlayers" : [["gameID", 1], ["multiplier", 1], ["user", 0], ["points", 1], ["orderID", 1], ["lastMode", 0], ["upToDate", 6]],
|
||||
"golfGameCards" : [["gameID", 1], ["user", 0], ["card", 1], ["cardPlacement", 1], ["faceUp", 6]],
|
||||
"golfGame" : [["ID", 5], ["deck", 4], ["discard", 4], ["cardNumber", 1], ["flipNumber", 1], ["multiplierForFlip", 1], ["pointsToEnd", 1], ["name", 0], ["password", 0], ["players", 1], ["playersToStart", 1], ["currentPlayer", 1], ["turnStartTime", 1], ["locked", 6]],
|
||||
"golfGame" : [["ID", 5], ["deck", 4], ["discard", 4], ["cardNumber", 1], ["flipNumber", 1], ["multiplierForFlip", 1], ["pointsToEnd", 1], ["name", 0], ["password", 0], ["players", 1], ["playersToStart", 1], ["currentPlayer", 1], ["turnStartTime", 1], ["locked", 6], ["decks", 1]],
|
||||
"docker" : [["link", 0], ["action", 0], ["image", 0], ["password", 0], ["owner", 0], ["port", 1], ["ID", 0]],
|
||||
"dockerImages" : [["realName", 0], ["shortName", 0]]
|
||||
}
|
||||
@@ -230,23 +230,28 @@ def repair(): # Repairs all tables or updates them if needed
|
||||
versionNumber = version[0][0]
|
||||
if versionNumber == "v1.0":
|
||||
try:
|
||||
command("ALTER TABLE cookies ADD lastIP varchar(255) NULL")
|
||||
command("ALTER TABLE cookies ADD lastIP varchar(255)")
|
||||
except Exception:
|
||||
1
|
||||
version = "v1.1"
|
||||
updatedVersions.append("v1.1")
|
||||
if versionNumber == "v1.1":
|
||||
try:
|
||||
command("ALTER TABLE cookies ADD lastIP varchar(255) NULL")
|
||||
command("ALTER TABLE cookies ADD lastIP varchar(255)")
|
||||
except Exception:
|
||||
1
|
||||
createTable("docker", [["link", 0], ["action", 0], ["image", 0], ["password", 0], ["owner", 0], ["port", 1], ["ID", 0]])
|
||||
createTable("dockerImage", [["realName", 0], ["shortName", 0]])
|
||||
version = "v2.0"
|
||||
updatedVersions.append("v2.0")
|
||||
if versionNumber == "v2.0": # Adds support for multiple decks
|
||||
command("ALTER table golfGame ADD decks int")
|
||||
command("UPDATE golfGame SET decks='1'")
|
||||
version = "v2.1"
|
||||
updatedVersions.append("v2.1")
|
||||
# Fixes the version if it is invalid to the latest version
|
||||
if version != "v2.0":
|
||||
version = "v2.0"
|
||||
if version != "v2.1":
|
||||
version = "v2.1"
|
||||
except:
|
||||
1
|
||||
command("DELETE FROM information WHERE pointer='version'")
|
||||
|
||||
Reference in New Issue
Block a user