Paste the last thing you copied to your clipboard - Command-V

  • 🐕 I am attempting to get the site runnning as fast as possible. If you are experiencing slow page load times, please report it.
1745580563817.webp
No I'm not explaining, fuck you.
 
A love story
bear hammer said:
That kind of reminds me of the dream I had about her while I was banned.

In the dream I was walking out of a movie theater, and I just randomly met Zoey. We just instantly clicked and ended up talking for hours about kiwi farms, about forum drama and such. It was like some strange parasocial bond forged in pure autism.

Dream zoey was funny, chill, and way more self aware than I expected. At the end of the night she offered to drive me home, and the whole thing felt weirdly wholesome.

Then I woke up and felt this pit in my stomach like, “Oh. Right. She doesn’t exist in my life."
 
Code:
pub fn try_move_player(delta_x: i32, delta_y: i32, ecs: &mut World) -> RunState {

    let mut positions = ecs.write_storage::<Position>();

    let players = ecs.read_storage::<Player>();

    let mut viewsheds = ecs.write_storage::<Viewshed>();

    let entities = ecs.entities();

    let combat_stats = ecs.read_storage::<Attributes>();

    let mut map = ecs.fetch_mut::<Map>();

    let mut wants_to_melee = ecs.write_storage::<WantsToMelee>();

    let mut entity_moved = ecs.write_storage::<EntityMoved>();

    let mut doors = ecs.write_storage::<Door>();

    let mut blocks_visibility = ecs.write_storage::<BlocksVisibility>();

    let mut blocks_movement = ecs.write_storage::<BlocksTile>();

    let mut renderables = ecs.write_storage::<Renderable>();

    let bystanders = ecs.read_storage::<Bystander>();

    let vendors = ecs.read_storage::<Vendor>();

    let mut result = RunState::AwaitingInput;


    let mut swap_entities : Vec<(Entity, i32, i32)> = Vec::new();


    for (entity, _player, pos, viewshed) in (&entities, &players, &mut positions, &mut viewsheds).join() {

        if pos.x + delta_x < 0 || pos.x + delta_x > map.width-1 || pos.y + delta_y < 0 || pos.y + delta_y > map.height - 1 { return RunState::AwaitingInput; }

        let destination_idx = map.xy_idx(pos.x + delta_x, pos.y + delta_y);


        let entities_at_destination: Vec<Entity> = map.tile_content[destination_idx].iter().cloned().collect();


        for potential_target in entities_at_destination {

            map.populate_blocked();

            if potential_target == entity { return AwaitingInput }

            let bystander = bystanders.get(potential_target);

            let vendor = vendors.get(potential_target);

            if bystander.is_some() || vendor.is_some() {


                swap_entities.push((potential_target, pos.x, pos.y));


                pos.x = min(map.width-1 , max(0, pos.x + delta_x));

                pos.y = min(map.height-1, max(0, pos.y + delta_y));

                entity_moved.insert(entity, EntityMoved{}).expect("Unable to insert marker");


                viewshed.dirty = true;

                let mut ppos = ecs.write_resource::<Point>();

                ppos.x = pos.x;

                ppos.y = pos.y;

                result = RunState:PlayerTurn;

            } else {

                let target = combat_stats.get(potential_target);

                if let Some(_target) = target {

                    wants_to_melee.insert(entity, WantsToMelee{ target: potential_target }).expect("Add target failed");

                    return RunState:PlayerTurn;

                }

            }

            let door = doors.get_mut(potential_target);

            /*if let Some(door) = door {

                //TODO interact with doors and chests etc. with an Interact key like E for more intentional play

                let glyph = renderables.get_mut(*potential_target).unwrap();

                match door.open {

                    false => {

                        door.open = true;

                        blocks_visibility.remove(*potential_target);

                        blocks_movement.remove(*potential_target);

                        glyph.glyph = rltk::to_cp437('/');

                        viewshed.dirty = true;

                    }

                    true => {

                        /*

                        door.open = false;

                        blocks_visibility.insert(*potential_target, BlocksVisibility {}).expect("Couldn't add closing Door to blocks_visibility @player.rs");

                        blocks_movement.insert(*potential_target, BlocksTile{}).expect("Couldn't add closing Door to blocks_movement @player.rs");

                        glyph.glyph = rltk::to_cp437('+');

                        viewshed.dirty = true;

                         */

                    }

                    _ => {

                        panic!("Door in unknown state @player.rs")

                    }

                }

            }

             */

            if let Some(door) = door {

                door.open = true;

                blocks_visibility.remove(potential_target);

                blocks_movement.remove(potential_target);

                let glyph = renderables.get_mut(potential_target).unwrap();

                glyph.glyph = rltk::to_cp437('/');

                viewshed.dirty = true;

                result = RunState:PlayerTurn;

            }

        }


        map.populate_blocked();

        if !map.blocked[destination_idx] {

            pos.x = min(map.width-1 , max(0, pos.x + delta_x));

            pos.y = min(map.height-1, max(0, pos.y + delta_y));

            entity_moved.insert(entity, EntityMoved{}).expect("Unable to insert marker");


            viewshed.dirty = true;

            let mut ppos = ecs.write_resource::<Point>();

            ppos.x = pos.x;

            ppos.y = pos.y;

            result = RunState:PlayerTurn;

            match map.tiles[destination_idx] {

                TileType:DownStairs => result = RunState::NextLevel,

                TileType::UpStairs => result = RunState:PreviousLevel,

                _ => {}

            }

        }

    }


    for m in swap_entities.iter() {

      

        let their_pos = positions.get_mut(m.0);

        if let Some(their_pos) = their_pos {

            their_pos.x = m.1;

            their_pos.y = m.2;

            result = RunState:PlayerTurn;

        }

      

    }


    result

}

enjoy my jeetcode
 
  • Informative
Reactions: Ratboy Genius
All I desire is a Swiss bank account
Given an O.B.E. and made a Count
Country estate with a resident staff
Acute angina and an epitaph
 
John Deere 6359TL007
turbocharged diesel
6-cylinder
liquid-cooled
Displacement359 ci
5.9 L
Bore/Stroke4.193x4.331 inches
107 x 110 mm
Power114.4 hp
85.3 kW
Rated RPM2400
Starter volts12
Oil capacity13.21 qts
12.5 L
Coolant capacity20.1 qts
19.0 L
 
View attachment 7275200
No I'm not explaining, fuck you.
No need. This meme is about online friends/partners who want to chill irl but can't cuz of physical distance and that makes them sad. We've all been there methinks. So I'm guessing you wanted to share that meme with someone who relates!

Anyway here's my latest copy paste:
Tommy, are we the bad guys?
 
Back