Compare commits
No commits in common. "187020fc2772e5de3e89fa9877fd6777ad5d246d" and "8425e8925463b8c8f90fdd3d0b2289e40e80a52e" have entirely different histories.
187020fc27
...
8425e89254
5 changed files with 27 additions and 44 deletions
|
@ -1,13 +1,11 @@
|
||||||
# Marble Machinations Change Log
|
# Marble Machinations Change Log
|
||||||
Game store page: https://crispypin.itch.io/marble-machinations
|
Game store page: https://crispypin.itch.io/marble-machinations
|
||||||
|
|
||||||
## [unreleased]
|
## [Unreleased]
|
||||||
|
|
||||||
## v0.3.0 - 2025-04-04
|
|
||||||
### added
|
### added
|
||||||
- score number: bounding area
|
- score number: bounding area
|
||||||
- configurable key bindings for many editor actions
|
- configurable key bindings for many editor actions
|
||||||
- QWERTY+ASDFGH keybindings for the tile tools by default
|
- QWERTY+ASDFGH keybindings for the tile tools
|
||||||
- OS clipboard copy/paste, with fallback to old behavior when copying
|
- OS clipboard copy/paste, with fallback to old behavior when copying
|
||||||
- cut selection
|
- cut selection
|
||||||
- in-grid text comments (not yet editable in-game)
|
- in-grid text comments (not yet editable in-game)
|
||||||
|
|
2
Cargo.lock
generated
2
Cargo.lock
generated
|
@ -213,7 +213,7 @@ checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "marble-machinations"
|
name = "marble-machinations"
|
||||||
version = "0.3.0"
|
version = "0.2.1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"arboard",
|
"arboard",
|
||||||
"raylib",
|
"raylib",
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
[package]
|
[package]
|
||||||
name = "marble-machinations"
|
name = "marble-machinations"
|
||||||
version = "0.3.0"
|
version = "0.2.1"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
default-run = "marble-machinations"
|
default-run = "marble-machinations"
|
||||||
|
|
||||||
|
|
13
README.md
13
README.md
|
@ -8,26 +8,20 @@ logic mostly like https://git.crispypin.cc/CrispyPin/marble
|
||||||
### meta
|
### meta
|
||||||
- engine tests
|
- engine tests
|
||||||
- blag post about marble movement logic
|
- blag post about marble movement logic
|
||||||
### bugs
|
### game
|
||||||
- modifier-less bindings trigger when typing in a text box, makes renaming existing blueprints basically impossible
|
|
||||||
### features
|
|
||||||
- comments
|
- comments
|
||||||
- editing
|
- editing
|
||||||
- add to all intro levels
|
- add to all intro levels
|
||||||
- highlight regions with background colours
|
|
||||||
- UI layout engine
|
- UI layout engine
|
||||||
- global scale setting
|
- global scale setting
|
||||||
- button + binding to flip selection that is being pasted
|
- highlight regions with background colours
|
||||||
- accessibility
|
- accessibility
|
||||||
- background colour setting
|
- background colour setting
|
||||||
- hotkeys for everything (no mouse needed to play)
|
- hotkeys for everything (no mouse needed to play)
|
||||||
- menu navigation (requires UI rework)
|
|
||||||
- speed up/down
|
|
||||||
- grid cursor movement and placement
|
|
||||||
- grid zoom and pan
|
|
||||||
- more levels
|
- more levels
|
||||||
- scroll output bytes
|
- scroll output bytes
|
||||||
- timestamps in solutions and blueprints
|
- timestamps in solutions and blueprints
|
||||||
|
- lock tile types for early levels to make it less overwhelming
|
||||||
- display tool variant more clearly (it's not obvious there are more states)
|
- display tool variant more clearly (it's not obvious there are more states)
|
||||||
- better text rendering
|
- better text rendering
|
||||||
- font selection (probably a lot of work)
|
- font selection (probably a lot of work)
|
||||||
|
@ -37,7 +31,6 @@ logic mostly like https://git.crispypin.cc/CrispyPin/marble
|
||||||
- show histograms
|
- show histograms
|
||||||
- author name in solutions and blueprints
|
- author name in solutions and blueprints
|
||||||
### undecided
|
### undecided
|
||||||
- hide some tile tools in early levels to make it less overwhelming
|
|
||||||
- footprint score (tiles that were non-empty at any point in the run)
|
- footprint score (tiles that were non-empty at any point in the run)
|
||||||
- option to use 8-bit marbles?
|
- option to use 8-bit marbles?
|
||||||
- blueprint rotation?
|
- blueprint rotation?
|
||||||
|
|
|
@ -1,35 +1,27 @@
|
||||||
use marble_machinations::marble_engine::{grid::Grid, Machine};
|
use marble_machinations::marble_engine::{grid::Grid, Machine};
|
||||||
|
|
||||||
fn no_input_test(steps: usize, output: &[u8], grid: &str) {
|
|
||||||
let mut engine = Machine::new_empty();
|
|
||||||
engine.set_grid(Grid::from_ascii(grid));
|
|
||||||
for _ in 0..(steps - 1) {
|
|
||||||
engine.step();
|
|
||||||
}
|
|
||||||
assert_ne!(engine.output(), output, "output arrived early");
|
|
||||||
engine.step();
|
|
||||||
assert_eq!(engine.output(), output, "expected output");
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn creating_marbles_cause_indirect_claim() {
|
fn creating_marbles_cause_indirect_claim() {
|
||||||
no_input_test(3, &[1], " o \n|-*-|\n| 1 |\n-B B-\n I\n");
|
let mut eng = Machine::new_empty();
|
||||||
}
|
eng.set_grid(Grid::from_ascii(
|
||||||
|
"
|
||||||
|
I
|
||||||
|
o 2
|
||||||
|
B- o
|
||||||
|
B | |-*-|
|
||||||
|
|-+o | |
|
||||||
|
*-| |* -B B-
|
||||||
|
|
||||||
#[test]
|
1 3
|
||||||
fn bug_overlapping_marble_creation_blocks_tile_forever() {
|
|
||||||
no_input_test(
|
|
||||||
7,
|
|
||||||
&[1, 2, 3],
|
|
||||||
" I \no 3 o\n2I B+*\n B |1\n |-+\n*-| I\n\nI\n",
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn bug_equal_comparator_order_lock() {
|
|
||||||
no_input_test(
|
|
||||||
6,
|
I I
|
||||||
&[1, 2, 3, 4],
|
",
|
||||||
"I \n I\n21\n o\nBB|*-++\n|=+ |=-\n |+ BB\n\n 34\n\n I\n I\n",
|
));
|
||||||
);
|
for _ in 0..9 {
|
||||||
|
eng.step();
|
||||||
|
}
|
||||||
|
assert_eq!(eng.output(), [1, 2, 3]);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue