summary refs log tree commit diff
diff options
context:
space:
mode:
authorJune McEnroe <june@causal.agency>2020-03-31 21:23:24 -0400
committerJune McEnroe <june@causal.agency>2020-03-31 21:23:24 -0400
commit6d04f4616163412f2c2d1a936986c77e920b5f06 (patch)
tree8edf7b87a00dabaacdc0913c64f1e9ac6e659cde
parentAdd 'cards/' from commit 'daf6fd1d716aad3c03b6dadbbd7a4b724acbfece' (diff)
downloadwep-6d04f4616163412f2c2d1a936986c77e920b5f06.tar.gz
wep-6d04f4616163412f2c2d1a936986c77e920b5f06.zip
Allow choosing freecell game on command line
-rw-r--r--freecell.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/freecell.c b/freecell.c
index 3f1ec8d..06276d3 100644
--- a/freecell.c
+++ b/freecell.c
@@ -341,8 +341,8 @@ static enum Choice chooseMove(void) {
 	return choice;
 }
 
-static void newGame(void) {
-	uint game = 1 + randUniform(32000);
+static void newGame(uint game) {
+	if (!game) game = 1 + randUniform(32000);
 	deal(game);
 	char buf[sizeof("FreeCell Game #32000")];
 	snprintf(buf, sizeof(buf), "FreeCell Game #%u", game);
@@ -355,7 +355,7 @@ static uint fromStack = StacksLen;
 
 static bool keyDown(SDL_KeyboardEvent key) {
 	switch (key.keysym.sym) {
-		case SDLK_F2: newGame(); return true;
+		case SDLK_F2: newGame(0); return true;
 		case SDLK_BACKSPACE: return undo();
 	}
 	if (key.repeat) return false;
@@ -399,7 +399,7 @@ static bool mouseButtonDown(SDL_MouseButtonEvent button) {
 
 static bool mouseButtonUp(SDL_MouseButtonEvent button) {
 	if (win() && playAgain()) {
-		newGame();
+		newGame(0);
 		return true;
 	}
 
@@ -524,7 +524,7 @@ static void renderStacks(void) {
 	}
 }
 
-int main(void) {
+int main(int argc, char *argv[]) {
 	int error;
 
 	if (SDL_Init(SDL_INIT_VIDEO) < 0) err("SDL_Init");
@@ -592,7 +592,7 @@ int main(void) {
 	}
 
 	srand(time(NULL));
-	newGame();
+	newGame(argc > 1 ? strtoul(argv[1], NULL, 10) : 0);
 	
 	initRects();
 	for (;;) {