tested all functions and fixed reference and logic issues
This commit is contained in:
parent
df4572115f
commit
f73049a854
@ -13,16 +13,17 @@ my %sessions = ();
|
|||||||
|
|
||||||
sub generateSession {
|
sub generateSession {
|
||||||
my $newSession = shift;
|
my $newSession = shift;
|
||||||
unless (defined $newSession) { $newSession = time; }
|
unless (defined $newSession) { my $uniquifyer = sprintf("%.0f",rand()*1000); $newSession = time.$uniquifyer; }
|
||||||
if ( grep( /$newSession/, keys %sessions ) ) {
|
if ( grep( /$newSession/, keys %sessions ) ) {
|
||||||
generateSession();
|
return 0 #failur to create session
|
||||||
} else {
|
} else {
|
||||||
print "Adding session ".$newSession." to database\n";
|
print "Adding session ".$newSession." to database\n";
|
||||||
$sessions{$newSession} = ();
|
$sessions{$newSession} = {
|
||||||
$sessions{$newSession}{"id"} = $newSession;
|
"id" => $newSession,
|
||||||
$sessions{$newSession}{"users"} = ();
|
"users" => {},
|
||||||
$sessions{$newSession}{"decks"} = ();
|
"decks" => {},
|
||||||
$sessions{$newSession}{"pools"} = ();
|
"pools" => {},
|
||||||
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
return $newSession;
|
return $newSession;
|
||||||
@ -68,15 +69,34 @@ sub shuffle {
|
|||||||
$deck[$index] = $swapCard;
|
$deck[$index] = $swapCard;
|
||||||
$index++;
|
$index++;
|
||||||
}
|
}
|
||||||
return @deck;
|
return \@deck;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub shuffleDeck {
|
||||||
|
my ($sessionID, $deckID) = @_;
|
||||||
|
my @cards = @{$sessions{$sessionID}{"decks"}{$deckID}->{cards}};
|
||||||
|
$sessions{$sessionID}{"decks"}{$deckID}->{cards} = shuffle(@cards);
|
||||||
|
}
|
||||||
|
|
||||||
|
sub shufflePool {
|
||||||
|
my ($sessionID, $poolID) = @_;
|
||||||
|
my @cards = @{$sessions{$sessionID}{"pools"}{$poolID}->{cards}};
|
||||||
|
@{$sessions{$sessionID}{"pools"}{$poolID}->{cards}} = shuffle(@cards);;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub shuffleHand {
|
||||||
|
my ($sessionID, $userID, $handID) = @_;
|
||||||
|
my @cards = @{$sessions{$sessionID}{"users"}{$userID}->{hands}{$handID}->{cards}};
|
||||||
|
$sessions{$sessionID}{"users"}{$userID}->{hands}{$handID}->{cards} = shuffle(@cards);
|
||||||
}
|
}
|
||||||
|
|
||||||
sub addUser {
|
sub addUser {
|
||||||
my ($sessionID,$userID) = @_;
|
my ($sessionID,$userID) = @_;
|
||||||
%{$sessions{$sessionID}{"users"}{$userID}} = (
|
$sessions{$sessionID}{"users"}{$userID} = {
|
||||||
name => "$userID",
|
name => "$userID",
|
||||||
hands => ()
|
hands => {}
|
||||||
);
|
};
|
||||||
|
addHand($sessionID,$userID,"default");
|
||||||
}
|
}
|
||||||
|
|
||||||
sub addCards {
|
sub addCards {
|
||||||
@ -86,12 +106,12 @@ sub addCards {
|
|||||||
|
|
||||||
sub addDeck {
|
sub addDeck {
|
||||||
my ($sessionID,$deckID) = @_;
|
my ($sessionID,$deckID) = @_;
|
||||||
%{$sessions{$sessionID}{"decks"}{$deckID}} = ( name => "$deckID", cards => [] );
|
$sessions{$sessionID}{"decks"}{$deckID} = { name => "$deckID", cards => [] };
|
||||||
}
|
}
|
||||||
|
|
||||||
sub delDeck {
|
sub delDeck {
|
||||||
my ($sessionID,$deckID) = @_;
|
my ($sessionID,$deckID) = @_;
|
||||||
$sessions{$sessionID}{"decks"}{$deckID} = undef;
|
delete($sessions{$sessionID}{"decks"}{$deckID});
|
||||||
}
|
}
|
||||||
|
|
||||||
sub uploadDDF {
|
sub uploadDDF {
|
||||||
@ -101,25 +121,26 @@ sub uploadDDF {
|
|||||||
|
|
||||||
sub addPool {
|
sub addPool {
|
||||||
my ($sessionID,$poolID) = @_;
|
my ($sessionID,$poolID) = @_;
|
||||||
%{$sessions{$sessionID}{"pools"}{$poolID}} = ( name => "$poolID", cards => [] );
|
$sessions{$sessionID}{"pools"}{$poolID} = { name => "$poolID", cards => [] };
|
||||||
}
|
}
|
||||||
|
|
||||||
sub reapCards {
|
sub reapCards {
|
||||||
my $arrayRef = $_[0];
|
my $arrayRef = $_[0];
|
||||||
my @reapedCards = [];
|
my @reapedCards = ();
|
||||||
print "Reaping cards";
|
print "Reaping cards";
|
||||||
while(@{$arrayRef}) {
|
while(@{$arrayRef}) {
|
||||||
push(@reapedCards,shift(@{$arrayRef}));
|
push(@reapedCards,shift(@{$arrayRef}));
|
||||||
print ".";
|
print ".";
|
||||||
}
|
}
|
||||||
print "Done\n";
|
print "Done\nReaped:";
|
||||||
|
print join(", ",@reapedCards)."\n";
|
||||||
return @reapedCards;
|
return @reapedCards;
|
||||||
}
|
}
|
||||||
|
|
||||||
sub delPool {
|
sub delPool {
|
||||||
my ($sessionID,$poolID) = @_;
|
my ($sessionID,$poolID) = @_;
|
||||||
my @reapedCards = reapCards(\@{$sessions{$sessionID}{"pools"}{$poolID}->{cards}});
|
my @reapedCards = reapCards(\@{$sessions{$sessionID}{"pools"}{$poolID}->{cards}});
|
||||||
$sessions{$sessionID}{"pools"}{$poolID} = undef;
|
delete($sessions{$sessionID}{"pools"}{$poolID});
|
||||||
return @reapedCards;
|
return @reapedCards;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -140,32 +161,37 @@ sub getPools {
|
|||||||
|
|
||||||
sub addHand {
|
sub addHand {
|
||||||
my ($sessionID, $userID, $handID) = @_;
|
my ($sessionID, $userID, $handID) = @_;
|
||||||
%{$sessions{$sessionID}{"users"}{$userID}->{hands}{$handID}} = ( cards => [] );
|
$sessions{$sessionID}{"users"}{$userID}{hands}{$handID} = { cards => [] };
|
||||||
}
|
}
|
||||||
|
|
||||||
sub delHand {
|
sub delHand {
|
||||||
my ($sessionID, $userID, $handID) = @_;
|
my ($sessionID, $userID, $handID) = @_;
|
||||||
my @leftoverCards = reapCards(\@{$sessions{$sessionID}{"users"}{$userID}->{hands}{$handID}->{cards}});
|
my @leftoverCards = reapCards(\@{$sessions{$sessionID}{"users"}{$userID}->{hands}{$handID}->{cards}});
|
||||||
$sessions{$sessionID}{"users"}{$userID}->{hands}{$handID} = undef;
|
delete($sessions{$sessionID}{"users"}{$userID}{hands}{$handID});
|
||||||
return @leftoverCards;
|
return @leftoverCards;
|
||||||
}
|
}
|
||||||
|
|
||||||
sub getHands {
|
sub getHands {
|
||||||
my ($sessionID, $userID) = @_;
|
my ($sessionID, $userID) = @_;
|
||||||
return keys %{$sessions{$sessionID}{"users"}{$userID}->{hands}};
|
return keys %{$sessions{$sessionID}{"users"}{$userID}{hands}};
|
||||||
}
|
}
|
||||||
|
|
||||||
sub moveCard {
|
sub moveCard {
|
||||||
my ($originStackRef, $originIndex, $destStackRef, $destIndex) = @_;
|
my ($originStackRef, $originIndex, $destStackRef, $destIndex) = @_;
|
||||||
|
unless(defined($originStackRef)) { return print "ERROR: No Origin Stack\n"; }
|
||||||
|
unless(defined($originIndex)) { return print "ERROR: No Origin Index\n"; }
|
||||||
|
unless(defined($destStackRef)) { return print "ERROR: No Destination Stack\n"; }
|
||||||
|
unless(defined($destIndex)) { return print "ERROR: No Destination Index\n"; }
|
||||||
my $card = splice(@$originStackRef,$originIndex,1);
|
my $card = splice(@$originStackRef,$originIndex,1);
|
||||||
|
unless(defined($card)) { return print "ERROR: No Card available to be pulled\n"; }
|
||||||
splice(@$destStackRef,$destIndex,0,$card);
|
splice(@$destStackRef,$destIndex,0,$card);
|
||||||
}
|
}
|
||||||
|
|
||||||
sub drawCard {
|
sub drawCard {
|
||||||
my ($sessionID, $deckID, $userID, $handID) = @_;
|
my ($sessionID, $deckID, $userID, $handID) = @_;
|
||||||
moveCard(
|
moveCard(
|
||||||
\@{$sessions{$sessionID}{"decks"}{$deckID}->{cards}}, 0,
|
$sessions{$sessionID}{"decks"}{$deckID}->{cards}, 0,
|
||||||
\@{$sessions{$sessionID}{"users"}{$userID}->{hands}{$handID}->{cards}}, 0
|
$sessions{$sessionID}{"users"}{$userID}->{hands}{$handID}->{cards}, 0
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -179,11 +205,13 @@ sub playCard {
|
|||||||
|
|
||||||
sub delUser {
|
sub delUser {
|
||||||
my ($sessionID,$userID) = @_;
|
my ($sessionID,$userID) = @_;
|
||||||
my @hands = getHands($sessions{$sessionID}{"users"}{$userID}->{hands});
|
my @hands = getHands($sessionID,$userID);
|
||||||
|
my @reaped = ();
|
||||||
for (@hands) {
|
for (@hands) {
|
||||||
delHand($sessionID,$userID,$_);
|
push(@reaped,delHand($sessionID,$userID,$_));
|
||||||
}
|
}
|
||||||
$sessions{$sessionID}{"users"}{$userID} = undef;
|
delete($sessions{$sessionID}{"users"}{$userID});
|
||||||
|
return @reaped;
|
||||||
}
|
}
|
||||||
|
|
||||||
sub getDeckSize {
|
sub getDeckSize {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user