servicepoint-idle/src/main.rs

58 lines
1.6 KiB
Rust

use game::Game;
use servicepoint::{
BinaryOperation, BitVecCommand, Bitmap, CharGrid, CharGridCommand, ClearCommand,
CompressionCode, DisplayBitVec, FRAME_PACING, GridMut, TILE_HEIGHT, TILE_WIDTH, UdpSocketExt,
};
use std::thread::sleep;
use std::{net::UdpSocket, time::Instant};
mod bar;
mod border_panel;
mod game;
mod row;
mod unlocks;
type Currency = f64;
//const DESTINATION: &str = "127.0.0.1:2342";
const DESTINATION: &str = "172.23.42.29:2342";
fn main() {
env_logger::init();
let mut state = Game::new();
let connection = UdpSocket::bind_connect(DESTINATION).unwrap();
connection.send_command(ClearCommand);
let mut pixels = Bitmap::max_sized();
let mut chars_cmd = CharGridCommand::from(CharGrid::new(TILE_WIDTH, TILE_HEIGHT));
let mut last_refresh = Instant::now();
loop {
let current_time = Instant::now();
let delta = current_time - last_refresh;
last_refresh = current_time;
state.progress(delta);
let chars = &mut chars_cmd.grid;
chars.fill(' ');
pixels.fill(false);
let chars_view = chars.window_mut(.., ..).unwrap();
let pixels_view = pixels.window_mut(.., ..).unwrap();
state.draw(chars_view, pixels_view);
connection.send_command(&chars_cmd).unwrap();
connection
.send_command(BitVecCommand {
offset: 0,
bitvec: DisplayBitVec::from(pixels.clone()),
operation: BinaryOperation::Or,
compression: CompressionCode::default(),
})
.unwrap();
sleep(FRAME_PACING * 2);
}
}