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); } }