M .gitignore => .gitignore +2 -1
@@ 8,4 8,5 @@ build.ninja
api/config.toml
api/.env
assets/dist
-assets/final>
\ No newline at end of file
+assets/final
+starkingdoms-client/node_modules
M Cargo.lock => Cargo.lock +2 -2
@@ 380,7 380,7 @@ dependencies = [
[[package]]
name = "bevy_twite"
version = "0.1.0"
-source = "git+https://gitlab.com/c0repwn3r/twite.git#5c8672e1321b445540c8577e6c8066df3844c00d"
+source = "git+https://gitlab.com/ghostlyzsh/twite.git#f04df32d81c3b460fdd4d80930d19f537b860f1e"
dependencies = [
"bevy",
"crossbeam-channel",
@@ 1167,7 1167,7 @@ dependencies = [
[[package]]
name = "twite"
version = "0.1.0"
-source = "git+https://gitlab.com/c0repwn3r/twite.git#5c8672e1321b445540c8577e6c8066df3844c00d"
+source = "git+https://gitlab.com/ghostlyzsh/twite.git#f04df32d81c3b460fdd4d80930d19f537b860f1e"
dependencies = [
"base64",
"rand",
M Cargo.toml => Cargo.toml +2 -1
@@ 1,4 1,5 @@
[workspace]
members = [
"server",
-]>
\ No newline at end of file
+]
+resolver = "2"
M server/src/main.rs => server/src/main.rs +16 -10
@@ 22,8 22,8 @@ fn main() {
.add_plugins(MinimalPlugins)
.add_plugins(TwiteServerPlugin)
.add_systems(Startup, spawn_planets)
- .add_systems(Update, on_connection)
- .add_systems(Update, on_position_change)
+ .add_systems(FixedUpdate, on_connection)
+ .add_systems(FixedUpdate, on_position_change)
.run();
info!("Goodbye!");
@@ 46,7 46,9 @@ fn on_connection(
) {
let mut packets = Vec::new();
for ev in reader.read(&events) {
+ info!("{:?}", ev);
if let ServerEvent::Connection(addr) = ev {
+ info!("client connected");
let _id = commands
.spawn(PlayerBundle {
part: PartBundle {
@@ 86,17 88,19 @@ fn on_position_change(
planet_query: Query<(Entity, &PlanetType, &Transform), Changed<Transform>>,
mut packet_send: EventWriter<ServerEvent>,
) {
- let mut parts = HashMap::new();
+ let mut updated_parts = HashMap::new();
for (entity, transform) in part_query.iter() {
let id = commands.entity(entity).id().index();
let translation = transform.translation;
- parts.insert(id, (0, translation.x, translation.y)); // Type hearty = 0
+ updated_parts.insert(id, (0, translation.x, translation.y)); // Type hearty = 0
}
- let packet = PartPositionPacket { parts };
- let buf = serde_json::to_vec(&packet).unwrap();
+ if !updated_parts.is_empty() {
+ let packet = PartPositionPacket { parts: updated_parts };
+ let buf = serde_json::to_vec(&packet).unwrap();
- packet_send.send(ServerEvent::Broadcast(MessageType::Text, buf));
+ packet_send.send(ServerEvent::Broadcast(MessageType::Text, buf));
+ }
let mut planets = HashMap::new();
for (entity, planet_type, transform) in planet_query.iter() {
@@ 111,8 115,10 @@ fn on_position_change(
);
}
- let packet = PlanetPositionPacket { planets };
- let buf = serde_json::to_vec(&packet).unwrap();
+ if !planets.is_empty() {
+ let packet = PlanetPositionPacket { planets };
+ let buf = serde_json::to_vec(&packet).unwrap();
- packet_send.send(ServerEvent::Broadcast(MessageType::Text, buf));
+ packet_send.send(ServerEvent::Broadcast(MessageType::Text, buf));
+ }
}
M starkingdoms-client/src/gateway.ts => starkingdoms-client/src/gateway.ts +5 -1
@@ 17,6 17,10 @@ export async function gateway_connect(url: string) {
socket: ws
};
+ ws.onmessage = (e) => {
+ console.log(e.data);
+ }
+
return client;
}
@@ 36,4 40,4 @@ function _websocket_connect(url: string): Promise<WebSocket> {
reject(err);
};
});
-}>
\ No newline at end of file
+}