fix: clippy warnings
This commit is contained in:
parent
2fd10446b6
commit
d9572be9bc
7 changed files with 57 additions and 34 deletions
|
@ -28,7 +28,7 @@ impl Coordinate {
|
|||
pub fn from_index(index: usize) -> Self {
|
||||
let rank = (index / 8) as isize;
|
||||
let file = (index % 8) as isize;
|
||||
return Self { rank, file };
|
||||
Self { rank, file }
|
||||
}
|
||||
|
||||
pub fn parse_algebraic(s: &str) -> Result<Self, NotationError> {
|
||||
|
@ -49,8 +49,7 @@ impl Coordinate {
|
|||
|
||||
let rank = s
|
||||
.chars()
|
||||
.skip(1)
|
||||
.next()
|
||||
.nth(1)
|
||||
.unwrap()
|
||||
.to_digit(9)
|
||||
.map(|v| v - 1)
|
||||
|
@ -317,7 +316,7 @@ impl Board {
|
|||
let white_checked = black_moves.into_iter().any(|m| {
|
||||
self.board[m.to.to_index()] == Some(Side::White | PieceType::King)
|
||||
});
|
||||
return BySide {
|
||||
BySide {
|
||||
black: black_checked,
|
||||
white: white_checked,
|
||||
}
|
||||
|
|
|
@ -204,7 +204,7 @@ fn generate_castling_moves(board: &Board, moves: &mut Vec<Move>) {
|
|||
if board.get(mid).is_some() {
|
||||
return None;
|
||||
}
|
||||
let test_state = Move::new(king_from, mid).make(&board);
|
||||
let test_state = Move::new(king_from, mid).make(board);
|
||||
if *test_state.calc_check_state().get(board.to_move) {
|
||||
return None;
|
||||
}
|
||||
|
@ -294,15 +294,13 @@ fn generate_pawn_moves(board: &Board, moves: &mut Vec<Move>) {
|
|||
None
|
||||
};
|
||||
|
||||
let mv = Move {
|
||||
Move {
|
||||
from,
|
||||
to,
|
||||
other: None,
|
||||
promotions,
|
||||
set_en_passant,
|
||||
};
|
||||
|
||||
mv
|
||||
}
|
||||
}
|
||||
|
||||
let (start_rank, direction) = match board.to_move {
|
||||
|
|
|
@ -9,7 +9,7 @@ fn perft_board(board: &Board, depth: u64, start_depth: u64) -> u64 {
|
|||
let mut moves = vec![];
|
||||
crate::chess::mv::generate_pseudolegal(board, &mut moves);
|
||||
|
||||
let count = moves.into_par_iter().map(|mv| {
|
||||
moves.into_par_iter().map(|mv| {
|
||||
let mut count = 0;
|
||||
if let Some(promotions) = mv.promotions {
|
||||
for promotion in promotions {
|
||||
|
@ -44,9 +44,7 @@ fn perft_board(board: &Board, depth: u64, start_depth: u64) -> u64 {
|
|||
}
|
||||
}
|
||||
count
|
||||
}).sum();
|
||||
|
||||
count
|
||||
}).sum()
|
||||
}
|
||||
|
||||
pub fn run_perft(fen: &str, depth: u64, expected_positions: u64) -> bool {
|
||||
|
|
|
@ -3,18 +3,16 @@ use std::collections::HashMap;
|
|||
use uuid::Uuid;
|
||||
use xtra::{prelude::*, WeakAddress};
|
||||
|
||||
use crate::{prelude::{Board, Move}, constants::START_FEN, chess::{Side, mv::generate_legal}, player::{Player, OutgoingPlayerEvent, IncomingPlayerEvent}};
|
||||
use crate::{prelude::Board, constants::START_FEN, chess::{Side, mv::generate_legal}, player::{Player, OutgoingPlayerEvent, IncomingPlayerEvent}};
|
||||
|
||||
#[derive(Actor)]
|
||||
#[derive(Actor, Default)]
|
||||
pub struct GameManager {
|
||||
games: HashMap<Uuid, Address<ChessGame>>,
|
||||
}
|
||||
|
||||
impl GameManager {
|
||||
pub fn new() -> Self {
|
||||
Self {
|
||||
games: HashMap::new(),
|
||||
}
|
||||
Default::default()
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
use axum::Extension;
|
||||
use chs::{prelude::*, game::GameManager};
|
||||
use chs::game::GameManager;
|
||||
use tower_http::trace::TraceLayer;
|
||||
use tracing_subscriber::prelude::*;
|
||||
use xtra::Mailbox;
|
||||
|
@ -22,7 +22,11 @@ async fn main() {
|
|||
.layer(Extension(game_manager))
|
||||
.layer(TraceLayer::new_for_http());
|
||||
|
||||
axum::Server::bind(&format!("0.0.0.0:3000").parse().unwrap())
|
||||
let port: u16 = std::env::var("PORT")
|
||||
.map(|s| s.parse().unwrap())
|
||||
.unwrap_or(3000);
|
||||
|
||||
axum::Server::bind(&format!("0.0.0.0:{port}").parse().unwrap())
|
||||
.serve(app.into_make_service())
|
||||
.await
|
||||
.unwrap();
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
use axum::{Router, extract::{WebSocketUpgrade, Path, ws::{Message, WebSocket}}, response::IntoResponse, routing::{get, get_service}, http::{StatusCode, Uri}, Extension};
|
||||
use axum::{Router, extract::{WebSocketUpgrade, Path, ws::{Message, WebSocket}}, response::IntoResponse, routing::get, Extension};
|
||||
use futures::{StreamExt, SinkExt, stream::{SplitStream, SplitSink}, channel::mpsc::{self, UnboundedSender}};
|
||||
use tokio::task::JoinHandle;
|
||||
use tower_http::services::ServeDir;
|
||||
use uuid::Uuid;
|
||||
use xtra::{Mailbox, Address};
|
||||
|
||||
|
@ -9,6 +8,7 @@ use crate::{player::{Player, IncomingPlayerEvent, OutgoingPlayerEvent, GameInfo}
|
|||
#[cfg(not(debug_assertions))]
|
||||
use crate::assets::StaticFile;
|
||||
|
||||
#[allow(clippy::let_and_return)]
|
||||
pub fn routes() -> Router {
|
||||
let router = Router::new()
|
||||
.route("/ws/:id", get(ws_handler));
|
||||
|
@ -50,8 +50,7 @@ async fn handle_socket(socket: WebSocket, id: Uuid, game_manager: Address<GameMa
|
|||
let res = game_manager.send(JoinGame { game_id: id, player: player.downgrade() }).await
|
||||
.expect("game manager disconnected");
|
||||
|
||||
if let Some(res) = res {
|
||||
if let JoinGameResponse::Success { side, game } = res {
|
||||
if let Some(JoinGameResponse::Success { side, game }) = res {
|
||||
player.send(GameInfo { side, game }).await.expect("player disconnected");
|
||||
let rx_task = socket_recv(rx, player);
|
||||
|
||||
|
@ -60,7 +59,6 @@ async fn handle_socket(socket: WebSocket, id: Uuid, game_manager: Address<GameMa
|
|||
_ = tx_task => {},
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn socket_send(mut tx: SplitSink<WebSocket, Message>) -> (UnboundedSender<OutgoingPlayerEvent>, JoinHandle<()>) {
|
||||
|
@ -85,7 +83,7 @@ fn socket_send(mut tx: SplitSink<WebSocket, Message>) -> (UnboundedSender<Outgoi
|
|||
}
|
||||
|
||||
fn socket_recv(mut rx: SplitStream<WebSocket>, player: Address<Player>) -> JoinHandle<()> {
|
||||
let task = tokio::spawn(async move {
|
||||
tokio::spawn(async move {
|
||||
while let Some(msg) = rx.next().await {
|
||||
if let Ok(msg) = msg {
|
||||
match msg {
|
||||
|
@ -115,7 +113,5 @@ fn socket_recv(mut rx: SplitStream<WebSocket>, player: Address<Player>) -> JoinH
|
|||
return;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
task
|
||||
})
|
||||
}
|
||||
|
|
30
static/test.html
Normal file
30
static/test.html
Normal file
|
@ -0,0 +1,30 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Document</title>
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
function wsRoute(id) {
|
||||
const loc = window.location;
|
||||
let newUri = loc.protocol === "https:" ? "wss://" : "ws://";
|
||||
newUri += loc.host + '/ws/' + id;
|
||||
return newUri;
|
||||
}
|
||||
|
||||
// Random UUID
|
||||
const ws = new WebSocket(wsRoute('7d3a9dac-71db-4ade-af46-f080777969a4'));
|
||||
ws.onopen = function () {
|
||||
ws.send('hello, world!');
|
||||
ws.send('hello, world!');
|
||||
ws.send('hello, world!');
|
||||
}
|
||||
ws.onmessage = function (data) {
|
||||
console.log(data);
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
Loading…
Reference in a new issue