Added client side hooks for drawing, playing, and reaping cards

This commit is contained in:
bluesaxman 2020-09-14 15:10:19 -06:00
parent 736f6e6354
commit 3fd5773a14

View File

@ -129,7 +129,7 @@ sub addPool {
sub delPool { sub delPool {
my ($sessionID,$poolID) = @_; my ($sessionID,$poolID) = @_;
my @reapedCards = splice($sessions{$sessionID}{"pools"}{$poolID}{cards}); my @reapedCards = splice(@{$sessions{$sessionID}{"pools"}{$poolID}{cards}});
delete($sessions{$sessionID}{"pools"}{$poolID}); delete($sessions{$sessionID}{"pools"}{$poolID});
return @reapedCards; return @reapedCards;
} }
@ -189,7 +189,7 @@ sub addHand {
sub delHand { sub delHand {
my ($sessionID, $userID, $handID) = @_; my ($sessionID, $userID, $handID) = @_;
my @leftoverCards = splice($sessions{$sessionID}{"users"}{$userID}->{hands}{$handID}->{cards}); my @leftoverCards = splice(@{$sessions{$sessionID}{"users"}{$userID}->{hands}{$handID}->{cards}});
delete($sessions{$sessionID}{"users"}{$userID}{hands}{$handID}); delete($sessions{$sessionID}{"users"}{$userID}{hands}{$handID});
return @leftoverCards; return @leftoverCards;
} }
@ -239,7 +239,7 @@ sub delUser {
sub getDeckSize { sub getDeckSize {
my ($sessionID, $deckID) = @_; my ($sessionID, $deckID) = @_;
return length $sessions{$sessionID}{"decks"}{$deckID}->{cards}; return scalar @{$sessions{$sessionID}{"decks"}{$deckID}->{cards}};
} }
sub getPoolTop { sub getPoolTop {
@ -332,7 +332,7 @@ my $server = Net::WebSocket::Server->new(
} }
$current->send_utf8('{"pools":'.to_json(\%poolStats).'}'); $current->send_utf8('{"pools":'.to_json(\%poolStats).'}');
# Users Hands # Users Hands
my @hands = getHands($sessionID,$conn->{user}); my @hands = getHands($sessionID,$_->{user});
my %handStats = (); my %handStats = ();
for (@hands) { for (@hands) {
$handStats{$_}{name} = $_; $handStats{$_}{name} = $_;
@ -342,7 +342,7 @@ my $server = Net::WebSocket::Server->new(
# for each hand # for each hand
for (@hands) { for (@hands) {
my $handID = $_; my $handID = $_;
my @hand = @{$sessions{$sessionID}{"users"}{$conn->{user}}{hands}{$handID}{cards}}; my @hand = @{$sessions{$sessionID}{"users"}{$current->{user}}{hands}{$handID}{cards}};
# each card (so we scale better) # each card (so we scale better)
if (@hand) { for (@hand) { if (@hand) { for (@hand) {
my $card = $_; my $card = $_;
@ -350,6 +350,20 @@ my $server = Net::WebSocket::Server->new(
}} }}
} }
}}} }}}
if ($messageData->{action} =~ /draw/) {
drawCard($conn->{session},$messageData->{deck},$conn->{user},$messageData->{hand});
$conn->send_utf8('{"info":"card drawn", "request":"update"}');
}
if ($messageData->{action} =~ /play/) {
playCard($conn->{session},$conn->{user},$messageData->{hand},$messageData->{cardID},$messageData->{pool});
$conn->send_utf8('{"info":"card played", "request":"update"}');
}
if ($messageData->{action} =~ /clear/) {
my @cards = delPool($conn->{session},$messageData->{pool});
addCards($conn->{session},$messageData->{deck},\@cards);
addPool($conn->{session},$messageData->{pool});
$conn->send_utf8('{"info":"pool cleared", "request":"update"}');
}
} }
}, },
disconnect => sub { disconnect => sub {