archer
This commit is contained in:
parent
66493460a2
commit
c9b33d3557
BIN
data/menu.ui
BIN
data/menu.ui
Binary file not shown.
|
|
@ -12,13 +12,13 @@ export interface InitOutput {
|
|||
readonly __wbindgen_malloc: (a: number, b: number) => number;
|
||||
readonly __wbindgen_realloc: (a: number, b: number, c: number, d: number) => number;
|
||||
readonly __wbindgen_export_2: WebAssembly.Table;
|
||||
readonly wasm_bindgen__convert__closures__invoke1_mut__h32b600599eb72778: (a: number, b: number, c: number) => void;
|
||||
readonly wasm_bindgen__convert__closures__invoke0_mut__h28d66fed9b19a073: (a: number, b: number) => void;
|
||||
readonly wasm_bindgen__convert__closures__invoke2_mut__hbd249abdb70ea846: (a: number, b: number, c: number, d: number) => void;
|
||||
readonly wasm_bindgen__convert__closures__invoke0_mut__hf5e379825731d4b1: (a: number, b: number) => void;
|
||||
readonly wasm_bindgen__convert__closures__invoke1_mut__h6fe9617391924dbe: (a: number, b: number, c: number) => void;
|
||||
readonly wasm_bindgen__convert__closures__invoke0_mut__hcfc201bf4ebeee4e: (a: number, b: number) => void;
|
||||
readonly _dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h75b35f9fba66753d: (a: number, b: number, c: number) => void;
|
||||
readonly wasm_bindgen__convert__closures__invoke1_mut__h41a9fb77c37df54c: (a: number, b: number, c: number) => void;
|
||||
readonly wasm_bindgen__convert__closures__invoke0_mut__hf8e16990f9ed7c04: (a: number, b: number) => void;
|
||||
readonly wasm_bindgen__convert__closures__invoke2_mut__h203a8386730ba9df: (a: number, b: number, c: number, d: number) => void;
|
||||
readonly wasm_bindgen__convert__closures__invoke0_mut__h572b0078b587477d: (a: number, b: number) => void;
|
||||
readonly wasm_bindgen__convert__closures__invoke0_mut__h51080012ce0a1510: (a: number, b: number) => void;
|
||||
readonly wasm_bindgen__convert__closures__invoke1_mut__h1c7e22c401eab73b: (a: number, b: number, c: number) => void;
|
||||
readonly _dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h70e060248429303a: (a: number, b: number, c: number) => void;
|
||||
readonly __wbindgen_free: (a: number, b: number, c: number) => void;
|
||||
readonly __wbindgen_exn_store: (a: number) => void;
|
||||
}
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
Binary file not shown.
|
|
@ -5,12 +5,12 @@ export function main(): void;
|
|||
export function __wbindgen_malloc(a: number, b: number): number;
|
||||
export function __wbindgen_realloc(a: number, b: number, c: number, d: number): number;
|
||||
export const __wbindgen_export_2: WebAssembly.Table;
|
||||
export function wasm_bindgen__convert__closures__invoke1_mut__h32b600599eb72778(a: number, b: number, c: number): void;
|
||||
export function wasm_bindgen__convert__closures__invoke0_mut__h28d66fed9b19a073(a: number, b: number): void;
|
||||
export function wasm_bindgen__convert__closures__invoke2_mut__hbd249abdb70ea846(a: number, b: number, c: number, d: number): void;
|
||||
export function wasm_bindgen__convert__closures__invoke0_mut__hf5e379825731d4b1(a: number, b: number): void;
|
||||
export function wasm_bindgen__convert__closures__invoke1_mut__h6fe9617391924dbe(a: number, b: number, c: number): void;
|
||||
export function wasm_bindgen__convert__closures__invoke0_mut__hcfc201bf4ebeee4e(a: number, b: number): void;
|
||||
export function _dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h75b35f9fba66753d(a: number, b: number, c: number): void;
|
||||
export function wasm_bindgen__convert__closures__invoke1_mut__h41a9fb77c37df54c(a: number, b: number, c: number): void;
|
||||
export function wasm_bindgen__convert__closures__invoke0_mut__hf8e16990f9ed7c04(a: number, b: number): void;
|
||||
export function wasm_bindgen__convert__closures__invoke2_mut__h203a8386730ba9df(a: number, b: number, c: number, d: number): void;
|
||||
export function wasm_bindgen__convert__closures__invoke0_mut__h572b0078b587477d(a: number, b: number): void;
|
||||
export function wasm_bindgen__convert__closures__invoke0_mut__h51080012ce0a1510(a: number, b: number): void;
|
||||
export function wasm_bindgen__convert__closures__invoke1_mut__h1c7e22c401eab73b(a: number, b: number, c: number): void;
|
||||
export function _dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h70e060248429303a(a: number, b: number, c: number): void;
|
||||
export function __wbindgen_free(a: number, b: number, c: number): void;
|
||||
export function __wbindgen_exn_store(a: number): void;
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
//! Game project.
|
||||
use fyrox::core::color::Color;
|
||||
use fyrox::graph::SceneGraph;
|
||||
use fyrox::{
|
||||
asset::manager::ResourceManager,
|
||||
|
|
@ -6,11 +7,16 @@ use fyrox::{
|
|||
engine::GraphicsContext,
|
||||
event::{Event, WindowEvent},
|
||||
gui::{
|
||||
brush::Brush,
|
||||
button::ButtonMessage,
|
||||
grid::{Column, GridBuilder, Row},
|
||||
message::{MessageDirection, UiMessage},
|
||||
text::TextBuilder,
|
||||
widget::WidgetBuilder,
|
||||
widget::WidgetMessage,
|
||||
UiNode, UserInterface,
|
||||
},
|
||||
keyboard::{KeyCode, PhysicalKey},
|
||||
plugin::{Plugin, PluginConstructor, PluginContext, PluginRegistrationContext},
|
||||
scene::{graph::Graph, Scene},
|
||||
};
|
||||
|
|
@ -26,8 +32,7 @@ use map::build_map;
|
|||
use msg::Message;
|
||||
use player::Player;
|
||||
|
||||
|
||||
const START_LEVEL: u32 = 2;
|
||||
const START_LEVEL: u32 = 1;
|
||||
pub struct GameConstructor;
|
||||
|
||||
impl PluginConstructor for GameConstructor {
|
||||
|
|
@ -48,9 +53,10 @@ pub struct Game {
|
|||
|
||||
new_game: Handle<UiNode>,
|
||||
exit: Handle<UiNode>,
|
||||
level_node: Handle<UiNode>,
|
||||
level: u32,
|
||||
need_change_level: bool,
|
||||
|
||||
need_show_menu: bool,
|
||||
}
|
||||
|
||||
impl Game {
|
||||
|
|
@ -72,17 +78,23 @@ impl Game {
|
|||
},
|
||||
);
|
||||
Self {
|
||||
level_node: Handle::NONE,
|
||||
scene: Handle::NONE,
|
||||
new_game: Handle::NONE,
|
||||
exit: Handle::NONE,
|
||||
level: START_LEVEL,
|
||||
need_change_level: false,
|
||||
need_show_menu: false,
|
||||
}
|
||||
}
|
||||
|
||||
pub fn next_level(&mut self) {
|
||||
self.need_change_level = true;
|
||||
}
|
||||
|
||||
pub fn show_menu(&mut self) {
|
||||
self.need_show_menu = true;
|
||||
}
|
||||
}
|
||||
|
||||
impl Plugin for Game {
|
||||
|
|
@ -96,9 +108,38 @@ impl Plugin for Game {
|
|||
self.level += 1;
|
||||
context.async_scene_loader.request("data/scene.rgs");
|
||||
}
|
||||
if self.need_show_menu {
|
||||
self.need_show_menu = false;
|
||||
context
|
||||
.user_interface
|
||||
.send_message(WidgetMessage::visibility(
|
||||
context
|
||||
.user_interface
|
||||
.find_handle_by_name_from_root("MenuScreen"),
|
||||
MessageDirection::ToWidget,
|
||||
true,
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
fn on_os_event(&mut self, event: &Event<()>, context: PluginContext) {
|
||||
if let Event::WindowEvent { event, .. } = event {
|
||||
if let WindowEvent::KeyboardInput { event, .. } = event {
|
||||
if let PhysicalKey::Code(keycode) = event.physical_key {
|
||||
if keycode == KeyCode::Escape {
|
||||
context
|
||||
.user_interface
|
||||
.send_message(WidgetMessage::visibility(
|
||||
context
|
||||
.user_interface
|
||||
.find_handle_by_name_from_root("MenuScreen"),
|
||||
MessageDirection::ToWidget,
|
||||
true,
|
||||
));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if let Event::Resumed {} = event {
|
||||
if let GraphicsContext::Initialized(ref graphics_context) = context.graphics_context {
|
||||
let window_size = graphics_context.window.inner_size();
|
||||
|
|
@ -126,7 +167,8 @@ impl Plugin for Game {
|
|||
if let Some(ButtonMessage::Click) = message.data() {
|
||||
if message.destination() == self.new_game {
|
||||
ctx.user_interface.send_message(WidgetMessage::visibility(
|
||||
ctx.user_interface.root(),
|
||||
ctx.user_interface
|
||||
.find_handle_by_name_from_root("MenuScreen"),
|
||||
MessageDirection::ToWidget,
|
||||
false,
|
||||
));
|
||||
|
|
@ -143,6 +185,13 @@ impl Plugin for Game {
|
|||
if self.scene.is_some() {
|
||||
ctx.scenes.remove(self.scene);
|
||||
}
|
||||
ctx
|
||||
.user_interface
|
||||
.send_message(WidgetMessage::visibility(
|
||||
self.level_node,
|
||||
MessageDirection::ToWidget,
|
||||
false,
|
||||
));
|
||||
}
|
||||
|
||||
fn on_scene_loaded(
|
||||
|
|
@ -155,7 +204,9 @@ impl Plugin for Game {
|
|||
context
|
||||
.user_interface
|
||||
.send_message(WidgetMessage::visibility(
|
||||
context.user_interface.root(),
|
||||
context
|
||||
.user_interface
|
||||
.find_handle_by_name_from_root("MenuScreen"),
|
||||
MessageDirection::ToWidget,
|
||||
false,
|
||||
));
|
||||
|
|
@ -173,9 +224,20 @@ impl Plugin for Game {
|
|||
if self.level == 3 {
|
||||
SwordmanSpawn::new().spawn_enemy(graph, resource_manager, -5.0);
|
||||
ArcherSpawn::new().spawn_enemy(graph, resource_manager, 15.0);
|
||||
|
||||
}
|
||||
let ui_ctx = &mut context.user_interface.build_ctx();
|
||||
|
||||
|
||||
self.level_node = GridBuilder::new(
|
||||
WidgetBuilder::new().with_child(
|
||||
TextBuilder::new(WidgetBuilder::new().with_foreground(Brush::Solid(Color::BLACK)))
|
||||
.with_text(format!("Level: {}", self.level))
|
||||
.with_font_size(20.0)
|
||||
.build(ui_ctx),
|
||||
),
|
||||
)
|
||||
.add_row(Row::stretch())
|
||||
.add_column(Column::auto())
|
||||
.add_column(Column::stretch())
|
||||
.build(ui_ctx);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -252,8 +252,6 @@ pub fn build_map(graph: &mut Graph, resource_manager: &ResourceManager, level: u
|
|||
build_air_island_block(resource_manager, graph, -18.0, bottom_y + 4.0);
|
||||
build_air_island_block(resource_manager, graph, -21.0, bottom_y + 5.5);
|
||||
|
||||
// TODO: for test collision
|
||||
// build_box_block(resource_manager, graph, 7.5, bottom_y+ 2.5);
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,7 +15,6 @@ use fyrox::{
|
|||
visitor::prelude::*,
|
||||
},
|
||||
event::{ElementState, Event, TouchPhase, WindowEvent},
|
||||
gui::{message::MessageDirection, widget::WidgetMessage},
|
||||
keyboard::{KeyCode, PhysicalKey},
|
||||
scene::{
|
||||
animation::spritesheet::SpriteSheetAnimation,
|
||||
|
|
@ -31,6 +30,7 @@ use fyrox::{
|
|||
},
|
||||
script::{ScriptContext, ScriptMessageContext, ScriptMessagePayload, ScriptTrait},
|
||||
};
|
||||
use crate::Game;
|
||||
|
||||
const JUMP_HEIGHT: f32 = 6.0;
|
||||
const SPEED: f32 = 2.9;
|
||||
|
|
@ -445,13 +445,8 @@ impl Player {
|
|||
health_bar_transform.set_position(Vector3::new(nex_x, d.y, d.z));
|
||||
}
|
||||
if self.health <= 0.0 {
|
||||
context
|
||||
.user_interface
|
||||
.send_message(WidgetMessage::visibility(
|
||||
context.user_interface.root(),
|
||||
MessageDirection::ToWidget,
|
||||
true,
|
||||
));
|
||||
let game = context.plugins.get_mut::<Game>();
|
||||
game.show_menu();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
1166
settings.ron
1166
settings.ron
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue