/* Hurry Curry! - a game about cooking Copyright 2024 metamuffin This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, version 3 of the License only. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ use anyhow::Result; use hurrycurry_client_lib::{network::sync::Network, Game}; use hurrycurry_protocol::{glam::Vec2, PacketC, PacketS, PlayerID}; use std::{thread::sleep, time::Duration}; fn main() -> Result<()> { let mut network = Network::connect("ws://127.0.0.1")?; let mut game = Game::default(); network.queue_out.push_back(PacketS::Join { name: "bot".to_string(), character: 1, }); let mut bots = Vec::new(); loop { let dt = 1. / 50.; network.poll()?; while let Some(packet) = network.queue_in.pop_front() { match &packet { PacketC::Joined { id } => bots.push(Bot::new(*id)), _ => (), } game.apply_packet(packet); } for b in &bots { network.queue_out.push_back(PacketS::Movement { player: b.id, dir: Vec2::ONE, boost: true, pos: None, }); } sleep(Duration::from_secs_f32(dt)); } } pub struct Bot { id: PlayerID, } impl Bot { pub fn new(id: PlayerID) -> Self { Self { id } } pub fn tick(&self, game: &Game) { if let Some(player) = game.players.get(&self.id) {} } }