
相手がガードファイターを選んでも終わらないバグがあって、returnしないといけない。
if let Ok(selected_index) = input.trim().parse::<usize>() {
if selected_index == 0 {
// 攻撃をやめる場合
println!("ガードされませんでした");
being_attacked_event_writer.send(BeingAttacked {
attacked_card_id: event.attacked_card_id,
attacker_id: event.attacker_id,
});
return;
}
if selected_index > 0 && selected_index <= available_guards.len() {
let selected_entity = available_guards[selected_index - 1];
attack_fzone_event_writer.send(AttackFZone {
attacked_card_id: selected_entity,
attacker_id: event.attacker_id,
});
println!("{} にガードされました", card.name); // カード名を表示
commands.entity(selected_entity).insert(SpinCondition::Spin);
println!("{}はスピンしました", card.name);
return;
}
2個目のreturnが無かった。

スキップできてなかった。
pub fn withdraw_management(
mut next_state: ResMut<NextState<PlayState>>,
mut pick_fighter_to_withdraw_event_writer: EventWriter<PickFighterToWithdraw>,
field_conditon: ResMut<FieldCondition>,
mut withdraw_management_event_reader: EventReader<WithdrawManagement>,
) {
for event in withdraw_management_event_reader.read() {
let choice = check_the_will_of_withdraw();
match choice {
1 => {
if field_conditon.has_fzone_card {
println!("撤退できます");
pick_fighter_to_withdraw_event_writer.send(PickFighterToWithdraw);
} else {
if field_conditon.has_xzone_card {
println!("Fゾーンにカードが無いのでXフェーズに移行します");
next_state.set(PlayState::XPhase)
} else {
println!(
"Xゾーンにカードが無いのでXフェーズをスキップしてメインフェーズに移行します"
);
next_state.set(PlayState::MainPhase)
}
}
}
2 => {
if field_conditon.has_xzone_card {
println!("Xフェーズに移行します");
next_state.set(PlayState::XPhase);
} else {
println!(
"Xゾーンにカードが無いのでXフェーズをスキップしてメインフェーズに移行します"
);
next_state.set(PlayState::MainPhase);
}
}
_ => {}
}
}
}
2個目のnext_stateをMainPhaseに直しました。
github.com一度、出来上がったコードを公開しました。
結局他の人の人生は右綴じになってて、左綴じの人生な私は 何千ページと捲ってたどり着いた場所は他の人にとっては10ページ先にあるものだったりする。
始まりが違うんだ。
*1:_, card, _, _