Added untap hotkey⍼
This commit is contained in:
@ -7,7 +7,7 @@ definitely not a shameless untap clone
|
|||||||
# todo
|
# todo
|
||||||
+ Add drag-and-drop from hand and piles
|
+ Add drag-and-drop from hand and piles
|
||||||
+ Add hotkeys for every zone (Almost done!)
|
+ Add hotkeys for every zone (Almost done!)
|
||||||
+ Add untap all hotkey
|
+ ~~Add untap all hotkey~~
|
||||||
+ Add viewing top of deck
|
+ Add viewing top of deck
|
||||||
+ Add score values (usable for life counters)
|
+ Add score values (usable for life counters)
|
||||||
|
|
||||||
|
|||||||
17
src/game.rs
17
src/game.rs
@ -16,7 +16,7 @@ struct CardInfo {
|
|||||||
count: usize,
|
count: usize,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Deserialize, Serialize, Clone, Copy, Debug)]
|
#[derive(Deserialize, Serialize, Clone, Copy, Debug, PartialEq)]
|
||||||
pub enum Player {
|
pub enum Player {
|
||||||
A,
|
A,
|
||||||
B,
|
B,
|
||||||
@ -56,7 +56,8 @@ enum Event {
|
|||||||
Undiscard(Player),
|
Undiscard(Player),
|
||||||
Kill(Uuid, bool),
|
Kill(Uuid, bool),
|
||||||
Unkill(Uuid, bool),
|
Unkill(Uuid, bool),
|
||||||
TransferDeadCard(Uuid, bool)
|
TransferDeadCard(Uuid, bool),
|
||||||
|
UntapAll(Player),
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Serialize, Clone, Debug)]
|
#[derive(Serialize, Clone, Debug)]
|
||||||
@ -371,3 +372,15 @@ pub fn transfer_dead_card(game_state: &mut GameState, pile_index: usize, shadow_
|
|||||||
event: Event::TransferDeadCard(card_id, shadow_to_discard),
|
event: Event::TransferDeadCard(card_id, shadow_to_discard),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn untap_all(game_state: &mut GameState, player: Player) {
|
||||||
|
game_state.events.push(CountedEvent {
|
||||||
|
id: game_state.events.len(),
|
||||||
|
event: Event::UntapAll(player),
|
||||||
|
});
|
||||||
|
for (_, card) in game_state.play.iter_mut() {
|
||||||
|
if card.owner == player {
|
||||||
|
card.tapped = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
20
src/main.rs
20
src/main.rs
@ -316,6 +316,25 @@ fn get_state(
|
|||||||
))
|
))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[get("/<uuid>/untap_all")]
|
||||||
|
fn untap_all(
|
||||||
|
uuid: Uuid,
|
||||||
|
game_state_arc: &State<ArcMutexGameState>,
|
||||||
|
player_uuids: &State<PlayerUuids>,
|
||||||
|
) -> Result<String, BadRequest<String>> {
|
||||||
|
let game_state_mutex = Arc::clone(&game_state_arc.state);
|
||||||
|
let mut game_state = game_state_mutex.lock().unwrap();
|
||||||
|
let player = match player_uuids.map.get(&uuid) {
|
||||||
|
Some(player) => player,
|
||||||
|
None => return Err(BadRequest(format!("Invalid player {}.", uuid))),
|
||||||
|
};
|
||||||
|
game::untap_all(&mut game_state, player.clone());
|
||||||
|
Ok(format!(
|
||||||
|
"{}",
|
||||||
|
game::get_game_one_player(&game_state, player.clone())
|
||||||
|
))
|
||||||
|
}
|
||||||
|
|
||||||
#[get("/<uuid>/draw/<count>")]
|
#[get("/<uuid>/draw/<count>")]
|
||||||
fn draw(
|
fn draw(
|
||||||
uuid: Uuid,
|
uuid: Uuid,
|
||||||
@ -462,6 +481,7 @@ fn rocket() -> _ {
|
|||||||
unshadow,
|
unshadow,
|
||||||
undiscard,
|
undiscard,
|
||||||
remember,
|
remember,
|
||||||
|
untap_all,
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
.manage(ArcMutexGameState {
|
.manage(ArcMutexGameState {
|
||||||
|
|||||||
@ -11,6 +11,7 @@
|
|||||||
const $view-card-container = document.query-selector '#view-card-container'
|
const $view-card-container = document.query-selector '#view-card-container'
|
||||||
const $param = document.query-selector '#param'
|
const $param = document.query-selector '#param'
|
||||||
const $play = document.query-selector '#play'
|
const $play = document.query-selector '#play'
|
||||||
|
window.$play = play
|
||||||
const $discard-pile = document.query-selector '#discard-pile'
|
const $discard-pile = document.query-selector '#discard-pile'
|
||||||
const $discard-pile-img = document.query-selector '#discard-pile-img'
|
const $discard-pile-img = document.query-selector '#discard-pile-img'
|
||||||
const $discard-pile-count = document.query-selector '#discard-pile-count'
|
const $discard-pile-count = document.query-selector '#discard-pile-count'
|
||||||
@ -232,7 +233,7 @@
|
|||||||
$view-card-container.class-list.add \right
|
$view-card-container.class-list.add \right
|
||||||
..add-event-listener \keyup ->
|
..add-event-listener \keyup ->
|
||||||
$current-mouse-node = [...document.query-selector-all \:hover][* - 1]
|
$current-mouse-node = [...document.query-selector-all \:hover][* - 1]
|
||||||
switch it.key
|
switch it.key.to-lower-case!
|
||||||
| \c => fetch-log "./draw/#{pop-param!}"
|
| \c => fetch-log "./draw/#{pop-param!}"
|
||||||
| \e => fetch-log "./pass"
|
| \e => fetch-log "./pass"
|
||||||
| \0 \1 \2 \3 \4 \5 \6 \7 \8 \9 => push-param that
|
| \0 \1 \2 \3 \4 \5 \6 \7 \8 \9 => push-param that
|
||||||
@ -313,4 +314,11 @@
|
|||||||
| \q =>
|
| \q =>
|
||||||
$extra.class-list.add \hidden
|
$extra.class-list.add \hidden
|
||||||
$extra.remove-attribute \data-pile-type
|
$extra.remove-attribute \data-pile-type
|
||||||
|
| \x =>
|
||||||
|
console.log
|
||||||
|
if it.shift-key || state.player-state.turn_player == state.player-state.you
|
||||||
|
fetch-log \./untap_all
|
||||||
|
[...$play.children]
|
||||||
|
.filter -> \true == it.get-attribute \data-owned
|
||||||
|
.for-each -> it.set-attribute \data-tapped false
|
||||||
)!
|
)!
|
||||||
|
|||||||
Reference in New Issue
Block a user