1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
use crate::gui::*;
fn draw_entry(ui: &mut Ui, player: &mut RefMut<Actor>, entry: &InventoryEntry) {
let gui_skins = storage::get::<GuiSkins>();
widgets::Group::new(hash!(), vec2(250.0, 30.0)).ui(ui, |ui| {
ui.label(vec2(0.0, 0.0), &entry.params.name);
if entry.equipped_to == EquipmentSlot::None {
ui.push_skin(&gui_skins.condensed_button);
if ui.button(vec2(160.0, 0.0), "Equip") {
player.equip_item(&entry.params.id);
}
ui.pop_skin();
} else {
ui.push_skin(&gui_skins.condensed_button);
if ui.button(vec2(150.0, 0.0), "Unequip") {
player.unequip_item(&entry.params.id);
}
ui.pop_skin();
}
if !entry.params.is_quest_item {
ui.push_skin(&gui_skins.condensed_button_inactive);
if ui.button(vec2(210.0, 0.0), "Drop") {
player.unequip_item(&entry.params.id);
let position = player.body.position;
player.inventory.drop(&entry.params.id, position);
}
ui.pop_skin();
}
});
}
pub fn draw_inventory_window() {
if let Some(game_state) = scene::find_node_by_type::<GameState>() {
if game_state.gui_state.should_draw_inventory_window {
if let Some(mut player) = get_player_actor() {
let gui_skins = storage::get::<GuiSkins>();
let size = vec2(300.0, 400.0);
let position = vec2(50.0, 475.0);
root_ui().push_skin(&gui_skins.default);
WindowBuilder::new(hash!(), size)
.with_pos(position, false)
.build(&mut *root_ui(), |ui| {
ui.label(
None,
&format!(
"credits: {}, weight: {}/{}",
player.inventory.credits,
player.inventory.get_total_weight(),
player.stats.carry_capacity
),
);
{
let items = player.inventory.get_all_of_kind(&[
ItemKind::OneHandedWeapon,
ItemKind::TwoHandedWeapon,
]);
if !items.is_empty() {
for item in &items {
draw_entry(ui, &mut player, item);
}
}
}
{
let items = player.inventory.get_all_of_kind(&[ItemKind::Misc]);
if !items.is_empty() {
for item in &items {
draw_entry(ui, &mut player, item)
}
}
}
});
root_ui().pop_skin();
}
}
}
}