blob: 4751208bdfb8ec39c422f3f1b4b14a09cb20b012 (
plain)
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
|
#include "client/pch.hh"
#include "client/experiments.hh"
#include "shared/dimension.hh"
#include "shared/game_items.hh"
#include "shared/game_voxels.hh"
#include "shared/item_registry.hh"
#include "client/chat.hh"
#include "client/glfw.hh"
#include "client/globals.hh"
#include "client/hotbar.hh"
#include "client/player_target.hh"
#include "client/session.hh"
#include "client/status_lines.hh"
static void on_glfw_mouse_button(const GlfwMouseButtonEvent& event)
{
if(!globals::gui_screen && session::is_ingame()) {
if((event.action == GLFW_PRESS) && (player_target::voxel != NULL_VOXEL_ID)) {
if(event.button == GLFW_MOUSE_BUTTON_LEFT) {
experiments::attack();
return;
}
if(event.button == GLFW_MOUSE_BUTTON_RIGHT) {
experiments::interact();
return;
}
}
}
}
void experiments::init(void)
{
globals::dispatcher.sink<GlfwMouseButtonEvent>().connect<&on_glfw_mouse_button>();
}
void experiments::init_late(void)
{
hotbar::slots[0] = game_items::cobblestone;
hotbar::slots[1] = game_items::stone;
hotbar::slots[2] = game_items::dirt;
hotbar::slots[3] = game_items::grass;
hotbar::slots[4] = game_items::oak_leaves;
hotbar::slots[5] = game_items::oak_planks;
hotbar::slots[6] = game_items::oak_log;
hotbar::slots[7] = game_items::glass;
hotbar::slots[8] = game_items::slime;
}
void experiments::shutdown(void)
{
}
void experiments::update(void)
{
}
void experiments::update_late(void)
{
}
void experiments::attack(void)
{
globals::dimension->set_voxel(NULL_VOXEL_ID, player_target::coord);
}
void experiments::interact(void)
{
if(auto info = item_registry::find(hotbar::slots[hotbar::active_slot])) {
if(info->place_voxel != NULL_VOXEL_ID) {
globals::dimension->set_voxel(info->place_voxel, player_target::coord + player_target::normal);
}
}
}
|