43 lines
1,018 B
Rust
43 lines
1,018 B
Rust
use crate::command_queue::PacketQueue;
|
|
use bar::Bar;
|
|
use game_state::GameState;
|
|
use servicepoint::{ClearCommand, Origin, UdpSocketExt};
|
|
use std::net::UdpSocket;
|
|
use std::time::{Duration, Instant};
|
|
|
|
mod bar;
|
|
mod command_queue;
|
|
mod game_state;
|
|
mod label;
|
|
|
|
type Currency = f64;
|
|
|
|
trait Progressable: Sized {
|
|
#[must_use]
|
|
fn progress(&self, delta: Duration) -> (Self, Currency);
|
|
}
|
|
|
|
trait GenerateCommands {
|
|
fn generate_commands(&self, queue: &mut impl PacketQueue);
|
|
}
|
|
|
|
fn main() {
|
|
let mut state = GameState {
|
|
currency: 0f64,
|
|
first_step: Bar::new(1f64, Origin::new(0, 1)),
|
|
};
|
|
|
|
let mut connection = UdpSocket::bind_connect("127.0.0.1:2342").unwrap();
|
|
|
|
let mut last_refresh = Instant::now();
|
|
loop {
|
|
let current_time = Instant::now();
|
|
let delta = current_time - last_refresh;
|
|
last_refresh = current_time;
|
|
|
|
(state, _) = state.progress(delta);
|
|
|
|
connection.send_command(ClearCommand);
|
|
state.generate_commands(&mut connection);
|
|
}
|
|
}
|