summary refs log tree commit diff
path: root/sol.c
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--sol.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/sol.c b/sol.c
index 1933716..b4a323f 100644
--- a/sol.c
+++ b/sol.c
@@ -117,7 +117,7 @@ static bool gameAvail(Card card) {
 	if (card < 0) return false;
 	if (!gameFind(&stack, &index, card)) return false;
 
-	bool top = (index == stacks[stack].len - 1);
+	bool top = (card == stackTop(&stacks[stack]));
 	if (stack == Waste1) {
 		return top && !stacks[Waste3].len;
 	} else if (stack == Waste3) {
@@ -135,7 +135,7 @@ static bool gameReveal(Card card) {
 	uint stack, index;
 	if (!gameFind(&stack, &index, card)) return false;
 	if (stack < Tableau1 || stack > Tableau7) return false;
-	if (index != stacks[stack].len - 1) return false;
+	if (card != stackTop(&stacks[stack])) return false;
 	if (card > 0) return false;
 	gameDo(stackFlipTo, stack, stack, 1);
 	return true;
@@ -247,7 +247,8 @@ static void layoutCard(struct List **list, SDL_Rect *rect, Card card) {
 		*list = &layout.drag;
 		*rect = layout.dragItem.rect;
 	}
-	struct Item item = { *rect, (card > 0 ? card : layout.backTexture), card };
+	uint texture = (card > 0 ? (uint)card : layout.backTexture);
+	struct Item item = { *rect, texture, card };
 	listPush(*list, item);
 }