about summary refs log tree commit diff
path: root/stack.h
diff options
context:
space:
mode:
authorJune McEnroe <june@causal.agency>2019-03-24 00:08:11 -0400
committerJune McEnroe <june@causal.agency>2019-03-24 00:08:11 -0400
commit248e66cdb112b4881f7a56c6508f3ef61ea7e3cb (patch)
tree8b8e7bf238a5395701c35da2977789c49b646bd4 /stack.h
parentTreat multiple-of-two-clicks as double-clicks (diff)
downloadcards-248e66cdb112b4881f7a56c6508f3ef61ea7e3cb.tar.gz
cards-248e66cdb112b4881f7a56c6508f3ef61ea7e3cb.zip
Factor out suit, color and rank functions
I plan to implement other solitaire games.
Diffstat (limited to 'stack.h')
-rw-r--r--stack.h24
1 files changed, 24 insertions, 0 deletions
diff --git a/stack.h b/stack.h
index e85c43f..a635e8c 100644
--- a/stack.h
+++ b/stack.h
@@ -19,6 +19,30 @@
 
 #include <SDL_stdinc.h>
 #include <assert.h>
+#include <stdlib.h>
+
+#include "cards.h"
+
+static Sint8 cardSuit(Sint8 card) {
+	card = abs(card);
+	if (card > Cards_Spade) {
+		return Cards_Spade;
+	} else if (card > Cards_Heart) {
+		return Cards_Heart;
+	} else if (card > Cards_Diamond) {
+		return Cards_Diamond;
+	} else {
+		return Cards_Club;
+	}
+}
+
+static Sint8 cardColor(Sint8 card) {
+	return cardSuit(card) == Cards_Diamond || cardSuit(card) == Cards_Heart;
+}
+
+static Sint8 cardRank(Sint8 card) {
+	return abs(card) - cardSuit(card);
+}
 
 struct Stack {
 	Uint8 len;