fixes + more materials
This commit is contained in:
parent
f4cc413f61
commit
3ee350fc0c
5
res/content/base/block_materials/glass.json
Normal file
5
res/content/base/block_materials/glass.json
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"steps-sound": "steps/wood",
|
||||||
|
"place-sound": "blocks/wood_place",
|
||||||
|
"break-sound": "blocks/glass_break"
|
||||||
|
}
|
||||||
@ -1,3 +1,5 @@
|
|||||||
{
|
{
|
||||||
"steps-sound": "steps/grass"
|
"steps-sound": "steps/grass",
|
||||||
|
"place-sound": "steps/grass",
|
||||||
|
"break-sound": "steps/grass"
|
||||||
}
|
}
|
||||||
|
|||||||
5
res/content/base/block_materials/ground.json
Normal file
5
res/content/base/block_materials/ground.json
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"steps-sound": "steps/ground",
|
||||||
|
"place-sound": "steps/ground_place",
|
||||||
|
"break-sound": "steps/ground_break"
|
||||||
|
}
|
||||||
5
res/content/base/block_materials/sand.json
Normal file
5
res/content/base/block_materials/sand.json
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"steps-sound": "steps/sand",
|
||||||
|
"steps-sound": "blocks/ground_place",
|
||||||
|
"break-sound": "blocks/ground_break"
|
||||||
|
}
|
||||||
@ -1,3 +1,5 @@
|
|||||||
{
|
{
|
||||||
"steps-sound": "steps/stone"
|
"steps-sound": "steps/stone",
|
||||||
|
"place-sound": "blocks/stone_place",
|
||||||
|
"break-sound": "blocks/stone_break"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,3 +1,5 @@
|
|||||||
{
|
{
|
||||||
"steps-sound": "steps/wood"
|
"steps-sound": "steps/wood",
|
||||||
|
"place-sound": "blocks/wood_place",
|
||||||
|
"break-sound": "blocks/wood_break"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,3 +1,4 @@
|
|||||||
{
|
{
|
||||||
"texture": "dirt"
|
"texture": "dirt",
|
||||||
|
"material": "base:ground"
|
||||||
}
|
}
|
||||||
@ -1,5 +1,6 @@
|
|||||||
{
|
{
|
||||||
"texture": "glass",
|
"texture": "glass",
|
||||||
|
"material": "base:glass",
|
||||||
"draw-group": 2,
|
"draw-group": 2,
|
||||||
"light-passing": true,
|
"light-passing": true,
|
||||||
"sky-light-passing": true
|
"sky-light-passing": true
|
||||||
|
|||||||
@ -1,3 +1,4 @@
|
|||||||
{
|
{
|
||||||
"texture": "sand"
|
"texture": "sand",
|
||||||
|
"material": "base:sand"
|
||||||
}
|
}
|
||||||
BIN
res/content/base/sounds/blocks/glass_break.ogg
Normal file
BIN
res/content/base/sounds/blocks/glass_break.ogg
Normal file
Binary file not shown.
BIN
res/content/base/sounds/blocks/ground_break.ogg
Normal file
BIN
res/content/base/sounds/blocks/ground_break.ogg
Normal file
Binary file not shown.
BIN
res/content/base/sounds/blocks/ground_place.ogg
Normal file
BIN
res/content/base/sounds/blocks/ground_place.ogg
Normal file
Binary file not shown.
BIN
res/content/base/sounds/blocks/stone_break.ogg
Normal file
BIN
res/content/base/sounds/blocks/stone_break.ogg
Normal file
Binary file not shown.
BIN
res/content/base/sounds/blocks/stone_place.ogg
Normal file
BIN
res/content/base/sounds/blocks/stone_place.ogg
Normal file
Binary file not shown.
BIN
res/content/base/sounds/blocks/wood_break.ogg
Normal file
BIN
res/content/base/sounds/blocks/wood_break.ogg
Normal file
Binary file not shown.
BIN
res/content/base/sounds/blocks/wood_place.ogg
Normal file
BIN
res/content/base/sounds/blocks/wood_place.ogg
Normal file
Binary file not shown.
@ -23,25 +23,46 @@ LevelFrontend::LevelFrontend(Level* level, Assets* assets)
|
|||||||
void LevelFrontend::observe(LevelController* controller) {
|
void LevelFrontend::observe(LevelController* controller) {
|
||||||
controller->getPlayerController()->listenBlockInteraction(
|
controller->getPlayerController()->listenBlockInteraction(
|
||||||
[=](Player*, glm::ivec3 pos, const Block* def, BlockInteraction type) {
|
[=](Player*, glm::ivec3 pos, const Block* def, BlockInteraction type) {
|
||||||
if (type != BlockInteraction::step) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
auto material = level->content->findBlockMaterial(def->material);
|
auto material = level->content->findBlockMaterial(def->material);
|
||||||
if (material == nullptr) {
|
if (material == nullptr) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (type == BlockInteraction::step) {
|
||||||
auto sound = assets->getSound(material->stepsSound);
|
auto sound = assets->getSound(material->stepsSound);
|
||||||
audio::play(
|
audio::play(
|
||||||
sound,
|
sound,
|
||||||
glm::vec3(),
|
glm::vec3(),
|
||||||
true,
|
true,
|
||||||
0.333f,
|
0.333f,
|
||||||
1.0f,
|
1.0f + (rand() % 6 - 3) * 0.05f,
|
||||||
false,
|
false,
|
||||||
audio::PRIORITY_LOW,
|
audio::PRIORITY_LOW,
|
||||||
audio::get_channel_index("regular")
|
audio::get_channel_index("regular")
|
||||||
);
|
);
|
||||||
|
} else {
|
||||||
|
audio::Sound* sound = nullptr;
|
||||||
|
switch (type) {
|
||||||
|
case BlockInteraction::placing:
|
||||||
|
sound = assets->getSound(material->placeSound);
|
||||||
|
break;
|
||||||
|
case BlockInteraction::destruction:
|
||||||
|
sound = assets->getSound(material->breakSound);
|
||||||
|
break;
|
||||||
|
case BlockInteraction::step:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
audio::play(
|
||||||
|
sound,
|
||||||
|
glm::vec3(pos.x, pos.y, pos.z) + 0.5f,
|
||||||
|
false,
|
||||||
|
1.0f,
|
||||||
|
1.0f + (rand() % 6 - 3) * 0.05f,
|
||||||
|
false,
|
||||||
|
audio::PRIORITY_NORMAL,
|
||||||
|
audio::get_channel_index("regular")
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -160,7 +160,7 @@ void LevelScreen::update(float delta) {
|
|||||||
audio::set_listener(
|
audio::set_listener(
|
||||||
camera->position,
|
camera->position,
|
||||||
player->hitbox->velocity,
|
player->hitbox->velocity,
|
||||||
camera->position+camera->dir,
|
camera->dir,
|
||||||
camera->up
|
camera->up
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@ -374,10 +374,6 @@ void PlayerController::updateInteraction(){
|
|||||||
uint8_t states = determine_rotation(def, norm, camera->dir);
|
uint8_t states = determine_rotation(def, norm, camera->dir);
|
||||||
|
|
||||||
if (lclick && !input.shift && item->rt.funcsset.on_block_break_by) {
|
if (lclick && !input.shift && item->rt.funcsset.on_block_break_by) {
|
||||||
onBlockInteraction(
|
|
||||||
glm::ivec3(x, y, z), def,
|
|
||||||
BlockInteraction::destruction
|
|
||||||
);
|
|
||||||
// TODO: move scripting to interaction callbacks
|
// TODO: move scripting to interaction callbacks
|
||||||
if (scripting::on_item_break_block(player.get(), item, x, y, z))
|
if (scripting::on_item_break_block(player.get(), item, x, y, z))
|
||||||
return;
|
return;
|
||||||
@ -385,6 +381,10 @@ void PlayerController::updateInteraction(){
|
|||||||
|
|
||||||
Block* target = indices->getBlockDef(vox->id);
|
Block* target = indices->getBlockDef(vox->id);
|
||||||
if (lclick && target->breakable){
|
if (lclick && target->breakable){
|
||||||
|
onBlockInteraction(
|
||||||
|
glm::ivec3(x, y, z), def,
|
||||||
|
BlockInteraction::destruction
|
||||||
|
);
|
||||||
blocksController->breakBlock(player.get(), target, x, y, z);
|
blocksController->breakBlock(player.get(), target, x, y, z);
|
||||||
}
|
}
|
||||||
if (rclick && !input.shift) {
|
if (rclick && !input.shift) {
|
||||||
@ -421,13 +421,13 @@ void PlayerController::updateInteraction(){
|
|||||||
chosenBlock = 0;
|
chosenBlock = 0;
|
||||||
}
|
}
|
||||||
if (chosenBlock != vox->id && chosenBlock) {
|
if (chosenBlock != vox->id && chosenBlock) {
|
||||||
chunks->set(x, y, z, chosenBlock, states);
|
|
||||||
lighting->onBlockSet(x,y,z, chosenBlock);
|
|
||||||
if (def->rt.funcsset.onplaced) {
|
|
||||||
onBlockInteraction(
|
onBlockInteraction(
|
||||||
glm::ivec3(x, y, z), def,
|
glm::ivec3(x, y, z), def,
|
||||||
BlockInteraction::placing
|
BlockInteraction::placing
|
||||||
);
|
);
|
||||||
|
chunks->set(x, y, z, chosenBlock, states);
|
||||||
|
lighting->onBlockSet(x,y,z, chosenBlock);
|
||||||
|
if (def->rt.funcsset.onplaced) {
|
||||||
// TODO: move scripting to interaction callbacks
|
// TODO: move scripting to interaction callbacks
|
||||||
scripting::on_block_placed(player.get(), def, x, y, z);
|
scripting::on_block_placed(player.get(), def, x, y, z);
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user