~starkingdoms/starkingdoms

6f03a2af64cfda2fe804d9701d4383db08ba7cb2 — ghostlyzsh 1 year, 8 months ago 276368f
save eligibility fixed, but when its a module touching a planet, theres a ton of packets sent every second all saying true
M server/src/main.rs => server/src/main.rs +52 -18
@@ 1614,9 1614,18 @@ fn break_modules(
fn save_eligibility(
    rapier_context: Res<RapierContext>,
    planet_query: Query<(Entity, &PlanetType, &Children)>,
    attached_query: Query<
        &Attach,
        (Without<PlanetType>, Without<Player>),
    >,
    collider_query: Query<
        (&Collider, &Parent),
        (Without<Player>, Without<Attach>),
    >,
    mut player_query: Query<&mut Player>,
    mut packet_send: EventWriter<WsEvent>,
) {
    let mut player_eligibilities = HashMap::new();
    for (_planet_entity, _planet_type, children) in &planet_query {
        for (entity1, entity2, intersecting) in
            rapier_context.intersection_pairs_with(*children.first().unwrap())


@@ 1627,17 1636,36 @@ fn save_eligibility(
                } else {
                    entity1
                };
                if player_query.contains(other) {
                    let mut player = player_query.get_mut(other).unwrap();
                    if !player.save_eligibility {
                        let packet = Packet::SaveEligibility { eligible: true };

                        packet_send.send(WsEvent::Send {
                            to: player.addr,
                            message: packet.into(),
                        });
                let player_entity = if player_query.contains(other) {
                    other
                } else if attached_query.contains(other) {
                    attached_query
                        .get(other)
                        .unwrap()
                        .associated_player
                        .unwrap()
                } else if collider_query.contains(other) {
                    let parent = collider_query.get(other).unwrap().1.get();
                    if attached_query.contains(parent) {
                        attached_query
                            .get(parent)
                            .unwrap()
                            .associated_player
                            .unwrap()
                    } else {
                        continue;
                    }
                } else {
                    continue;
                };
                let player = player_query.get(player_entity).unwrap();
                if !player.save_eligibility {
                    if player_eligibilities.contains_key(&player_entity) {
                        println!("here");
                        player_eligibilities.remove(&player_entity);
                    }
                    player.save_eligibility = true;
                    println!("heretrue");
                    player_eligibilities.insert(player_entity, true);
                }
            } else {
                let other = if *children.first().unwrap() == entity1 {


@@ 1647,19 1675,25 @@ fn save_eligibility(
                };
                if player_query.contains(other) {
                    let mut player = player_query.get_mut(other).unwrap();
                    if player.save_eligibility {
                        let packet = Packet::SaveEligibility { eligible: false };

                        packet_send.send(WsEvent::Send {
                            to: player.addr,
                            message: packet.into(),
                        });
                    if player.save_eligibility && !(player_eligibilities.contains_key(&other) && *player_eligibilities.get(&other).unwrap()) {
                        println!("herefalse");
                        player.save_eligibility = false;
                        player_eligibilities.insert(other, false);
                    }
                    player.save_eligibility = false;
                }
            }
        }
    }
    for (other, eligible) in player_eligibilities.iter() {
        let mut player = player_query.get_mut(*other).unwrap();
        player.save_eligibility = *eligible;
        let packet = Packet::SaveEligibility { eligible: *eligible };

        packet_send.send(WsEvent::Send {
            to: player.addr,
            message: packet.into(),
        });
    }
}

fn on_close(

M starkingdoms-client/src/globals.ts => starkingdoms-client/src/globals.ts +1 -1
@@ 57,7 57,7 @@ export const global: GlobalData = {
  left: false,
  right: false,
  rendering: null,
  saveEligible: true,
  saveEligible: false,
};

export function player(): Part | undefined {

M starkingdoms-client/src/hub.ts => starkingdoms-client/src/hub.ts +3 -0
@@ 19,6 19,7 @@ import { global } from "./globals.ts";
import { startRender } from "./rendering.ts";
import { ButtonType } from "./protocol.ts";
import type Chatbox from "./components/Chatbox.svelte";
import type Button from "./components/ui/Button.svelte";
import { part_texture_url } from "./textures.js";
import * as PIXI from "pixi.js";



@@ 46,6 47,7 @@ export async function hub_connect(
  x_pos: HTMLSpanElement,
  y_pos: HTMLSpanElement,
  energy: HTMLDivElement,
  beam_out_button: Button,
): Promise<ClientHub | null> {
  logger("connecting to client hub at " + url);



@@ 317,6 319,7 @@ export async function hub_connect(
      } else if (packet.t == PacketType.SaveEligibility) {
        let p = <SaveEligibilityPacket>packet.c;
        global.saveEligible = p.eligible;
        console.log(global.saveEligible);
      } else if (packet.t == PacketType.SaveData) {
        let p = <SaveDataPacket>packet.c;
        // request save

M starkingdoms-client/src/pages/Play.svelte => starkingdoms-client/src/pages/Play.svelte +3 -1
@@ 25,6 25,7 @@
  //let antialiasing: boolean = false;

  let chatbox: Chatbox;
  let beam_out_button: Button;

  const logger = createDebug("main");
  logger(


@@ 107,6 108,7 @@
      x_pos,
      y_pos,
      energy,
      beam_out_button,
    );
  });
</script>


@@ 165,7 167,7 @@
      <tbody>
        <tr>
          <td id="leave">
            <Button disabled={!global.saveEligible} on:click={beam_out}>
              <Button on:click={beam_out} bind:this={beam_out_button}>
              Beam out
            </Button>
          </td>