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_malloc: (a: number, b: number) => number;
|
||||||
readonly __wbindgen_realloc: (a: number, b: number, c: number, d: number) => number;
|
readonly __wbindgen_realloc: (a: number, b: number, c: number, d: number) => number;
|
||||||
readonly __wbindgen_export_2: WebAssembly.Table;
|
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__invoke1_mut__h41a9fb77c37df54c: (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__invoke0_mut__hf8e16990f9ed7c04: (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__invoke2_mut__h203a8386730ba9df: (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__invoke0_mut__h572b0078b587477d: (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__h51080012ce0a1510: (a: number, b: number) => void;
|
||||||
readonly wasm_bindgen__convert__closures__invoke0_mut__hcfc201bf4ebeee4e: (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__h75b35f9fba66753d: (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_free: (a: number, b: number, c: number) => void;
|
||||||
readonly __wbindgen_exn_store: (a: 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_malloc(a: number, b: number): number;
|
||||||
export function __wbindgen_realloc(a: number, b: number, c: number, d: number): number;
|
export function __wbindgen_realloc(a: number, b: number, c: number, d: number): number;
|
||||||
export const __wbindgen_export_2: WebAssembly.Table;
|
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__invoke1_mut__h41a9fb77c37df54c(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__invoke0_mut__hf8e16990f9ed7c04(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__invoke2_mut__h203a8386730ba9df(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__invoke0_mut__h572b0078b587477d(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__h51080012ce0a1510(a: number, b: number): void;
|
||||||
export function wasm_bindgen__convert__closures__invoke0_mut__hcfc201bf4ebeee4e(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__h75b35f9fba66753d(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_free(a: number, b: number, c: number): void;
|
||||||
export function __wbindgen_exn_store(a: number): void;
|
export function __wbindgen_exn_store(a: number): void;
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
//! Game project.
|
//! Game project.
|
||||||
|
use fyrox::core::color::Color;
|
||||||
use fyrox::graph::SceneGraph;
|
use fyrox::graph::SceneGraph;
|
||||||
use fyrox::{
|
use fyrox::{
|
||||||
asset::manager::ResourceManager,
|
asset::manager::ResourceManager,
|
||||||
|
|
@ -6,11 +7,16 @@ use fyrox::{
|
||||||
engine::GraphicsContext,
|
engine::GraphicsContext,
|
||||||
event::{Event, WindowEvent},
|
event::{Event, WindowEvent},
|
||||||
gui::{
|
gui::{
|
||||||
|
brush::Brush,
|
||||||
button::ButtonMessage,
|
button::ButtonMessage,
|
||||||
|
grid::{Column, GridBuilder, Row},
|
||||||
message::{MessageDirection, UiMessage},
|
message::{MessageDirection, UiMessage},
|
||||||
|
text::TextBuilder,
|
||||||
|
widget::WidgetBuilder,
|
||||||
widget::WidgetMessage,
|
widget::WidgetMessage,
|
||||||
UiNode, UserInterface,
|
UiNode, UserInterface,
|
||||||
},
|
},
|
||||||
|
keyboard::{KeyCode, PhysicalKey},
|
||||||
plugin::{Plugin, PluginConstructor, PluginContext, PluginRegistrationContext},
|
plugin::{Plugin, PluginConstructor, PluginContext, PluginRegistrationContext},
|
||||||
scene::{graph::Graph, Scene},
|
scene::{graph::Graph, Scene},
|
||||||
};
|
};
|
||||||
|
|
@ -26,8 +32,7 @@ use map::build_map;
|
||||||
use msg::Message;
|
use msg::Message;
|
||||||
use player::Player;
|
use player::Player;
|
||||||
|
|
||||||
|
const START_LEVEL: u32 = 1;
|
||||||
const START_LEVEL: u32 = 2;
|
|
||||||
pub struct GameConstructor;
|
pub struct GameConstructor;
|
||||||
|
|
||||||
impl PluginConstructor for GameConstructor {
|
impl PluginConstructor for GameConstructor {
|
||||||
|
|
@ -48,9 +53,10 @@ pub struct Game {
|
||||||
|
|
||||||
new_game: Handle<UiNode>,
|
new_game: Handle<UiNode>,
|
||||||
exit: Handle<UiNode>,
|
exit: Handle<UiNode>,
|
||||||
|
level_node: Handle<UiNode>,
|
||||||
level: u32,
|
level: u32,
|
||||||
need_change_level: bool,
|
need_change_level: bool,
|
||||||
|
need_show_menu: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Game {
|
impl Game {
|
||||||
|
|
@ -72,17 +78,23 @@ impl Game {
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
Self {
|
Self {
|
||||||
|
level_node: Handle::NONE,
|
||||||
scene: Handle::NONE,
|
scene: Handle::NONE,
|
||||||
new_game: Handle::NONE,
|
new_game: Handle::NONE,
|
||||||
exit: Handle::NONE,
|
exit: Handle::NONE,
|
||||||
level: START_LEVEL,
|
level: START_LEVEL,
|
||||||
need_change_level: false,
|
need_change_level: false,
|
||||||
|
need_show_menu: false,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn next_level(&mut self) {
|
pub fn next_level(&mut self) {
|
||||||
self.need_change_level = true;
|
self.need_change_level = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn show_menu(&mut self) {
|
||||||
|
self.need_show_menu = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Plugin for Game {
|
impl Plugin for Game {
|
||||||
|
|
@ -96,9 +108,38 @@ impl Plugin for Game {
|
||||||
self.level += 1;
|
self.level += 1;
|
||||||
context.async_scene_loader.request("data/scene.rgs");
|
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) {
|
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 Event::Resumed {} = event {
|
||||||
if let GraphicsContext::Initialized(ref graphics_context) = context.graphics_context {
|
if let GraphicsContext::Initialized(ref graphics_context) = context.graphics_context {
|
||||||
let window_size = graphics_context.window.inner_size();
|
let window_size = graphics_context.window.inner_size();
|
||||||
|
|
@ -126,7 +167,8 @@ impl Plugin for Game {
|
||||||
if let Some(ButtonMessage::Click) = message.data() {
|
if let Some(ButtonMessage::Click) = message.data() {
|
||||||
if message.destination() == self.new_game {
|
if message.destination() == self.new_game {
|
||||||
ctx.user_interface.send_message(WidgetMessage::visibility(
|
ctx.user_interface.send_message(WidgetMessage::visibility(
|
||||||
ctx.user_interface.root(),
|
ctx.user_interface
|
||||||
|
.find_handle_by_name_from_root("MenuScreen"),
|
||||||
MessageDirection::ToWidget,
|
MessageDirection::ToWidget,
|
||||||
false,
|
false,
|
||||||
));
|
));
|
||||||
|
|
@ -143,6 +185,13 @@ impl Plugin for Game {
|
||||||
if self.scene.is_some() {
|
if self.scene.is_some() {
|
||||||
ctx.scenes.remove(self.scene);
|
ctx.scenes.remove(self.scene);
|
||||||
}
|
}
|
||||||
|
ctx
|
||||||
|
.user_interface
|
||||||
|
.send_message(WidgetMessage::visibility(
|
||||||
|
self.level_node,
|
||||||
|
MessageDirection::ToWidget,
|
||||||
|
false,
|
||||||
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
fn on_scene_loaded(
|
fn on_scene_loaded(
|
||||||
|
|
@ -155,7 +204,9 @@ impl Plugin for Game {
|
||||||
context
|
context
|
||||||
.user_interface
|
.user_interface
|
||||||
.send_message(WidgetMessage::visibility(
|
.send_message(WidgetMessage::visibility(
|
||||||
context.user_interface.root(),
|
context
|
||||||
|
.user_interface
|
||||||
|
.find_handle_by_name_from_root("MenuScreen"),
|
||||||
MessageDirection::ToWidget,
|
MessageDirection::ToWidget,
|
||||||
false,
|
false,
|
||||||
));
|
));
|
||||||
|
|
@ -173,9 +224,20 @@ impl Plugin for Game {
|
||||||
if self.level == 3 {
|
if self.level == 3 {
|
||||||
SwordmanSpawn::new().spawn_enemy(graph, resource_manager, -5.0);
|
SwordmanSpawn::new().spawn_enemy(graph, resource_manager, -5.0);
|
||||||
ArcherSpawn::new().spawn_enemy(graph, resource_manager, 15.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, -18.0, bottom_y + 4.0);
|
||||||
build_air_island_block(resource_manager, graph, -21.0, bottom_y + 5.5);
|
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::*,
|
visitor::prelude::*,
|
||||||
},
|
},
|
||||||
event::{ElementState, Event, TouchPhase, WindowEvent},
|
event::{ElementState, Event, TouchPhase, WindowEvent},
|
||||||
gui::{message::MessageDirection, widget::WidgetMessage},
|
|
||||||
keyboard::{KeyCode, PhysicalKey},
|
keyboard::{KeyCode, PhysicalKey},
|
||||||
scene::{
|
scene::{
|
||||||
animation::spritesheet::SpriteSheetAnimation,
|
animation::spritesheet::SpriteSheetAnimation,
|
||||||
|
|
@ -31,6 +30,7 @@ use fyrox::{
|
||||||
},
|
},
|
||||||
script::{ScriptContext, ScriptMessageContext, ScriptMessagePayload, ScriptTrait},
|
script::{ScriptContext, ScriptMessageContext, ScriptMessagePayload, ScriptTrait},
|
||||||
};
|
};
|
||||||
|
use crate::Game;
|
||||||
|
|
||||||
const JUMP_HEIGHT: f32 = 6.0;
|
const JUMP_HEIGHT: f32 = 6.0;
|
||||||
const SPEED: f32 = 2.9;
|
const SPEED: f32 = 2.9;
|
||||||
|
|
@ -445,13 +445,8 @@ impl Player {
|
||||||
health_bar_transform.set_position(Vector3::new(nex_x, d.y, d.z));
|
health_bar_transform.set_position(Vector3::new(nex_x, d.y, d.z));
|
||||||
}
|
}
|
||||||
if self.health <= 0.0 {
|
if self.health <= 0.0 {
|
||||||
context
|
let game = context.plugins.get_mut::<Game>();
|
||||||
.user_interface
|
game.show_menu();
|
||||||
.send_message(WidgetMessage::visibility(
|
|
||||||
context.user_interface.root(),
|
|
||||||
MessageDirection::ToWidget,
|
|
||||||
true,
|
|
||||||
));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
1166
settings.ron
1166
settings.ron
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue