summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorstale <redkugelblitzin@gmail.com>2022-07-12 23:44:53 -0300
committerstale <redkugelblitzin@gmail.com>2022-07-12 23:44:53 -0300
commit0aeda028a1b512a65b51a199225290839a3a5f94 (patch)
tree0876401cd3193890d1bdb74705778704b87a8edb /src
parent48d5ee756ea72d994ed2a27641894ad0c41dab1c (diff)
number tile room option, version bump
Diffstat (limited to 'src')
-rw-r--r--src/main.rs6
-rw-r--r--src/minesweeper.rs5
2 files changed, 8 insertions, 3 deletions
diff --git a/src/main.rs b/src/main.rs
index c884dbc..0c81844 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -309,7 +309,7 @@ async fn empty_rooms(rooms: &RoomMap) -> Vec<RoomId> {
}
fn room_from_form(uid: RoomId, rinfo: &HashMap<String,String>, conf: &Conf) -> Result<(types::Room, bool), Rejection> {
- if let (Some(w),Some(h),Some(num),Some(denom),public,asfm,rborders,revealol,Some(limit)) = (
+ if let (Some(w),Some(h),Some(num),Some(denom),public,asfm,rborders,revealol,ntiler,Some(limit)) = (
rinfo.get("bwidth").and_then(|w| w.parse::<NonZeroUsize>().ok()),
rinfo.get("bheight").and_then(|h| h.parse::<NonZeroUsize>().ok()),
rinfo.get("mineratio-n").and_then(|n| n.parse::<usize>().ok()),
@@ -318,6 +318,7 @@ fn room_from_form(uid: RoomId, rinfo: &HashMap<String,String>, conf: &Conf) -> R
rinfo.get("allsafe1move").map(|s| s == "on").unwrap_or(false),
rinfo.get("rborders").map(|s| s == "on").unwrap_or(false),
rinfo.get("revealonlose").map(|s| s == "on").unwrap_or(false),
+ rinfo.get("numtilereveal").map(|s| s == "on").unwrap_or(false),
rinfo.get("limit").and_then(|l| l.parse::<NonZeroUsize>().ok()),
) {
if w.get()*h.get() > conf.limits.board_area {
@@ -325,7 +326,8 @@ fn room_from_form(uid: RoomId, rinfo: &HashMap<String,String>, conf: &Conf) -> R
}
let board_conf = minesweeper::BoardConf {
w, h, mine_ratio: (num,denom),
- always_safe_first_move: asfm, revealed_borders: rborders, reveal_on_lose: revealol
+ always_safe_first_move: asfm, revealed_borders: rborders,
+ reveal_on_lose: revealol, num_tile_reveal: ntiler,
};
let name = {
let n = rinfo.get("rname").unwrap().to_owned();
diff --git a/src/minesweeper.rs b/src/minesweeper.rs
index f4c5511..1e95f0d 100644
--- a/src/minesweeper.rs
+++ b/src/minesweeper.rs
@@ -35,6 +35,7 @@ pub struct BoardConf {
pub always_safe_first_move: bool,
pub revealed_borders: bool,
pub reveal_on_lose: bool,
+ pub num_tile_reveal: bool,
}
impl std::fmt::Display for BoardConf {
@@ -49,6 +50,7 @@ pub struct Board {
pub height: NonZeroUsize,
pub hidden_tiles: usize,
pub mine_count: usize,
+ pub num_tile_reveal: bool,
}
#[derive(Debug)]
pub enum MoveType {
@@ -120,6 +122,7 @@ impl Board {
height: h,
hidden_tiles: area,
mine_count,
+ num_tile_reveal: conf.num_tile_reveal,
};
if conf.revealed_borders {
let (w,h) = (w.get(),h.get());
@@ -210,7 +213,7 @@ impl Board {
pub fn reveal(&mut self, pos: BoardPos) -> bool {
if let Some(off) = pos.rel_offset(&self) {
let v = self.data[off];
- if 1 <= v && v <= 8 {
+ if self.num_tile_reveal && 1 <= v && v <= 8 {
self.reveal_numtile(pos)
} else {
self.flood_reveal(pos)