diff options
-rw-r--r-- | sol.c | 7 | ||||
-rw-r--r-- | stack.h | 2 |
2 files changed, 5 insertions, 4 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); } diff --git a/stack.h b/stack.h index 6267f23..d3a4119 100644 --- a/stack.h +++ b/stack.h @@ -65,7 +65,7 @@ static inline Card stackPop(struct Stack *stack) { return stack->cards[--stack->len]; } -static inline Card stackTop(struct Stack *stack) { +static inline Card stackTop(const struct Stack *stack) { if (!stack->len) return 0; return stack->cards[stack->len - 1]; } |