Compare commits
2 commits
187020fc27
...
48b5b3f3c7
Author | SHA1 | Date | |
---|---|---|---|
48b5b3f3c7 | |||
2a0483c156 |
4 changed files with 22 additions and 10 deletions
|
@ -3,6 +3,10 @@ Game store page: https://crispypin.itch.io/marble-machinations
|
|||
|
||||
## [unreleased]
|
||||
|
||||
## v0.3.1 - 2025-04-05
|
||||
### fixed
|
||||
- broken area calculation causing crash when completing a level with a machine wider than it is tall
|
||||
|
||||
## v0.3.0 - 2025-04-04
|
||||
### added
|
||||
- score number: bounding area
|
||||
|
|
4
Cargo.lock
generated
4
Cargo.lock
generated
|
@ -1,6 +1,6 @@
|
|||
# This file is automatically @generated by Cargo.
|
||||
# It is not intended for manual editing.
|
||||
version = 3
|
||||
version = 4
|
||||
|
||||
[[package]]
|
||||
name = "aho-corasick"
|
||||
|
@ -213,7 +213,7 @@ checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24"
|
|||
|
||||
[[package]]
|
||||
name = "marble-machinations"
|
||||
version = "0.3.0"
|
||||
version = "0.3.1"
|
||||
dependencies = [
|
||||
"arboard",
|
||||
"raylib",
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
[package]
|
||||
name = "marble-machinations"
|
||||
version = "0.3.0"
|
||||
version = "0.3.1"
|
||||
edition = "2021"
|
||||
default-run = "marble-machinations"
|
||||
|
||||
|
|
|
@ -124,9 +124,9 @@ impl Grid {
|
|||
}
|
||||
|
||||
pub fn used_bounds_area(&self) -> usize {
|
||||
let row_clear = |a, max, f: fn(usize, usize) -> (usize, usize)| {
|
||||
for b in 0..max {
|
||||
if !self.get_unchecked(f(a, b).into()).is_blank() {
|
||||
let row_clear = |y| {
|
||||
for x in 0..self.width {
|
||||
if !self.get_unchecked((x, y).into()).is_blank() {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@ -134,29 +134,37 @@ impl Grid {
|
|||
};
|
||||
let mut height = self.height;
|
||||
for y in 0..self.height {
|
||||
if row_clear(y, self.width, |y, x| (x, y)) {
|
||||
if row_clear(y) {
|
||||
height -= 1;
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
for y in (0..self.height).rev() {
|
||||
if row_clear(y, self.width, |y, x| (x, y)) {
|
||||
if row_clear(y) {
|
||||
height -= 1;
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
let col_clear = |x| {
|
||||
for y in 0..self.height {
|
||||
if !self.get_unchecked((x, y).into()).is_blank() {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
true
|
||||
};
|
||||
let mut width = self.width;
|
||||
for x in 0..self.width {
|
||||
if row_clear(x, self.height, |x, y| (x, y)) {
|
||||
if col_clear(x) {
|
||||
width -= 1;
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
for x in (0..self.width).rev() {
|
||||
if row_clear(x, self.width, |x, y| (x, y)) {
|
||||
if col_clear(x) {
|
||||
width -= 1;
|
||||
} else {
|
||||
break;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue