atagen

jelq

public

an http based roguelike rpg about jelqing

Star0
Watch0
27256acf27800b63fd950b95ecc55b2a2486c1c5
1
ssh://brewery@pls.lobotomise.me:33/atagen/jelq.git

Blame: src/game/measure.rs

8b8e83329a1datagen2026-10-12 12:01 UTC1
use axum::http::StatusCode;
6619c458c23eatagen2026-10-14 08:08 UTC2
use serde_json::json;
8b8e83329a1datagen2026-10-12 12:01 UTC3
8b8e83329a1datagen2026-10-12 12:01 UTC4
use super::{
8b8e83329a1datagen2026-10-12 12:01 UTC5
    Outcome, Run,
6619c458c23eatagen2026-10-14 08:08 UTC6
    balance::{HONEST_TOLERANCE, PUT_GAIN},
8b8e83329a1datagen2026-10-12 12:01 UTC7
};
8b8e83329a1datagen2026-10-12 12:01 UTC8
use crate::problem::Problem;
8b8e83329a1datagen2026-10-12 12:01 UTC9
8b8e83329a1datagen2026-10-12 12:01 UTC10
pub fn round2(x: f64) -> f64 {
8b8e83329a1datagen2026-10-12 12:01 UTC11
    (x * 100.0).round() / 100.0
8b8e83329a1datagen2026-10-12 12:01 UTC12
}
8b8e83329a1datagen2026-10-12 12:01 UTC13
8b8e83329a1datagen2026-10-12 12:01 UTC14
pub(super) fn round3(x: f64) -> f64 {
8b8e83329a1datagen2026-10-12 12:01 UTC15
    (x * 1000.0).round() / 1000.0
8b8e83329a1datagen2026-10-12 12:01 UTC16
}
8b8e83329a1datagen2026-10-12 12:01 UTC17
8b8e83329a1datagen2026-10-12 12:01 UTC18
pub(super) fn honest(claimed: f64, actual: f64) -> bool {
8b8e83329a1datagen2026-10-12 12:01 UTC19
    (claimed - actual).abs() < HONEST_TOLERANCE
8b8e83329a1datagen2026-10-12 12:01 UTC20
}
8b8e83329a1datagen2026-10-12 12:01 UTC21
8b8e83329a1datagen2026-10-12 12:01 UTC22
/// A cylinder whose circumference is the girth.
8b8e83329a1datagen2026-10-12 12:01 UTC23
pub fn volume(length: f64, girth: f64) -> f64 {
8b8e83329a1datagen2026-10-12 12:01 UTC24
    girth * girth * length / (4.0 * std::f64::consts::PI)
8b8e83329a1datagen2026-10-12 12:01 UTC25
}
8b8e83329a1datagen2026-10-12 12:01 UTC26
8b8e83329a1datagen2026-10-12 12:01 UTC27
pub fn shaft(mm: usize) -> String {
8b8e83329a1datagen2026-10-12 12:01 UTC28
    format!("8{}D", "=".repeat(mm.saturating_sub(2)))
8b8e83329a1datagen2026-10-12 12:01 UTC29
}
8b8e83329a1datagen2026-10-12 12:01 UTC30
8b8e83329a1datagen2026-10-12 12:01 UTC31
pub(super) fn exaggeration() -> Problem {
8b8e83329a1datagen2026-10-12 12:01 UTC32
    Problem::new(
8b8e83329a1datagen2026-10-12 12:01 UTC33
        StatusCode::BAD_REQUEST,
8b8e83329a1datagen2026-10-12 12:01 UTC34
        "exaggeration",
8b8e83329a1datagen2026-10-12 12:01 UTC35
        "The server has measured. Lying is not a technique.",
8b8e83329a1datagen2026-10-12 12:01 UTC36
    )
8b8e83329a1datagen2026-10-12 12:01 UTC37
}
8b8e83329a1datagen2026-10-12 12:01 UTC38
8b8e83329a1datagen2026-10-12 12:01 UTC39
impl Run {
8b8e83329a1datagen2026-10-12 12:01 UTC40
    pub fn put(&mut self) -> Outcome {
8b8e83329a1datagen2026-10-12 12:01 UTC41
        if self.body.put_applied {
8b8e83329a1datagen2026-10-12 12:01 UTC42
            return Outcome::empty(StatusCode::NO_CONTENT);
8b8e83329a1datagen2026-10-12 12:01 UTC43
        }
8b8e83329a1datagen2026-10-12 12:01 UTC44
        self.body.put_applied = true;
8b8e83329a1datagen2026-10-12 12:01 UTC45
        self.body.length += PUT_GAIN;
8b8e83329a1datagen2026-10-12 12:01 UTC46
        self.touch();
8b8e83329a1datagen2026-10-12 12:01 UTC47
        Outcome::json(StatusCode::OK, json!({ "detail": "Applied." }))
8b8e83329a1datagen2026-10-12 12:01 UTC48
    }
8b8e83329a1datagen2026-10-12 12:01 UTC49
}