From 7e2153c537a754da4e4fc57e5ffb5954adbf2b99 Mon Sep 17 00:00:00 2001 From: Monty Marz Date: Fri, 17 Jan 2020 22:00:00 +0000 Subject: [PATCH] Charge Icon and flashing skillbar --- assets/common/npc_names.json | 2 +- assets/voxygen/element/icons/skill_charge.vox | Bin 0 -> 57497 bytes .../voxygen/element/icons/skill_charge_2.vox | Bin 0 -> 63221 bytes .../voxygen/element/icons/skill_charge_3.vox | Bin 0 -> 57509 bytes .../voxygen/element/icons/skill_slice_2.vox | Bin 0 -> 62249 bytes .../element/skillbar/skillbar_slot_active.vox | Bin 0 -> 56172 bytes .../skillbar/skillbar_slot_big_active.vox | Bin 0 -> 58108 bytes .../skillbar/skillbar_slot_l_active.vox | Bin 0 -> 56164 bytes .../skillbar/skillbar_slot_r_active.vox | Bin 0 -> 56164 bytes voxygen/src/hud/img_ids.rs | 16 ++- voxygen/src/hud/mod.rs | 8 +- voxygen/src/hud/skillbar.rs | 100 +++++++++++++++--- voxygen/src/settings.rs | 2 +- world/src/block/mod.rs | 13 +-- 14 files changed, 110 insertions(+), 31 deletions(-) create mode 100644 assets/voxygen/element/icons/skill_charge.vox create mode 100644 assets/voxygen/element/icons/skill_charge_2.vox create mode 100644 assets/voxygen/element/icons/skill_charge_3.vox create mode 100644 assets/voxygen/element/icons/skill_slice_2.vox create mode 100644 assets/voxygen/element/skillbar/skillbar_slot_active.vox create mode 100644 assets/voxygen/element/skillbar/skillbar_slot_big_active.vox create mode 100644 assets/voxygen/element/skillbar/skillbar_slot_l_active.vox create mode 100644 assets/voxygen/element/skillbar/skillbar_slot_r_active.vox diff --git a/assets/common/npc_names.json b/assets/common/npc_names.json index e8bdc06b71..3158058f5b 100644 --- a/assets/common/npc_names.json +++ b/assets/common/npc_names.json @@ -240,7 +240,7 @@ "Ginger", "Gizmo", "Gwenivere", - "Hagrid", + "Hogrid", "Hazel", "Hector", "Herman", diff --git a/assets/voxygen/element/icons/skill_charge.vox b/assets/voxygen/element/icons/skill_charge.vox new file mode 100644 index 0000000000000000000000000000000000000000..cdb5772ba66462a31d373a40e20aa265cc8794a9 GIT binary patch literal 57497 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 literal 0 HcmV?d00001 diff --git a/assets/voxygen/element/icons/skill_charge_2.vox b/assets/voxygen/element/icons/skill_charge_2.vox new file mode 100644 index 0000000000000000000000000000000000000000..7135fb3dfee94d23dbb23badafe7df939db0301c GIT binary patch literal 63221 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 literal 0 HcmV?d00001 diff --git a/assets/voxygen/element/icons/skill_slice_2.vox b/assets/voxygen/element/icons/skill_slice_2.vox new file mode 100644 index 0000000000000000000000000000000000000000..415da44a63c768c33364c3a76dff240679c23c5c GIT binary patch literal 62249 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 L_uG+(H1Pf#Vxt}X literal 0 HcmV?d00001 diff --git a/assets/voxygen/element/skillbar/skillbar_slot_big_active.vox b/assets/voxygen/element/skillbar/skillbar_slot_big_active.vox new file mode 100644 index 0000000000000000000000000000000000000000..e2a9193e2c6acf1828c2ade23290617c23948be1 GIT binary patch literal 58108 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 literal 0 HcmV?d00001 diff --git a/assets/voxygen/element/skillbar/skillbar_slot_r_active.vox b/assets/voxygen/element/skillbar/skillbar_slot_r_active.vox new file mode 100644 index 0000000000000000000000000000000000000000..d9166085caccf5c1124b72474008db96e2a8f814 GIT binary patch literal 56164 zcmeI)d3;n?6$kM5LiWkVJX)mIGD>4BOY$bkkQiH&P*Or5Bm`0**ghtiH-9 zmTJL@pec&B0WDfn5o(JIR%xqsX{}n9s^EePb+2pPcjIGWVW$ zx9@$+2L?X9p?$mOsHSOcP3t%Dht~0=rfpf@-CQIUJ{ECgr9Zdt=w823Dtz3|!Nti1 z9N8Q>9Jw5M9Qhmt9EBV%4jyZ=n4^TFl%tGeAxDQpX9i#yEy0KoQu7(HXch`FzM#;v(@+u_&f)n zH}pa-7joM|-WTc5WxarN1)MA3eUcoP^?c6db1t9vO>$h;^Ej8spE6c9kMHJdDC^JW zd^UgP@%~C%X_L#jT+Ze4eoKzadJgAuIF~b-#r-th;M;)f+*i}}EM3f#TbiX^#Or`(b< z#!Baus!NgYO*Mv;rQK9pE5&!JW_nDI*Nkpy>5zL|4rwpP)Ywwq*tDbbGAX1FImh?9 zW<~u2wp2`6c{wd#zMLv6E6L~cQGIU3z@ZrNWK0Z#zjvb?k zi3vJ!;sl*Kb&5`(K22xNoS{aKMy=%b&hmy4d-xsxud+)T|kU!d6dIT|~0j(ih7 zil2?s#8&PX=YF@j=)#2ya>+7B>+ot!p$>5Owyk@NrQSi)oe|9EyguzvZK&#vMB+KTV% ze|N~^-`2Es<73WyK)o&G_Y~^gnHq`P{F?;L3WS5f!K5v(6Klv0hx$_T?(xb?$V$Wp zLw)iBG%LKSS2Aw*I(47wAayIA&d4jr3da&owOUpEDK(raIV)sJZk1W#bE;maWt~$S za%#0|qF`ijSk|F>SdldA^se{tI7)nzQrFjXI<{Bu?wNRRuLTMVHG>uT2CMeAsD9v?Hnzc}xW+=_|P?~j6 znieR{dMHgRlx72zW+RlQ4N4>bOBtMhJJ=4T>44H~hSGFGX|_OVwnAyTpfoo?X|_RW zwnJ%lKxw+6G&`X*FN4zD2&K6RN@GE3c0pa}p3Z;obY2r|tmqTe1P?{u^CIzJ#gwpJR(hNaqhM_bgP?}LF&CO7n zS3qfA38lFOO0ySAvkyx1Dk#mZP?}dmY4$^DUIV2$0HrwyrFkus=5zp)^OJG)JK{Z-&ym1xj-#l;#+e=B-egw?S#{ zg3`PlN;3haxf@FJ4k*oWD9t;eG$)`mC!sX=Kxy6urMVYMb03uE6qM%OP@4BZY2FK^ zc^{PKG?eE3P@4OpG#`M{d=N@=21@e)l;%Mw%|lR{4?$@@45fJ(O7jsY%}1d$AA{0- z97^*Dl;%+=%_pEVk3nfZ38ncIl;+b=n#Z9upMlbR7E1FuD9z`gG*3Wjz5u29B9!J! zP@1z)nsZQ^FGFd*0;TyXl;&$tn)6VauS03R0j2pSl;&GdnhQ{xC!sXohSGcoO7mSP z&G(=*--put07~;iD9uw)njb-Fehj7g36$oiP@11XX?_l+c^XRd3npK4yE}Al;)pMntwrQ z2uh>rnpVW391bfr61VfE5C{i@gGoD2%0qTI)R*FBnm1SKiP&JMZvmIg3a{#wjN83V z-KRQ8-HN9(+0rE(OE}ePRrROTaHiy}kSV!UW`)nGdYzVaPHo7k)vAetk-=eEhw5QP z0tr<~w6AGh##uSCI5HA7mmS@s5(BY-ooOCcjWta?GnfpBtnX3|Jnq+n*Y6uBv~;3OMMROk#H-x3BSeyk?EqRem6B&ul1( zd3Q)ogq;1T^Ql>5)mA|5$5c)A^P0}idcCHsb!~dB(lfJGbyo&sA!}-{oN?y8JSrK= z?EAbITMZnsqe)eWCu04oz1p~7Y>y04<165wmOpMMQiBQGfmHd_N_ryxfNe!ppJ|DU zH{_-?LWa*ER3R9S45)%V9FNHW&ehrzc2=xT`Fri;#r1^z19D-iDyn3Aw$C@Rx-vbH zSZqKE2ExP6rF1S?vezGRZhrNA`sD$2?hU!VR;n*yC;MU%wWVH}6en)r5n?uNXN{?st`(qr>$R7YHD>AlW~7>gvdHZ%t1mCo>Z{gW0JR4>oPv)YZ-`LJgs6Hp4E~dO}w3jGAB76jNPE>EreA NFV(r%jzpw^_Zh)sfN%f+ literal 0 HcmV?d00001 diff --git a/voxygen/src/hud/img_ids.rs b/voxygen/src/hud/img_ids.rs index ff0f81d731..750534e663 100644 --- a/voxygen/src/hud/img_ids.rs +++ b/voxygen/src/hud/img_ids.rs @@ -30,10 +30,14 @@ image_ids! { xp_bar_left: "voxygen.element.skillbar.xp_bar_left", xp_bar_right: "voxygen.element.skillbar.xp_bar_right", skillbar_slot: "voxygen.element.skillbar.skillbar_slot", + skillbar_slot_act: "voxygen.element.skillbar.skillbar_slot_active", skillbar_slot_l: "voxygen.element.skillbar.skillbar_slot_l", skillbar_slot_r: "voxygen.element.skillbar.skillbar_slot_r", + skillbar_slot_l_act: "voxygen.element.skillbar.skillbar_slot_l_active", + skillbar_slot_r_act: "voxygen.element.skillbar.skillbar_slot_r_active", skillbar_slot_bg: "voxygen.element.skillbar.skillbar_slot_bg", skillbar_slot_big: "voxygen.element.skillbar.skillbar_slot_big", + skillbar_slot_big_act: "voxygen.element.skillbar.skillbar_slot_big_active", skillbar_slot_big_bg: "voxygen.element.skillbar.skillbar_slot_big_bg", healthbar_bg: "voxygen.element.skillbar.healthbar_bg", energybar_bg: "voxygen.element.skillbar.energybar_bg", @@ -97,7 +101,12 @@ image_ids! { // Crosshair crosshair_inner: "voxygen.element.misc_bg.crosshair_inner", - // Icons + + +//////////////////////////////////////////////////////////////////////// + + + // Skill Icons twohsword_m1: "voxygen.element.icons.2hsword_m1", twohsword_m2: "voxygen.element.icons.2hsword_m2", twohhammer_m1: "voxygen.element.icons.2hhammer_m1", @@ -111,8 +120,9 @@ image_ids! { flyingrod_m1: "voxygen.element.icons.debug_wand_m1", flyingrod_m2: "voxygen.element.icons.debug_wand_m2", -//////////////////////////////////////////////////////////////////////// - + charge: "voxygen.element.icons.skill_charge_2", + + // Icons flower: "voxygen.element.icons.item_flower", grass: "voxygen.element.icons.item_grass", diff --git a/voxygen/src/hud/mod.rs b/voxygen/src/hud/mod.rs index a318424935..ac28a706f8 100644 --- a/voxygen/src/hud/mod.rs +++ b/voxygen/src/hud/mod.rs @@ -1649,14 +1649,20 @@ impl Hud { let ecs = client.state().ecs(); let stats = ecs.read_storage::(); let energy = ecs.read_storage::(); + let character_state = ecs.read_storage::(); let entity = client.entity(); - if let (Some(stats), Some(energy)) = (stats.get(entity), energy.get(entity)) { + if let (Some(stats), Some(energy), Some(character_state)) = ( + stats.get(entity), + energy.get(entity), + character_state.get(entity), + ) { Skillbar::new( global_state, &self.imgs, &self.fonts, &stats, &energy, + &character_state, self.pulse, ) .set(self.ids.skillbar, ui_widgets); diff --git a/voxygen/src/hud/skillbar.rs b/voxygen/src/hud/skillbar.rs index cd935021c1..2422c8b3d5 100644 --- a/voxygen/src/hud/skillbar.rs +++ b/voxygen/src/hud/skillbar.rs @@ -3,7 +3,7 @@ use super::{ /*FOCUS_COLOR, RAGE_COLOR,*/ HP_COLOR, LOW_HP_COLOR, MANA_COLOR, TEXT_COLOR, XP_COLOR, }; use crate::GlobalState; -use common::comp::{item::Debug, item::Tool, Energy, ItemKind, Stats}; +use common::comp::{item::Debug, item::Tool, ActionState, CharacterState, Energy, ItemKind, Stats}; use conrod_core::{ color, widget::{self, Button, Image, Rectangle, Text}, @@ -32,14 +32,18 @@ widget_ids! { m1_slot, m1_slot_bg, m1_text, + m1_slot_act, m1_content, m2_slot, m2_slot_bg, m2_text, + m2_slot_act, m2_content, slot1, slot1_bg, slot1_text, + slot1_icon, + slot1_act, slot2, slot2_bg, slot2_text, @@ -98,6 +102,7 @@ pub struct Skillbar<'a> { fonts: &'a Fonts, stats: &'a Stats, energy: &'a Energy, + character_state: &'a CharacterState, pulse: f32, #[conrod(common_builder)] common: widget::CommonBuilder, @@ -111,6 +116,7 @@ impl<'a> Skillbar<'a> { fonts: &'a Fonts, stats: &'a Stats, energy: &'a Energy, + character_state: &'a CharacterState, pulse: f32, ) -> Self { Self { @@ -121,6 +127,7 @@ impl<'a> Skillbar<'a> { global_state, current_resource: ResourceType::Mana, common: widget::CommonBuilder::default(), + character_state, pulse, } } @@ -516,13 +523,32 @@ impl<'a> Widget for Skillbar<'a> { .mid_bottom_with_margin_on(ui.window, 9.0) .set(state.ids.hotbar_align, ui); // M1 Slot - Image::new(self.imgs.skillbar_slot_big) - .w_h(40.0 * scale, 40.0 * scale) - .top_left_with_margins_on(state.ids.hotbar_align, -40.0 * scale, 0.0) - .set(state.ids.m1_slot, ui); + + match self.character_state.action { + ActionState::Attack { .. } => { + let fade_pulse = (self.pulse * 4.0/*speed factor*/).cos() * 0.5 + 0.6; //Animation timer; + Image::new(self.imgs.skillbar_slot_big) + .w_h(40.0 * scale, 40.0 * scale) + .top_left_with_margins_on(state.ids.hotbar_align, -40.0 * scale, 0.0) + .set(state.ids.m1_slot, ui); + Image::new(self.imgs.skillbar_slot_big_act) + .w_h(40.0 * scale, 40.0 * scale) + .middle_of(state.ids.m1_slot) + .color(Some(Color::Rgba(1.0, 1.0, 1.0, fade_pulse))) + .floating(true) + .set(state.ids.m1_slot_act, ui); + } + _ => { + Image::new(self.imgs.skillbar_slot_big) + .w_h(40.0 * scale, 40.0 * scale) + .top_left_with_margins_on(state.ids.hotbar_align, -40.0 * scale, 0.0) + .set(state.ids.m1_slot, ui); + } + } } } // M1 Slot + Image::new(self.imgs.skillbar_slot_big_bg) .w_h(36.0 * scale, 36.0 * scale) .color(match self.stats.equipment.main.as_ref().map(|i| &i.kind) { @@ -566,10 +592,28 @@ impl<'a> Widget for Skillbar<'a> { .middle_of(state.ids.m1_slot_bg) .set(state.ids.m1_content, ui); // M2 Slot - Image::new(self.imgs.skillbar_slot_big) - .w_h(40.0 * scale, 40.0 * scale) - .right_from(state.ids.m1_slot, 0.0) - .set(state.ids.m2_slot, ui); + match self.character_state.action { + ActionState::Block { .. } => { + let fade_pulse = (self.pulse * 4.0/*speed factor*/).cos() * 0.5 + 0.6; //Animation timer; + Image::new(self.imgs.skillbar_slot_big) + .w_h(40.0 * scale, 40.0 * scale) + .right_from(state.ids.m1_slot, 0.0) + .set(state.ids.m2_slot, ui); + Image::new(self.imgs.skillbar_slot_big_act) + .w_h(40.0 * scale, 40.0 * scale) + .middle_of(state.ids.m2_slot) + .color(Some(Color::Rgba(1.0, 1.0, 1.0, fade_pulse))) + .floating(true) + .set(state.ids.m2_slot_act, ui); + } + _ => { + Image::new(self.imgs.skillbar_slot_big) + .w_h(40.0 * scale, 40.0 * scale) + .right_from(state.ids.m1_slot, 0.0) + .set(state.ids.m2_slot, ui); + } + } + Image::new(self.imgs.skillbar_slot_big_bg) .w_h(36.0 * scale, 36.0 * scale) .color(match self.stats.equipment.main.as_ref().map(|i| &i.kind) { @@ -653,15 +697,45 @@ impl<'a> Widget for Skillbar<'a> { .middle_of(state.ids.slot2) .set(state.ids.slot2_bg, ui); // Slot 1 - Image::new(self.imgs.skillbar_slot_l) - .w_h(20.0 * scale, 20.0 * scale) - .left_from(state.ids.slot2, 0.0) - .set(state.ids.slot1, ui); + // TODO: Don't hardcode this to one Skill... + // Frame flashes whenever the active skill inside this slot is activated + match self.character_state.action { + ActionState::Charge { time_left } => { + let fade = time_left.as_secs_f32() * 10.0; + Image::new(self.imgs.skillbar_slot_l) + .w_h(20.0 * scale, 20.0 * scale) + .left_from(state.ids.slot2, 0.0) + .set(state.ids.slot1, ui); + Image::new(self.imgs.skillbar_slot_l_act) + .w_h(20.0 * scale, 20.0 * scale) + .middle_of(state.ids.slot1) + .color(Some(Color::Rgba( + 1.0, + 1.0, + 1.0, + if fade > 0.6 { 0.6 } else { fade }, + ))) + .floating(true) + .set(state.ids.slot1_act, ui); + } + _ => { + Image::new(self.imgs.skillbar_slot_l) + .w_h(20.0 * scale, 20.0 * scale) + .left_from(state.ids.slot2, 0.0) + .set(state.ids.slot1, ui); + } + } Image::new(self.imgs.skillbar_slot_bg) .w_h(19.0 * scale, 19.0 * scale) .color(Some(BG_COLOR)) .middle_of(state.ids.slot1) .set(state.ids.slot1_bg, ui); + // TODO: Changeable slot image + Image::new(self.imgs.charge) + .w_h(18.0 * scale, 18.0 * scale) + //.color(Some(BG_COLOR)) + .middle_of(state.ids.slot1_bg) + .set(state.ids.slot1_icon, ui); // Slot 6 Image::new(self.imgs.skillbar_slot) .w_h(20.0 * scale, 20.0 * scale) diff --git a/voxygen/src/settings.rs b/voxygen/src/settings.rs index 940823465f..1e5dcb0b0d 100644 --- a/voxygen/src/settings.rs +++ b/voxygen/src/settings.rs @@ -88,7 +88,7 @@ impl Default for ControlSettings { respawn: KeyMouse::Key(VirtualKeyCode::Space), interact: KeyMouse::Mouse(MouseButton::Right), toggle_wield: KeyMouse::Key(VirtualKeyCode::T), - charge: KeyMouse::Key(VirtualKeyCode::V), + charge: KeyMouse::Key(VirtualKeyCode::Key1), } } } diff --git a/world/src/block/mod.rs b/world/src/block/mod.rs index 9559185177..f680f25ab0 100644 --- a/world/src/block/mod.rs +++ b/world/src/block/mod.rs @@ -281,10 +281,7 @@ impl<'a> BlockGen<'a> { && (marble * 3173.7).fract() < 0.6 && humidity > 0.4 { - let treasures = [ - BlockKind::Chest, - //BlockKind::Velorite, - ]; + let treasures = [BlockKind::Chest, BlockKind::Velorite]; let flowers = [ BlockKind::BlueFlower, @@ -334,14 +331,6 @@ impl<'a> BlockGen<'a> { }, Rgb::broadcast(0), )) - } else if (wposf.z as f32) < height + 0.9 - && chaos > 0.6 - && (wposf.z as f32 > water_height + 3.0) - && marble > 0.75 - && marble_small > 0.3 - && (marble * 7323.07).fract() < 0.75 - { - Some(Block::new(BlockKind::Velorite, Rgb::broadcast(0))) } else { None }