Compare commits
4 Commits
35067f824e
...
a99c27cb87
Author | SHA1 | Date |
---|---|---|
LeRoyce Pearson | a99c27cb87 | |
LeRoyce Pearson | 57a09e8830 | |
LeRoyce Pearson | d6a1438f98 | |
LeRoyce Pearson | 30eefb5279 |
30
src/main.zig
30
src/main.zig
|
@ -335,8 +335,14 @@ fn render(window: *seizer.Window) !void {
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
|
const is_selected = selected_deck != null and selected_deck.? == &draw_pile;
|
||||||
const is_hovered = hovered_deck != null and hovered_deck.? == &draw_pile;
|
const is_hovered = hovered_deck != null and hovered_deck.? == &draw_pile;
|
||||||
const color = if (is_hovered) [4]u8{ 0xA0, 0xFF, 0xA0, 0xFF } else [4]u8{ 0xFF, 0xFF, 0xFF, 0xFF };
|
const color = if (is_selected)
|
||||||
|
[4]u8{ 0xFF, 0xA0, 0xA0, 0xFF }
|
||||||
|
else if (is_hovered)
|
||||||
|
[4]u8{ 0xA0, 0xFF, 0xA0, 0xFF }
|
||||||
|
else
|
||||||
|
[4]u8{ 0xFF, 0xFF, 0xFF, 0xFF };
|
||||||
|
|
||||||
var pos = [2]f32{ @floatFromInt(margin), @floatFromInt(margin) };
|
var pos = [2]f32{ @floatFromInt(margin), @floatFromInt(margin) };
|
||||||
pos[0] += board_offset[0];
|
pos[0] += board_offset[0];
|
||||||
|
@ -466,7 +472,12 @@ pub fn doSelectOrPlace(pressed: bool) !void {
|
||||||
if ((empty and ace) or (suit_matches and is_next_rank)) {
|
if ((empty and ace) or (suit_matches and is_next_rank)) {
|
||||||
foundation.ensureUnusedCapacity(gpa, 1) catch continue;
|
foundation.ensureUnusedCapacity(gpa, 1) catch continue;
|
||||||
foundation.appendAssumeCapacity(selected_deck.?.pop());
|
foundation.appendAssumeCapacity(selected_deck.?.pop());
|
||||||
hovered_card = indexOfTopOfStack(hovered_deck.?.items);
|
|
||||||
|
hovered_card = if (hovered_deck.? == &drawn_cards)
|
||||||
|
hovered_deck.?.items.len -| 1
|
||||||
|
else
|
||||||
|
indexOfTopOfStack(hovered_deck.?.items);
|
||||||
|
|
||||||
cards_moved = true;
|
cards_moved = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -475,9 +486,13 @@ pub fn doSelectOrPlace(pressed: bool) !void {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
try history.append(gpa, snapshot);
|
if (cards_moved) {
|
||||||
|
try history.append(gpa, snapshot);
|
||||||
|
}
|
||||||
|
|
||||||
selected_deck = null;
|
selected_deck = null;
|
||||||
} else {
|
} else {
|
||||||
|
var cards_moved = false;
|
||||||
const snapshot = try Snapshot.initFromCurrentGlobalState();
|
const snapshot = try Snapshot.initFromCurrentGlobalState();
|
||||||
if (selected_deck) |selected| move_from_selected_to_hovered: {
|
if (selected_deck) |selected| move_from_selected_to_hovered: {
|
||||||
const selected_substack = selected.items[selected_card..];
|
const selected_substack = selected.items[selected_card..];
|
||||||
|
@ -492,7 +507,7 @@ pub fn doSelectOrPlace(pressed: bool) !void {
|
||||||
hovered.appendSliceAssumeCapacity(selected_substack);
|
hovered.appendSliceAssumeCapacity(selected_substack);
|
||||||
selected.shrinkRetainingCapacity(selected.items.len - selected_substack.len);
|
selected.shrinkRetainingCapacity(selected.items.len - selected_substack.len);
|
||||||
hovered_card = indexOfTopOfStack(hovered_deck.?.items);
|
hovered_card = indexOfTopOfStack(hovered_deck.?.items);
|
||||||
try history.append(gpa, snapshot);
|
cards_moved = true;
|
||||||
break :move_from_selected_to_hovered;
|
break :move_from_selected_to_hovered;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -513,7 +528,7 @@ pub fn doSelectOrPlace(pressed: bool) !void {
|
||||||
foundation.ensureUnusedCapacity(gpa, 1) catch continue;
|
foundation.ensureUnusedCapacity(gpa, 1) catch continue;
|
||||||
foundation.appendAssumeCapacity(selected_deck.?.pop());
|
foundation.appendAssumeCapacity(selected_deck.?.pop());
|
||||||
hovered_card = indexOfTopOfStack(hovered_deck.?.items);
|
hovered_card = indexOfTopOfStack(hovered_deck.?.items);
|
||||||
try history.append(gpa, snapshot);
|
cards_moved = true;
|
||||||
break :move_from_selected_to_hovered;
|
break :move_from_selected_to_hovered;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -523,7 +538,7 @@ pub fn doSelectOrPlace(pressed: bool) !void {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (hovered.items[hovered.items.len - 1].rank - 1 != selected_substack[0].rank or
|
if (hovered.items[hovered.items.len - 1].rank - 1 != selected_substack[0].rank or
|
||||||
hovered.items[hovered.items.len - 1].suit == selected_substack[0].suit)
|
hovered.items[hovered.items.len - 1].suit.color() == selected_substack[0].suit.color())
|
||||||
{
|
{
|
||||||
break :move_from_selected_to_hovered;
|
break :move_from_selected_to_hovered;
|
||||||
}
|
}
|
||||||
|
@ -531,6 +546,9 @@ pub fn doSelectOrPlace(pressed: bool) !void {
|
||||||
hovered.appendSliceAssumeCapacity(selected_substack);
|
hovered.appendSliceAssumeCapacity(selected_substack);
|
||||||
selected.shrinkRetainingCapacity(selected.items.len - selected_substack.len);
|
selected.shrinkRetainingCapacity(selected.items.len - selected_substack.len);
|
||||||
hovered_card = indexOfTopOfStack(hovered_deck.?.items);
|
hovered_card = indexOfTopOfStack(hovered_deck.?.items);
|
||||||
|
cards_moved = true;
|
||||||
|
}
|
||||||
|
if (cards_moved) {
|
||||||
try history.append(gpa, snapshot);
|
try history.append(gpa, snapshot);
|
||||||
}
|
}
|
||||||
selected_deck = null;
|
selected_deck = null;
|
||||||
|
|
Loading…
Reference in New Issue