Update CHANGELOG.md, german locale

This commit is contained in:
Monty Marz 2020-08-03 01:53:02 +02:00
parent ecf6a84b2f
commit 1eb671e1a6
16 changed files with 153 additions and 271 deletions

View File

@ -49,6 +49,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Loading-Screen tips - Loading-Screen tips
- Feeding animation for some animals - Feeding animation for some animals
- Power stat to weapons which affects weapon damage - Power stat to weapons which affects weapon damage
- Add detection of entities under the cursor
- Functional group-system with exp-sharing and disabled damage to group members
### Changed ### Changed
@ -80,6 +83,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Fixed window resizing on Mac OS X. - Fixed window resizing on Mac OS X.
- Dehardcoded many item variants - Dehardcoded many item variants
- Tooltips avoid the mouse better and disappear when hovered - Tooltips avoid the mouse better and disappear when hovered
- Improved social window functions and visuals
### Removed ### Removed

32
Cargo.lock generated
View File

@ -219,6 +219,16 @@ dependencies = [
"winapi 0.3.8", "winapi 0.3.8",
] ]
[[package]]
name = "auth-common"
version = "0.1.0"
source = "git+https://gitlab.com/veloren/auth.git?rev=223a4097f7ebc8d451936dccb5e6517194bbf086#223a4097f7ebc8d451936dccb5e6517194bbf086"
dependencies = [
"rand 0.7.3",
"serde",
"uuid",
]
[[package]] [[package]]
name = "auth-common" name = "auth-common"
version = "0.1.0" version = "0.1.0"
@ -229,12 +239,26 @@ dependencies = [
"uuid", "uuid",
] ]
[[package]]
name = "authc"
version = "1.0.0"
source = "git+https://gitlab.com/veloren/auth.git?rev=223a4097f7ebc8d451936dccb5e6517194bbf086#223a4097f7ebc8d451936dccb5e6517194bbf086"
dependencies = [
"auth-common 0.1.0 (git+https://gitlab.com/veloren/auth.git?rev=223a4097f7ebc8d451936dccb5e6517194bbf086)",
"fxhash",
"hex",
"rust-argon2 0.8.2",
"serde_json",
"ureq",
"uuid",
]
[[package]] [[package]]
name = "authc" name = "authc"
version = "1.0.0" version = "1.0.0"
source = "git+https://gitlab.com/veloren/auth.git?rev=b943c85e4a38f5ec60cd18c34c73097640162bfe#b943c85e4a38f5ec60cd18c34c73097640162bfe" source = "git+https://gitlab.com/veloren/auth.git?rev=b943c85e4a38f5ec60cd18c34c73097640162bfe#b943c85e4a38f5ec60cd18c34c73097640162bfe"
dependencies = [ dependencies = [
"auth-common", "auth-common 0.1.0 (git+https://gitlab.com/veloren/auth.git?rev=b943c85e4a38f5ec60cd18c34c73097640162bfe)",
"fxhash", "fxhash",
"hex", "hex",
"rust-argon2 0.8.2", "rust-argon2 0.8.2",
@ -4601,7 +4625,7 @@ dependencies = [
name = "veloren-client" name = "veloren-client"
version = "0.6.0" version = "0.6.0"
dependencies = [ dependencies = [
"authc", "authc 1.0.0 (git+https://gitlab.com/veloren/auth.git?rev=b943c85e4a38f5ec60cd18c34c73097640162bfe)",
"byteorder 1.3.4", "byteorder 1.3.4",
"futures-executor", "futures-executor",
"futures-timer", "futures-timer",
@ -4622,7 +4646,7 @@ name = "veloren-common"
version = "0.6.0" version = "0.6.0"
dependencies = [ dependencies = [
"arraygen", "arraygen",
"authc", "authc 1.0.0 (git+https://gitlab.com/veloren/auth.git?rev=223a4097f7ebc8d451936dccb5e6517194bbf086)",
"criterion", "criterion",
"crossbeam", "crossbeam",
"dot_vox", "dot_vox",
@ -4650,7 +4674,7 @@ dependencies = [
name = "veloren-server" name = "veloren-server"
version = "0.6.0" version = "0.6.0"
dependencies = [ dependencies = [
"authc", "authc 1.0.0 (git+https://gitlab.com/veloren/auth.git?rev=b943c85e4a38f5ec60cd18c34c73097640162bfe)",
"chrono", "chrono",
"crossbeam", "crossbeam",
"diesel", "diesel",

View File

@ -88,7 +88,7 @@
(0.50, "common.items.weapons.staff.starter_staff"), (0.50, "common.items.weapons.staff.starter_staff"),
(0.35, "common.items.weapons.staff.bone_staff"), (0.35, "common.items.weapons.staff.bone_staff"),
(0.15, "common.items.weapons.staff.amethyst_staff"), (0.15, "common.items.weapons.staff.amethyst_staff"),
(0.01, "common.items.weapons.staff.cultist_staff"), //(0.01, "common.items.weapons.staff.cultist_staff"),
// hammers // hammers
(0.05, "common.items.weapons.hammer.starter_hammer"), (0.05, "common.items.weapons.hammer.starter_hammer"),
(0.05, "common.items.weapons.hammer.wood_hammer-0"), (0.05, "common.items.weapons.hammer.wood_hammer-0"),

View File

@ -68,6 +68,7 @@ VoxygenLocalization(
"common.none": "Kein", "common.none": "Kein",
"common.error": "Fehler", "common.error": "Fehler",
"common.fatal_error": "Fataler Fehler", "common.fatal_error": "Fataler Fehler",
"common.decline": "Ablehnen",
/// End Common section /// End Common section
// Message when connection to the server is lost // Message when connection to the server is lost
@ -306,7 +307,7 @@ magischen Gegenstände ergattern?"#,
"hud.settings.unbound": "-", "hud.settings.unbound": "-",
"hud.settings.reset_keybinds": "Auf Standard zurücksetzen", "hud.settings.reset_keybinds": "Auf Standard zurücksetzen",
"hud.social": "Sozial", "hud.social": "Andere Spieler ",
"hud.social.online": "Online", "hud.social.online": "Online",
"hud.social.friends": "Freunde", "hud.social.friends": "Freunde",
"hud.social.not_yet_available": "Noch nicht verfügbar", "hud.social.not_yet_available": "Noch nicht verfügbar",
@ -315,6 +316,21 @@ magischen Gegenstände ergattern?"#,
"hud.spell": "Zauber", "hud.spell": "Zauber",
"hud.social.name" : "Name",
"hud.social.level" : "Lvl",
"hud.social.zone" : "Gebiet",
"hud.group": "Gruppe",
"hud.group.invite": "Einladen",
"hud.group.leave": "Verlassen",
"hud.group.add_friend": "Freund hinzufügen",
"hud.group.assign_leader": "Anführer",
"hud.group.kick": "Entfernen",
"hud.group.invite_to_join": "{name} hat euch zu seiner Gruppe eingeladen!",
"hud.group.dead" : "Tot",
"hud.group.out_of_range": "Außer Reichweite",
"hud.group.link_group": "Gruppen verbinden",
"hud.crafting": "Herstellen", "hud.crafting": "Herstellen",
"hud.crafting.recipes": "Rezepte", "hud.crafting.recipes": "Rezepte",
"hud.crafting.ingredients": "Zutaten:", "hud.crafting.ingredients": "Zutaten:",
@ -376,6 +392,8 @@ magischen Gegenstände ergattern?"#,
"gameinput.freelook": "Freie Sicht", "gameinput.freelook": "Freie Sicht",
"gameinput.autowalk": "Automatisch Laufen", "gameinput.autowalk": "Automatisch Laufen",
"gameinput.dance": "Tanzen", "gameinput.dance": "Tanzen",
"gameinput.declinegroupinvite": "Ablehnen",
"gameinput.acceptgroupinvite": "Annehmen",
/// End GameInput section /// End GameInput section

View File

@ -71,6 +71,7 @@ VoxygenLocalization(
"common.none": "None", "common.none": "None",
"common.error": "Error", "common.error": "Error",
"common.fatal_error": "Fatal Error", "common.fatal_error": "Fatal Error",
"common.you": "You",
// Message when connection to the server is lost // Message when connection to the server is lost
"common.connection_lost": r#"Connection lost! "common.connection_lost": r#"Connection lost!
@ -307,7 +308,7 @@ magically infused items?"#,
"hud.settings.unbound": "None", "hud.settings.unbound": "None",
"hud.settings.reset_keybinds": "Reset to Defaults", "hud.settings.reset_keybinds": "Reset to Defaults",
"hud.social": "Social", "hud.social": "Other Players",
"hud.social.online": "Online:", "hud.social.online": "Online:",
"hud.social.friends": "Friends", "hud.social.friends": "Friends",
"hud.social.not_yet_available": "Not yet available", "hud.social.not_yet_available": "Not yet available",
@ -325,13 +326,16 @@ magically infused items?"#,
"hud.crafting.tool_cata": "Requires:", "hud.crafting.tool_cata": "Requires:",
"hud.group": "Group", "hud.group": "Group",
"hud.group.invite_to_join": "{name} invited you to their group.", "hud.group.invite_to_join": "{name} invited you to their group!",
"hud.group.invite": "Invite", "hud.group.invite": "Invite",
"hud.group.kick": "Kick", "hud.group.kick": "Kick",
"hud.group.assign_leader": "Assign Leader", "hud.group.assign_leader": "Assign Leader",
"hud.group.leave": "Leave Group", "hud.group.leave": "Leave Group",
"hud.group.dead" : "Dead", "hud.group.dead" : "Dead",
"hud.group.out_of_range": "Out of range", "hud.group.out_of_range": "Out of range",
"hud.group.add_friend": "Add to Friends",
"hud.group.link_group": "Link Groups",
"hud.group.in_menu": "In Menu",
"hud.spell": "Spells", "hud.spell": "Spells",
@ -453,7 +457,8 @@ Protection
"Press 'F1' to see all default keybindings.", "Press 'F1' to see all default keybindings.",
"You can type /say or /s to only chat with players directly around you.", "You can type /say or /s to only chat with players directly around you.",
"You can type /region or /r to only chat with players a couple of hundred blocks around you.", "You can type /region or /r to only chat with players a couple of hundred blocks around you.",
"To send private message type /tell followed by a player name and your message.", "You can type /group or /g to only chat with players in your current group.",
"To send private messages type /tell followed by a player name and your message.",
"NPCs with the same level can have a different difficulty.", "NPCs with the same level can have a different difficulty.",
"Look at the ground for food, chests and other loot!", "Look at the ground for food, chests and other loot!",
"Inventory filled with food? Try crafting better food from it!", "Inventory filled with food? Try crafting better food from it!",
@ -465,6 +470,7 @@ Protection
"Press 'L-Shift' to open your Glider and conquer the skies.", "Press 'L-Shift' to open your Glider and conquer the skies.",
"Veloren is still in Pre-Alpha. We do our best to improve it every day!", "Veloren is still in Pre-Alpha. We do our best to improve it every day!",
"If you want to join the Dev-Team or just have a chat with us join our Discord-Server.", "If you want to join the Dev-Team or just have a chat with us join our Discord-Server.",
"You can toggle showing your amount of health on the healthbar in the settings.",
], ],
"npc.speech.villager_under_attack": [ "npc.speech.villager_under_attack": [
"Help, I'm under attack!", "Help, I'm under attack!",

Binary file not shown.

View File

@ -17,8 +17,8 @@ use byteorder::{ByteOrder, LittleEndian};
use common::{ use common::{
character::CharacterItem, character::CharacterItem,
comp::{ comp::{
self, ControlAction, ControlEvent, Controller, ControllerInputs, GroupManip, self, group, ControlAction, ControlEvent, Controller, ControllerInputs, GroupManip,
InventoryManip, InventoryUpdateEvent, group, InventoryManip, InventoryUpdateEvent,
}, },
msg::{ msg::{
validate_chat_msg, ChatMsgValidationError, ClientMsg, ClientState, Notification, validate_chat_msg, ChatMsgValidationError, ClientMsg, ClientState, Notification,
@ -434,7 +434,9 @@ impl Client {
pub fn group_invite(&self) -> Option<Uid> { self.group_invite } pub fn group_invite(&self) -> Option<Uid> { self.group_invite }
pub fn group_info(&self) -> Option<(String, Uid)> { self.group_leader.map(|l| ("TODO".into(), l)) } pub fn group_info(&self) -> Option<(String, Uid)> {
self.group_leader.map(|l| ("Group".into(), l)) // TODO
}
pub fn group_members(&self) -> &HashMap<Uid, group::Role> { &self.group_members } pub fn group_members(&self) -> &HashMap<Uid, group::Role> { &self.group_members }

View File

@ -29,7 +29,7 @@ crossbeam = "0.7"
notify = "5.0.0-pre.3" notify = "5.0.0-pre.3"
indexmap = "1.3.0" indexmap = "1.3.0"
sum_type = "0.2.0" sum_type = "0.2.0"
authc = { git = "https://gitlab.com/veloren/auth.git", rev = "223a4097f7ebc8d451936dccb5e6517194bbf086" } authc = { git = "https://gitlab.com/veloren/auth.git", rev = "b943c85e4a38f5ec60cd18c34c73097640162bfe" }
slab = "0.4.2" slab = "0.4.2"
[dev-dependencies] [dev-dependencies]

View File

@ -137,7 +137,7 @@ impl GroupManager {
fn create_group(&mut self, leader: specs::Entity) -> Group { fn create_group(&mut self, leader: specs::Entity) -> Group {
Group(self.groups.insert(GroupInfo { Group(self.groups.insert(GroupInfo {
leader, leader,
name: "Flames".into(), name: "Group".into(),
}) as u32) }) as u32)
} }

View File

@ -229,7 +229,7 @@ impl<'a> Widget for Bag<'a> {
) )
.mid_top_with_margin_on(state.ids.bg_frame, 9.0) .mid_top_with_margin_on(state.ids.bg_frame, 9.0)
.font_id(self.fonts.cyri.conrod_id) .font_id(self.fonts.cyri.conrod_id)
.font_size(self.fonts.cyri.scale(22)) .font_size(self.fonts.cyri.scale(20))
.color(Color::Rgba(0.0, 0.0, 0.0, 1.0)) .color(Color::Rgba(0.0, 0.0, 0.0, 1.0))
.set(state.ids.inventory_title_bg, ui); .set(state.ids.inventory_title_bg, ui);
Text::new( Text::new(
@ -240,7 +240,7 @@ impl<'a> Widget for Bag<'a> {
) )
.top_left_with_margins_on(state.ids.inventory_title_bg, 2.0, 2.0) .top_left_with_margins_on(state.ids.inventory_title_bg, 2.0, 2.0)
.font_id(self.fonts.cyri.conrod_id) .font_id(self.fonts.cyri.conrod_id)
.font_size(self.fonts.cyri.scale(22)) .font_size(self.fonts.cyri.scale(20))
.color(TEXT_COLOR) .color(TEXT_COLOR)
.set(state.ids.inventory_title, ui); .set(state.ids.inventory_title, ui);
// Scrollbar-BG // Scrollbar-BG

View File

@ -117,23 +117,6 @@ impl<'a> Widget for Crafting<'a> {
) )
}); });
} }
/*if state.ids.recipe_img_frame.len() < self.client.recipe_book().iter().len() {
state.update(|state| {
state.ids.recipe_img_frame.resize(
self.client.recipe_book().iter().len(),
&mut ui.widget_id_generator(),
)
});
}
if state.ids.recipe_img.len() < self.client.recipe_book().iter().len() {
state.update(|state| {
state.ids.recipe_img.resize(
self.client.recipe_book().iter().len(),
&mut ui.widget_id_generator(),
)
});
}*/
let ids = &state.ids; let ids = &state.ids;
let mut events = Vec::new(); let mut events = Vec::new();
@ -186,7 +169,7 @@ impl<'a> Widget for Crafting<'a> {
Text::new(&self.localized_strings.get("hud.crafting")) Text::new(&self.localized_strings.get("hud.crafting"))
.mid_top_with_margin_on(ids.window_frame, 9.0) .mid_top_with_margin_on(ids.window_frame, 9.0)
.font_id(self.fonts.cyri.conrod_id) .font_id(self.fonts.cyri.conrod_id)
.font_size(self.fonts.cyri.scale(22)) .font_size(self.fonts.cyri.scale(20))
.color(TEXT_COLOR) .color(TEXT_COLOR)
.set(ids.title_main, ui); .set(ids.title_main, ui);

View File

@ -205,7 +205,7 @@ impl<'a> Widget for Group<'a> {
// broken // broken
if self.show.group_menu || open_invite.is_some() { if self.show.group_menu || open_invite.is_some() {
// Frame // Frame
Rectangle::fill_with([220.0, 230.0], color::Color::Rgba(0.0, 0.0, 0.0, 0.8)) Rectangle::fill_with([220.0, 165.0], color::Color::Rgba(0.0, 0.0, 0.0, 0.8))
.bottom_left_with_margins_on(ui.window, 220.0, 10.0) .bottom_left_with_margins_on(ui.window, 220.0, 10.0)
.set(state.ids.bg, ui); .set(state.ids.bg, ui);
} }
@ -358,15 +358,17 @@ impl<'a> Widget for Group<'a> {
// Health Text // Health Text
let txt = format!( let txt = format!(
"{}/{}", "{}/{}",
stats.health.current() as u32, stats.health.current() / 10 as u32,
stats.health.maximum() as u32, stats.health.maximum() / 10 as u32,
); );
// Change font size depending on health amount
let font_size = match stats.health.maximum() { let font_size = match stats.health.maximum() {
0..=999 => 14, 0..=999 => 14,
1000..=9999 => 13, 1000..=9999 => 13,
10000..=99999 => 12, 10000..=99999 => 12,
_ => 11, _ => 11,
}; };
// Change text offset depending on health amount
let txt_offset = match stats.health.maximum() { let txt_offset = match stats.health.maximum() {
0..=999 => 4.0, 0..=999 => 4.0,
1000..=9999 => 4.5, 1000..=9999 => 4.5,
@ -460,10 +462,11 @@ impl<'a> Widget for Group<'a> {
if Button::image(self.imgs.button) if Button::image(self.imgs.button)
.w_h(90.0, 22.0) .w_h(90.0, 22.0)
.top_right_with_margins_on(state.ids.bg, 30.0, 5.0) .top_right_with_margins_on(state.ids.bg, 30.0, 5.0)
.hover_image(self.imgs.button) .hover_image(self.imgs.button) // Change this when the friendslist is working
.press_image(self.imgs.button) .press_image(self.imgs.button) // Change this when the friendslist is working
.label("Add to Friends")
.label_color(TEXT_COLOR_GREY) // Change this when the friendslist is working .label_color(TEXT_COLOR_GREY) // Change this when the friendslist is working
.image_color (TEXT_COLOR_GREY) // Change this when the friendslist is working
.label(&self.localized_strings.get("hud.group.add_friend"))
.label_font_id(self.fonts.cyri.conrod_id) .label_font_id(self.fonts.cyri.conrod_id)
.label_font_size(self.fonts.cyri.scale(10)) .label_font_size(self.fonts.cyri.scale(10))
.set(state.ids.btn_friend, ui) .set(state.ids.btn_friend, ui)
@ -482,6 +485,7 @@ impl<'a> Widget for Group<'a> {
.was_clicked() .was_clicked()
{ {
self.show.group_menu = false; self.show.group_menu = false;
self.show.group = !self.show.group;
events.push(Event::LeaveGroup); events.push(Event::LeaveGroup);
}; };
// Group leader functions // Group leader functions
@ -514,8 +518,11 @@ impl<'a> Widget for Group<'a> {
.mid_bottom_with_margin_on(state.ids.btn_leader, -27.0) .mid_bottom_with_margin_on(state.ids.btn_leader, -27.0)
.hover_image(self.imgs.button) .hover_image(self.imgs.button)
.press_image(self.imgs.button) .press_image(self.imgs.button)
.label("Link Group") // TODO: Localize .label(&self.localized_strings.get("hud.group.link_group"))
.label_color(TEXT_COLOR_GREY) // Change this when the linking is working .hover_image(self.imgs.button) // Change this when the friendslist is working
.press_image(self.imgs.button) // Change this when the friendslist is working
.label_color(TEXT_COLOR_GREY) // Change this when the friendslist is working
.image_color (TEXT_COLOR_GREY) // Change this when the friendslist is working
.label_font_id(self.fonts.cyri.conrod_id) .label_font_id(self.fonts.cyri.conrod_id)
.label_font_size(self.fonts.cyri.scale(10)) .label_font_size(self.fonts.cyri.scale(10))
.set(state.ids.btn_link, ui) .set(state.ids.btn_link, ui)
@ -557,7 +564,7 @@ impl<'a> Widget for Group<'a> {
}) })
} }
// Scrollable area for group member names // Scrollable area for group member names
Rectangle::fill_with([110.0, 192.0], color::TRANSPARENT) Rectangle::fill_with([110.0, 135.0], color::TRANSPARENT)
.top_left_with_margins_on(state.ids.bg, 30.0, 5.0) .top_left_with_margins_on(state.ids.bg, 30.0, 5.0)
.scroll_kids() .scroll_kids()
.scroll_kids_vertically() .scroll_kids_vertically()
@ -582,7 +589,7 @@ impl<'a> Widget for Group<'a> {
if i == 0 { if i == 0 {
w.top_left_with_margins_on(state.ids.scroll_area, 5.0, 0.0) w.top_left_with_margins_on(state.ids.scroll_area, 5.0, 0.0)
} else { } else {
w.down_from(state.ids.members[i - 1], 10.0) w.down_from(state.ids.members[i - 1], 5.0)
} }
}) })
.hover_image(self.imgs.selection_hover) .hover_image(self.imgs.selection_hover)

View File

@ -409,7 +409,6 @@ impl Show {
fn social(&mut self, open: bool) { fn social(&mut self, open: bool) {
if !self.esc_menu { if !self.esc_menu {
self.social = open; self.social = open;
self.crafting = false;
self.spell = false; self.spell = false;
self.want_grab = !open; self.want_grab = !open;
} }
@ -509,7 +508,7 @@ impl Show {
} }
fn toggle_social(&mut self) { fn toggle_social(&mut self) {
self.social = !self.social; self.social(!self.social);
self.spell = false; self.spell = false;
} }
@ -1925,22 +1924,25 @@ impl Hud {
// Social Window // Social Window
if self.show.social { if self.show.social {
let ecs = client.state().ecs(); let ecs = client.state().ecs();
let stats = ecs.read_storage::<comp::Stats>(); let _stats = ecs.read_storage::<comp::Stats>();
let me = client.entity(); let me = client.entity();
if let Some(stats) = stats.get(me) { if let Some(_stats) = stats.get(me) {
for event in Social::new( for event in Social::new(
&self.show, &self.show,
client, client,
&self.imgs, &self.imgs,
&self.fonts, &self.fonts,
&self.voxygen_i18n, &self.voxygen_i18n,
&stats, //&stats,
info.selected_entity, info.selected_entity,
) )
.set(self.ids.social_window, ui_widgets) .set(self.ids.social_window, ui_widgets)
{ {
match event { match event {
social::Event::Close => self.show.social(false), social::Event::Close => {
self.show.social(false);
self.force_ungrab = true;
},
social::Event::ChangeSocialTab(social_tab) => { social::Event::ChangeSocialTab(social_tab) => {
self.show.open_social_tab(social_tab) self.show.open_social_tab(social_tab)
}, },
@ -1950,7 +1952,6 @@ impl Hud {
} }
} }
// Group Window // Group Window
for event in Group::new( for event in Group::new(
&mut self.show, &mut self.show,
client, client,

View File

@ -1190,6 +1190,10 @@ impl<'a> Widget for SettingsWindow<'a> {
.color(TEXT_COLOR) .color(TEXT_COLOR)
.set(state.ids.chat_char_name_text, ui); .set(state.ids.chat_char_name_text, ui);
// Show account name in chat
// Show account names in social window
// Language select drop down // Language select drop down
Text::new(&self.localized_strings.get("common.languages")) Text::new(&self.localized_strings.get("common.languages"))
.down_from(state.ids.chat_char_name_button, 20.0) .down_from(state.ids.chat_char_name_button, 20.0)

View File

@ -2,7 +2,7 @@ use super::{img_ids::Imgs, Show, TEXT_COLOR, TEXT_COLOR_3, UI_HIGHLIGHT_0, UI_MA
use crate::{i18n::VoxygenLocalization, ui::fonts::ConrodVoxygenFonts}; use crate::{i18n::VoxygenLocalization, ui::fonts::ConrodVoxygenFonts};
use client::{self, Client}; use client::{self, Client};
use common::{comp::Stats, sync::Uid}; use common::sync::Uid;
use conrod_core::{ use conrod_core::{
color, color,
widget::{self, Button, Image, Rectangle, Scrollbar, Text}, widget::{self, Button, Image, Rectangle, Scrollbar, Text},
@ -14,6 +14,7 @@ widget_ids! {
pub struct Ids { pub struct Ids {
frame, frame,
close, close,
title_align,
title, title,
bg, bg,
icon, icon,
@ -62,8 +63,7 @@ pub struct Social<'a> {
imgs: &'a Imgs, imgs: &'a Imgs,
fonts: &'a ConrodVoxygenFonts, fonts: &'a ConrodVoxygenFonts,
localized_strings: &'a std::sync::Arc<VoxygenLocalization>, localized_strings: &'a std::sync::Arc<VoxygenLocalization>,
stats: &'a Stats, //stats: &'a Stats,
selected_entity: Option<(specs::Entity, Instant)>, selected_entity: Option<(specs::Entity, Instant)>,
#[conrod(common_builder)] #[conrod(common_builder)]
@ -77,7 +77,7 @@ impl<'a> Social<'a> {
imgs: &'a Imgs, imgs: &'a Imgs,
fonts: &'a ConrodVoxygenFonts, fonts: &'a ConrodVoxygenFonts,
localized_strings: &'a std::sync::Arc<VoxygenLocalization>, localized_strings: &'a std::sync::Arc<VoxygenLocalization>,
stats: &'a Stats, //stats: &'a Stats,
selected_entity: Option<(specs::Entity, Instant)>, selected_entity: Option<(specs::Entity, Instant)>,
) -> Self { ) -> Self {
Self { Self {
@ -86,7 +86,7 @@ impl<'a> Social<'a> {
imgs, imgs,
fonts, fonts,
localized_strings, localized_strings,
stats, //stats,
selected_entity, selected_entity,
common: widget::CommonBuilder::default(), common: widget::CommonBuilder::default(),
} }
@ -120,7 +120,11 @@ impl<'a> Widget for Social<'a> {
let mut events = Vec::new(); let mut events = Vec::new();
// Window frame and BG // Window frame and BG
let pos = if self.show.group { 180.0 } else { 25.0 }; let pos = if self.show.group || self.show.group_menu {
200.0
} else {
25.0
};
// TODO: Different window visuals depending on the selected tab // TODO: Different window visuals depending on the selected tab
let window_bg = match &self.show.social_tab { let window_bg = match &self.show.social_tab {
SocialTab::Online => self.imgs.social_bg_on, SocialTab::Online => self.imgs.social_bg_on,
@ -133,7 +137,7 @@ impl<'a> Widget for Social<'a> {
SocialTab::Faction => self.imgs.social_frame_fact, SocialTab::Faction => self.imgs.social_frame_fact,
}; };
Image::new(window_bg) Image::new(window_bg)
.top_left_with_margins_on(ui.window, 200.0, pos) .bottom_left_with_margins_on(ui.window, 308.0, pos)
.color(Some(UI_MAIN)) .color(Some(UI_MAIN))
.w_h(280.0, 460.0) .w_h(280.0, 460.0)
.set(state.ids.bg, ui); .set(state.ids.bg, ui);
@ -160,10 +164,13 @@ impl<'a> Widget for Social<'a> {
} }
// Title // Title
Rectangle::fill_with([212.0, 42.0], color::TRANSPARENT)
.top_left_with_margins_on(state.ids.frame, 2.0, 44.0)
.set(state.ids.title_align, ui);
Text::new(&self.localized_strings.get("hud.social")) Text::new(&self.localized_strings.get("hud.social"))
.mid_top_with_margin_on(state.ids.frame, 9.0) .middle_of(state.ids.title_align)
.font_id(self.fonts.cyri.conrod_id) .font_id(self.fonts.cyri.conrod_id)
.font_size(self.fonts.cyri.scale(22)) .font_size(self.fonts.cyri.scale(20))
.color(TEXT_COLOR) .color(TEXT_COLOR)
.set(state.ids.title, ui); .set(state.ids.title, ui);
@ -186,7 +193,7 @@ impl<'a> Widget for Social<'a> {
SocialTab::Online => UI_MAIN, SocialTab::Online => UI_MAIN,
_ => Color::Rgba(1.0, 1.0, 1.0, 0.6), _ => Color::Rgba(1.0, 1.0, 1.0, 0.6),
}) })
.top_right_with_margins_on(state.ids.frame, 50.0, -28.0) .top_right_with_margins_on(state.ids.frame, 50.0, -27.0)
.set(state.ids.online_tab, ui) .set(state.ids.online_tab, ui)
.was_clicked() .was_clicked()
{ {
@ -322,7 +329,7 @@ impl<'a> Widget for Social<'a> {
.font_size(self.fonts.cyri.scale(14)) .font_size(self.fonts.cyri.scale(14))
.color(TEXT_COLOR) .color(TEXT_COLOR)
.set(state.ids.online_txt, ui); .set(state.ids.online_txt, ui);
Text::new(&count.to_string()) Text::new(&(count - 1).to_string())
.right_from(state.ids.online_txt, 5.0) .right_from(state.ids.online_txt, 5.0)
.font_id(self.fonts.cyri.conrod_id) .font_id(self.fonts.cyri.conrod_id)
.font_size(self.fonts.cyri.scale(14)) .font_size(self.fonts.cyri.scale(14))
@ -356,24 +363,33 @@ impl<'a> Widget for Social<'a> {
for (i, (&uid, player_info)) in for (i, (&uid, player_info)) in
players.filter(|(uid, _)| Some(**uid) != my_uid).enumerate() players.filter(|(uid, _)| Some(**uid) != my_uid).enumerate()
{ {
let hide_username = true;
let zone = "Wilderness"; // TODO Add real zone
let selected = state.selected_uid.map_or(false, |u| u.0 == uid); let selected = state.selected_uid.map_or(false, |u| u.0 == uid);
let alias = &player_info.player_alias; let alias = &player_info.player_alias;
let name = match &player_info.character { let name_text = match &player_info.character {
Some(character) => format!("{} ", &character.name), Some(character) => {
None => "<None>".to_string(), // character select or spectating if Some(uid) == my_uid {
format!(
"{} ({})",
&self.localized_strings.get("hud.common.you"),
&character.name
)
} else if hide_username {
character.name.clone()
} else {
format!("[{}] {}", alias, &character.name)
}
},
None => alias.clone(), // character select or spectating
}; };
let level = match &player_info.character { let level = match &player_info.character {
Some(character) => format!("{} ", &character.level), Some(character) => format!("{} ", &character.level),
None => "<None>".to_string(), // character select or spectating None => "".to_string(), // character select or spectating
}; };
let setting = true; // TODO Remove this let zone_name = match &player_info.character {
let zone = "Wilderness"; // TODO: Add real zone None => self.localized_strings.get("hud.group.in_menu").to_string(), /* character select or spectating */
let name_text = if name == self.stats.name { _ => format!("{} ", &zone),
format!("You ({})", name) // TODO: Locale
} else if setting {
format!("{}", name)
} else {
format!("[{}] {}", alias, name)
}; };
// Player name widgets // Player name widgets
let button = Button::image(if !selected { let button = Button::image(if !selected {
@ -417,9 +433,9 @@ impl<'a> Widget for Social<'a> {
.color(TEXT_COLOR) .color(TEXT_COLOR)
.set(state.ids.player_levels[i], ui); .set(state.ids.player_levels[i], ui);
let zone_txt = if i == 0 { let zone_txt = if i == 0 {
Text::new(&zone).mid_top_with_margin_on(state.ids.zones_align, 2.0) Text::new(&zone_name).mid_top_with_margin_on(state.ids.zones_align, 2.0)
} else { } else {
Text::new(&zone).down_from(state.ids.player_zones[i - 1], 2.0) Text::new(&zone_name).down_from(state.ids.player_zones[i - 1], 2.0)
}; };
zone_txt zone_txt
.font_size(self.fonts.cyri.scale(14)) .font_size(self.fonts.cyri.scale(14))
@ -496,189 +512,6 @@ impl<'a> Widget for Social<'a> {
} }
} // End of Online Tab } // End of Online Tab
// Alignment
/*
// Online Tab
// Contents
if let SocialTab::Online = self.show.social_tab {
// Players list
// TODO: this list changes infrequently enough that it should not have to be
// recreated every frame
let players = self.client.player_list.iter().filter(|(_, p)| p.is_online);
let count = players.clone().count();
if state.ids.player_names.len() < count {
state.update(|s| {
s.ids
.player_names
.resize(count, &mut ui.widget_id_generator())
})
}
Text::new(
&self
.localized_strings
.get("hud.social.play_online_fmt")
.replace("{nb_player}", &format!("{:?}", count)),
)
.top_left_with_margins_on(state.ids.content_align, -2.0, 7.0)
.font_size(self.fonts.cyri.scale(14))
.font_id(self.fonts.cyri.conrod_id)
.color(TEXT_COLOR)
.set(state.ids.online_title, ui);
// Clear selected player if an entity was selected
if state
.selected_uid
.zip(self.selected_entity)
// Compare instants
.map_or(false, |(u, e)| u.1 < e.1)
{
state.update(|s| s.selected_uid = None);
}
for (i, (&uid, player_info)) in players.enumerate() {
let selected = state.selected_uid.map_or(false, |u| u.0 == uid);
let alias = &player_info.player_alias;
let character_name_level = match &player_info.character {
Some(character) => format!("{} Lvl {}", &character.name, &character.level),
None => "<None>".to_string(), // character select or spectating
};
let text = if selected {
format!("-> [{}] {}", alias, character_name_level)
} else {
format!("[{}] {}", alias, character_name_level)
};
Text::new(&text)
.down(3.0)
.font_size(self.fonts.cyri.scale(15))
.font_id(self.fonts.cyri.conrod_id)
.color(TEXT_COLOR)
.set(state.ids.player_names[i], ui);
// Check for click
if ui
.widget_input(state.ids.player_names[i])
.clicks()
.left()
.next()
.is_some()
{
state.update(|s| s.selected_uid = Some((uid, Instant::now())));
}
}
// Invite Button
if self
.client
.group_info()
.map_or(true, |(_, l_uid)| self.client.uid() == Some(l_uid))
{
let selected = state.selected_uid.map(|s| s.0).or_else(|| {
self.selected_entity
.and_then(|s| self.client.state().read_component_copied(s.0))
});
if Button::image(self.imgs.button)
.down(3.0)
.w_h(150.0, 30.0)
.hover_image(self.imgs.button_hover)
.press_image(self.imgs.button_press)
.label(&self.localized_strings.get("hud.group.invite"))
.label_y(conrod_core::position::Relative::Scalar(3.0))
.label_color(if selected.is_some() {
TEXT_COLOR
} else {
TEXT_COLOR_3
})
.label_font_size(self.fonts.cyri.scale(15))
.label_font_id(self.fonts.cyri.conrod_id)
.set(state.ids.invite_button, ui)
.was_clicked()
{
if let Some(uid) = selected {
events.push(Event::Invite(uid));
state.update(|s| {
s.selected_uid = None;
});
}
}
}
}
// Friends Tab
if Button::image(if let SocialTab::Friends = self.show.social_tab {
self.imgs.social_button_pressed
} else {
self.imgs.social_button
})
.w_h(30.0 * 4.0, 12.0 * 4.0)
.hover_image(if let SocialTab::Friends = self.show.social_tab {
self.imgs.social_button_pressed
} else {
self.imgs.social_button
})
.press_image(if let SocialTab::Friends = self.show.social_tab {
self.imgs.social_button_pressed
} else {
self.imgs.social_button
})
.right_from(state.ids.online_tab, 0.0)
.label(&self.localized_strings.get("hud.social.friends"))
.label_font_size(self.fonts.cyri.scale(14))
.label_font_id(self.fonts.cyri.conrod_id)
.parent(state.ids.frame)
.color(UI_MAIN)
.label_color(TEXT_COLOR_3)
.set(state.ids.friends_tab, ui)
.was_clicked()
{
events.push(Event::ChangeSocialTab(SocialTab::Friends));
}
// Contents
if let SocialTab::Friends = self.show.social_tab {
Text::new(&self.localized_strings.get("hud.social.not_yet_available"))
.middle_of(state.ids.content_align)
.font_size(self.fonts.cyri.scale(18))
.font_id(self.fonts.cyri.conrod_id)
.color(TEXT_COLOR_3)
.set(state.ids.friends_test, ui);
}
// Faction Tab
let button_img = if let SocialTab::Faction = self.show.social_tab {
self.imgs.social_button_pressed
} else {
self.imgs.social_button
};
if Button::image(button_img)
.w_h(30.0 * 4.0, 12.0 * 4.0)
.right_from(state.ids.friends_tab, 0.0)
.label(&self.localized_strings.get("hud.social.faction"))
.parent(state.ids.frame)
.label_font_size(self.fonts.cyri.scale(14))
.label_font_id(self.fonts.cyri.conrod_id)
.color(UI_MAIN)
.label_color(TEXT_COLOR_3)
.set(state.ids.faction_tab, ui)
.was_clicked()
{
events.push(Event::ChangeSocialTab(SocialTab::Faction));
}
// Contents
if let SocialTab::Faction = self.show.social_tab {
Text::new(&self.localized_strings.get("hud.social.not_yet_available"))
.middle_of(state.ids.content_align)
.font_size(self.fonts.cyri.scale(18))
.font_id(self.fonts.cyri.conrod_id)
.color(TEXT_COLOR_3)
.set(state.ids.faction_test, ui);
}*/
events events
} }
} }

View File

@ -522,7 +522,7 @@ impl Floor {
"common.items.armor.shoulder.cultist_shoulder_purple", "common.items.armor.shoulder.cultist_shoulder_purple",
), ),
8 => comp::Item::expect_from_asset( 8 => comp::Item::expect_from_asset(
"common.items.weapons.sword.greatsword_2h_fine-0", "common.items.weapons.staff.cultist_staff",
), ),
9 => comp::Item::expect_from_asset( 9 => comp::Item::expect_from_asset(
"common.items.weapons.sword.greatsword_2h_fine-1", "common.items.weapons.sword.greatsword_2h_fine-1",