Fix for both hand issue and normalization issue

This commit is contained in:
2020-09-22 15:29:04 -06:00
parent 9ba77c96fc
commit c31eab7294
2 changed files with 28 additions and 9 deletions

View File

@@ -109,6 +109,7 @@ sub addCards {
sub addDeck {
my ($sessionID,$deckID) = @_;
if (defined($sessions{$sessionID}{"decks"}{$deckID})) { print "ERROR: Deck already exsists!\n"; return 0; }
$sessions{$sessionID}{"decks"}{$deckID} = { name => "$deckID", cards => [] };
}
@@ -124,6 +125,7 @@ sub uploadDDF {
sub addPool {
my ($sessionID,$poolID) = @_;
if (defined($sessions{$sessionID}{"pools"}{$poolID})) { print "ERROR: Pool already exsists!\n"; return 0; }
$sessions{$sessionID}{"pools"}{$poolID} = { name => "$poolID", cards => [] };
}
@@ -184,6 +186,7 @@ sub renamePool {
sub addHand {
my ($sessionID, $userID, $handID) = @_;
if (defined($sessions{$sessionID}{"users"}{$userID}{hands}{$handID})) { print "ERROR: Hand Already Exsists\n"; return 0; }
$sessions{$sessionID}{"users"}{$userID}{hands}{$handID} = { cards => [] };
}
@@ -247,6 +250,16 @@ sub getPoolTop {
return @{$sessions{$sessionID}{"pools"}{$poolID}->{cards}}[0];
}
sub normalizeSession {
my $sessionID = shift;
unless ($sessionID) { return print "ERROR: Session not provided\n"; }
unless (scalar getDecks($sessionID)) { addDeck($sessionID,"default"); }
unless (scalar getPools($sessionID)) { addPool($sessionID,"default"); }
for (getUsers($sessionID)) {
unless(scalar getHands($sessionID, $_)) { addHand($sessionID,$_,"default"); }
}
}
########################Game Logic ends here#############################
#########################Server Logic below##############################
@@ -304,7 +317,7 @@ my $server = Net::WebSocket::Server->new(
}
if (defined($messageData->{action})) {
if ($messageData->{action} =~ /join/ ) { if (joinSession($conn->{session},$conn->{user})) { $conn->send_utf8('{"info":"join success", "request":"update"}'); } }
if ($messageData->{action} =~ /update/ ) { my $sessionID = $conn->{session}; for ($conn->server->connections) { if ($_->{session} == $conn->{session}) {
if ($messageData->{action} =~ /update/ ) { my $sessionID = $conn->{session}; normalizeSession($conn->{session}); for ($conn->server->connections) { if ($_->{session} == $conn->{session}) {
#This might be a lot to do at once, might need to break it up in the future.
# Update all connections joined to this session.
# User List
@@ -370,9 +383,9 @@ my $server = Net::WebSocket::Server->new(
$conn->send_utf8('{"info":"pool cleared", "request":"update"}');
}
if ($messageData->{action} =~ /muligan/) {
my @cards = delHand($conn->{session},$messageData->{hand});
my @cards = delHand($conn->{session},$conn->{user},$messageData->{hand});
addCards($conn->{session},$messageData->{deck},\@cards);
addHand($conn->{session},$messageData->{hand});
addHand($conn->{session},$conn->{user},$messageData->{hand});
$conn->send_utf8('{"info":"hand returned to deck","request":"update"}');
}
if ($messageData->{action} =~ /shuffle/) {