diff --git a/Cargo.lock b/Cargo.lock index 51d992a1dc..52343f4904 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3155,6 +3155,7 @@ name = "veloren-voxygen" version = "0.3.0" dependencies = [ "backtrace 0.3.35 (registry+https://github.com/rust-lang/crates.io-index)", + "chrono 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", "conrod_core 0.63.0 (git+https://gitlab.com/veloren/conrod.git)", "conrod_winit 0.63.0 (git+https://gitlab.com/veloren/conrod.git)", "crossbeam 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", diff --git a/assets/voxygen/shaders/sprite-vert.glsl b/assets/voxygen/shaders/sprite-vert.glsl index b6e86daea8..6e7a4c384a 100644 --- a/assets/voxygen/shaders/sprite-vert.glsl +++ b/assets/voxygen/shaders/sprite-vert.glsl @@ -34,11 +34,11 @@ void main() { sin(tick.x * 1.5 + f_pos.y * 0.1) * sin(tick.x * 0.35), sin(tick.x * 1.5 + f_pos.x * 0.1) * sin(tick.x * 0.25), 0.0 - ) * pow(v_pos.z * SCALE, 1.3) * 0.2; + ) * pow(abs(v_pos.z) * SCALE, 1.3) * 0.2; f_norm = (inst_mat * vec4(v_norm, 0)).xyz; - f_col = v_col * inst_col; + f_col = srgb_to_linear(v_col) * srgb_to_linear(inst_col); f_light = 1.0; diff --git a/assets/voxygen/voxel/sprite/cacti/cactus_round.vox b/assets/voxygen/voxel/sprite/cacti/cactus_round.vox new file mode 100644 index 0000000000..0215a44371 --- /dev/null +++ b/assets/voxygen/voxel/sprite/cacti/cactus_round.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:429d3b5b1c4b331d5771d7b8af8e05abf8a2758847f967d62d83b81616fc44fd +size 44811 diff --git a/assets/voxygen/voxel/sprite/cacti/cactus_short.vox b/assets/voxygen/voxel/sprite/cacti/cactus_short.vox new file mode 100644 index 0000000000..66e9702e89 --- /dev/null +++ b/assets/voxygen/voxel/sprite/cacti/cactus_short.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6ffdaaae693723e3ba1817bef3de422eba68c9f37d84fd5fd931e074e92b928b +size 4820 diff --git a/assets/voxygen/voxel/sprite/cacti/flat_cactus_med.vox b/assets/voxygen/voxel/sprite/cacti/flat_cactus_med.vox new file mode 100644 index 0000000000..132f0de467 --- /dev/null +++ b/assets/voxygen/voxel/sprite/cacti/flat_cactus_med.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:07dd77b78992b7e506734d4bbaa49d07e678fedf2b4140db38c5ec988ca9a5c7 +size 1456 diff --git a/assets/voxygen/voxel/sprite/cacti/flat_cactus_short.vox b/assets/voxygen/voxel/sprite/cacti/flat_cactus_short.vox new file mode 100644 index 0000000000..5cc8cf92e2 --- /dev/null +++ b/assets/voxygen/voxel/sprite/cacti/flat_cactus_short.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5d27ad1c604a82427ea516400f18c064382e3591ec0881714009e09054d05d13 +size 1272 diff --git a/assets/voxygen/voxel/sprite/flowers/flower_blue_3.vox b/assets/voxygen/voxel/sprite/flowers/flower_blue_3.vox new file mode 100644 index 0000000000..7a660a83bd --- /dev/null +++ b/assets/voxygen/voxel/sprite/flowers/flower_blue_3.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8c8c6c7160c27780e81cc77429b8ff2c01cc6ddeb27d4240b3fe41a1b0901253 +size 44428 diff --git a/assets/voxygen/voxel/sprite/flowers/flower_blue_4.vox b/assets/voxygen/voxel/sprite/flowers/flower_blue_4.vox new file mode 100644 index 0000000000..27913073cb --- /dev/null +++ b/assets/voxygen/voxel/sprite/flowers/flower_blue_4.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5b7d423ee6519166df1982cac0fd95d41611d371bbe265328cd1f09291b54c06 +size 44652 diff --git a/assets/voxygen/voxel/sprite/flowers/flower_blue_5.vox b/assets/voxygen/voxel/sprite/flowers/flower_blue_5.vox new file mode 100644 index 0000000000..8f7bf1e67e --- /dev/null +++ b/assets/voxygen/voxel/sprite/flowers/flower_blue_5.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eefdbb220918b2d4c2399f6e33d8760456635c3603682417aa70800b498fd77c +size 44275 diff --git a/assets/voxygen/voxel/sprite/flowers/flower_pink_4.vox b/assets/voxygen/voxel/sprite/flowers/flower_pink_4.vox new file mode 100644 index 0000000000..69b77e09ad --- /dev/null +++ b/assets/voxygen/voxel/sprite/flowers/flower_pink_4.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6dab8d22f78c283f57f500b9060553667c3ef8eddfef9ce21facfac9a8e02320 +size 56105 diff --git a/assets/voxygen/voxel/sprite/flowers/flower_purple_1.vox b/assets/voxygen/voxel/sprite/flowers/flower_purple_1.vox index aaeb3daf04..da46bed104 100644 --- a/assets/voxygen/voxel/sprite/flowers/flower_purple_1.vox +++ b/assets/voxygen/voxel/sprite/flowers/flower_purple_1.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2ff14a836ffda6203e535e497c7f2a1026e134782b6e4bf452ebe8aef56420a2 +oid sha256:5d41bfdd3cb5f31ba7f60ffdf1028bdf44bd3e2fb642df7744584bdf268d264b size 44535 diff --git a/assets/voxygen/voxel/sprite/flowers/flower_red_1.vox b/assets/voxygen/voxel/sprite/flowers/flower_red_1.vox index aacc0695d6..415db9edae 100644 --- a/assets/voxygen/voxel/sprite/flowers/flower_red_1.vox +++ b/assets/voxygen/voxel/sprite/flowers/flower_red_1.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c8b6cab2cf1472940c6216322efa2596417f2b62a5158bc640fbcb900c668590 -size 44503 +oid sha256:433252d0bd38f1d0087de74ad0fe0ecd14afc6bea71e2f40780b398776c35d22 +size 44607 diff --git a/assets/voxygen/voxel/sprite/flowers/flower_red_2.vox b/assets/voxygen/voxel/sprite/flowers/flower_red_2.vox new file mode 100644 index 0000000000..75836d595b --- /dev/null +++ b/assets/voxygen/voxel/sprite/flowers/flower_red_2.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:18a5d76835864b3250ee00b4a1af411f16ed3a2c6ff6f8add074101ea5616a3b +size 55813 diff --git a/assets/voxygen/voxel/sprite/grass/grass_long_6.vox b/assets/voxygen/voxel/sprite/grass/grass_long_6.vox new file mode 100644 index 0000000000..6b5b8d671f --- /dev/null +++ b/assets/voxygen/voxel/sprite/grass/grass_long_6.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a0f790e13d900de42906770e982757db98ace1e8170d76c1e34b142c3a02a1b6 +size 44539 diff --git a/assets/voxygen/voxel/sprite/grass/grass_long_7.vox b/assets/voxygen/voxel/sprite/grass/grass_long_7.vox new file mode 100644 index 0000000000..931f5c59d6 --- /dev/null +++ b/assets/voxygen/voxel/sprite/grass/grass_long_7.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c1a444e329a61d03fcf46b5e9d2d2ef5c15d9c18d40a08fe65e751b18a1577fa +size 44511 diff --git a/assets/voxygen/voxel/sprite/lianas/liana-0.vox b/assets/voxygen/voxel/sprite/lianas/liana-0.vox new file mode 100644 index 0000000000..17d6c9ff16 --- /dev/null +++ b/assets/voxygen/voxel/sprite/lianas/liana-0.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cc7e966c151df969eba998d7db42b4f9c2692baac06007c578e5fd5f76257a8d +size 44614 diff --git a/assets/voxygen/voxel/sprite/lianas/liana-1.vox b/assets/voxygen/voxel/sprite/lianas/liana-1.vox new file mode 100644 index 0000000000..10c0f82c93 --- /dev/null +++ b/assets/voxygen/voxel/sprite/lianas/liana-1.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:736508e09dadf421bda08cd7071bb343b5409d7228016fcd191934d9bdce16ee +size 44542 diff --git a/assets/voxygen/voxel/sprite/mushrooms/mushroom-0.vox b/assets/voxygen/voxel/sprite/mushrooms/mushroom-0.vox new file mode 100644 index 0000000000..f4788d36a4 --- /dev/null +++ b/assets/voxygen/voxel/sprite/mushrooms/mushroom-0.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7b3b9a5b946e477c2fc83415453b375c7d20e2a745c5775dfaea4444d605ccd4 +size 44267 diff --git a/assets/voxygen/voxel/sprite/mushrooms/mushroom-1.vox b/assets/voxygen/voxel/sprite/mushrooms/mushroom-1.vox new file mode 100644 index 0000000000..bd29d728cc --- /dev/null +++ b/assets/voxygen/voxel/sprite/mushrooms/mushroom-1.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:83ca8cf16bbac82da89a0102513e7c54edd75f3b772cdb5aa0981c117045db33 +size 1204 diff --git a/assets/voxygen/voxel/sprite/mushrooms/mushroom-2.vox b/assets/voxygen/voxel/sprite/mushrooms/mushroom-2.vox new file mode 100644 index 0000000000..5f2378a8d7 --- /dev/null +++ b/assets/voxygen/voxel/sprite/mushrooms/mushroom-2.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b67de880999ab46de70e8579ed5054f3838c354a7a74ed382c4e2abc1ea16f27 +size 1160 diff --git a/assets/voxygen/voxel/sprite/mushrooms/mushroom-3.vox b/assets/voxygen/voxel/sprite/mushrooms/mushroom-3.vox new file mode 100644 index 0000000000..6878d73760 --- /dev/null +++ b/assets/voxygen/voxel/sprite/mushrooms/mushroom-3.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9136b9445bc4ebd23744d9105ebdc570fc678f563d9cb493e7747dfa1efb96c0 +size 44351 diff --git a/assets/voxygen/voxel/sprite/mushrooms/mushroom-4.vox b/assets/voxygen/voxel/sprite/mushrooms/mushroom-4.vox new file mode 100644 index 0000000000..5352f784a8 --- /dev/null +++ b/assets/voxygen/voxel/sprite/mushrooms/mushroom-4.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9cca490440d326f62a78404d7f9eda391163ae81846ea044597f41d37b83247a +size 44555 diff --git a/assets/voxygen/voxel/sprite/mushrooms/mushroom-5.vox b/assets/voxygen/voxel/sprite/mushrooms/mushroom-5.vox new file mode 100644 index 0000000000..3132e61eb2 --- /dev/null +++ b/assets/voxygen/voxel/sprite/mushrooms/mushroom-5.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5585c33e889261346e527ab7915d00bfe2a4481259c102f33508c56a444f2e29 +size 44619 diff --git a/assets/voxygen/voxel/sprite/mushrooms/mushroom-6.vox b/assets/voxygen/voxel/sprite/mushrooms/mushroom-6.vox new file mode 100644 index 0000000000..3731991771 --- /dev/null +++ b/assets/voxygen/voxel/sprite/mushrooms/mushroom-6.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:02db7e016c7b20412e757547c7f86276974c467906a35b4c70883a3b8128acda +size 44447 diff --git a/assets/voxygen/voxel/sprite/mushrooms/mushroom-7.vox b/assets/voxygen/voxel/sprite/mushrooms/mushroom-7.vox new file mode 100644 index 0000000000..86ad24fcd0 --- /dev/null +++ b/assets/voxygen/voxel/sprite/mushrooms/mushroom-7.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e2a25c0a08d80855400475b82bc2423af1f2af054efdefba4c42c0064652a8e4 +size 44331 diff --git a/assets/voxygen/voxel/sprite/mushrooms/mushroom-8.vox b/assets/voxygen/voxel/sprite/mushrooms/mushroom-8.vox new file mode 100644 index 0000000000..656f084ddf --- /dev/null +++ b/assets/voxygen/voxel/sprite/mushrooms/mushroom-8.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0e645c79d7fca501ce13f11c065f7a7316fc2859ad8b56db90644a9f821efbf6 +size 44359 diff --git a/assets/voxygen/voxel/sprite/mushrooms/mushroom-9.vox b/assets/voxygen/voxel/sprite/mushrooms/mushroom-9.vox new file mode 100644 index 0000000000..99ba72460f --- /dev/null +++ b/assets/voxygen/voxel/sprite/mushrooms/mushroom-9.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9da8d612e2456f3a4a30de1ae800eb3e49e7c39625cb76f5b237f3ec4b241f5e +size 44539 diff --git a/assets/world/tree/mangroves/1.vox b/assets/world/tree/mangroves/1.vox index be7eb7b108..06265ab0ad 100644 --- a/assets/world/tree/mangroves/1.vox +++ b/assets/world/tree/mangroves/1.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:20dfbe66e06a086287d41285be91e355a3304bfb5b5c6734748b083b26ee677e -size 82320 +oid sha256:bde388633c1b74e3cca511cfeff3ec8984c11857ae6cac8bd19552d567a668c0 +size 81424 diff --git a/assets/world/tree/mangroves/2.vox b/assets/world/tree/mangroves/2.vox index b344a2c757..8fcec31738 100644 --- a/assets/world/tree/mangroves/2.vox +++ b/assets/world/tree/mangroves/2.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ba097fba04c94b2184352222c65677da0fe663f249cd072424b780ab83eab227 -size 72044 +oid sha256:65b535a923f5cf3cbbcd3eec17d44ecc1be5bd14324bfe5b3d4fd8ee71e8e0bf +size 71012 diff --git a/assets/world/tree/mangroves/3.vox b/assets/world/tree/mangroves/3.vox index dea5bc53ab..cd1cd42721 100644 --- a/assets/world/tree/mangroves/3.vox +++ b/assets/world/tree/mangroves/3.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:20846e8a910b4a230fee731f851c24e3e5c273c7f980cebcbc90485838d4a36d -size 97240 +oid sha256:a031b0e1f22524416204d66aacd6b2b84e1cc844daf3a14780cbd515f83a3e6d +size 95640 diff --git a/assets/world/tree/mangroves/4.vox b/assets/world/tree/mangroves/4.vox index ab916453c5..bb137f92b0 100644 --- a/assets/world/tree/mangroves/4.vox +++ b/assets/world/tree/mangroves/4.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e444818089ac3a9ad2f9deb374e563fb048fe29a7be671a21e5547497808d1a6 -size 45336 +oid sha256:ec768afaddbb302f927c532b1b69dda7742f7aeda3376a008279fc928bc6ab19 +size 91968 diff --git a/assets/world/tree/mangroves/5.vox b/assets/world/tree/mangroves/5.vox index ded6222b31..cbc70ef76d 100644 --- a/assets/world/tree/mangroves/5.vox +++ b/assets/world/tree/mangroves/5.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a4188d62ee30b4c73f285455ec7bd4ed8935cd142b687cb4dff42ad336666faa -size 34116 +oid sha256:e5ae14d3aac2cd3b36b1cc568343905d4c3092594c53cfb96f22b940942f2113 +size 87956 diff --git a/assets/world/tree/mangroves/6.vox b/assets/world/tree/mangroves/6.vox index ef6da43e32..efe7aefc03 100644 --- a/assets/world/tree/mangroves/6.vox +++ b/assets/world/tree/mangroves/6.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:51ef11e2eb547f64920f5362450604bc5f1271fd56dc2dd41f2b9d96a635868b -size 61512 +oid sha256:5057145bdcbab30c7a7057c6be816421748c6074f9673e27f3581d4d29d2a140 +size 106168 diff --git a/assets/world/tree/mangroves/7.vox b/assets/world/tree/mangroves/7.vox index b68cceb099..9e07228c28 100644 --- a/assets/world/tree/mangroves/7.vox +++ b/assets/world/tree/mangroves/7.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a364b03a01c540f0794fd9eb70c3bd7f2d73c66c1e9f034660ba1dda2ac853e6 -size 51656 +oid sha256:8ccbb921bfb5612a9116f1562ef185af1e9e56c04cf2d5ee3b42f6bf4aba229f +size 92848 diff --git a/assets/world/tree/mangroves/8.vox b/assets/world/tree/mangroves/8.vox index 71b324a493..a104e256db 100644 --- a/assets/world/tree/mangroves/8.vox +++ b/assets/world/tree/mangroves/8.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:408e61be6fbaf6afb89c046c4d043683d1f70b3308abc268b8cfe0d1460c3275 -size 71816 +oid sha256:026e05470d03c7268067f95cadf133a77f3c9086ac5f26da189f240f50c4c4b4 +size 111628 diff --git a/common/src/terrain/block.rs b/common/src/terrain/block.rs index fbd5d035f4..bd656fd5e6 100644 --- a/common/src/terrain/block.rs +++ b/common/src/terrain/block.rs @@ -12,6 +12,10 @@ pub enum BlockKind { Water, LargeCactus, BarrelCactus, + RoundCactus, + ShortCactus, + MedFlatCactus, + ShortFlatCactus, BlueFlower, PinkFlower, PurpleFlower, @@ -23,6 +27,8 @@ pub enum BlockKind { MediumGrass, ShortGrass, Apple, + Mushroom, + Liana, } impl BlockKind { @@ -31,6 +37,10 @@ impl BlockKind { BlockKind::Air => true, BlockKind::LargeCactus => false, BlockKind::BarrelCactus => true, + BlockKind::RoundCactus => true, + BlockKind::ShortCactus => true, + BlockKind::MedFlatCactus => true, + BlockKind::ShortFlatCactus => true, BlockKind::BlueFlower => true, BlockKind::PinkFlower => true, BlockKind::PurpleFlower => true, @@ -42,6 +52,8 @@ impl BlockKind { BlockKind::MediumGrass => true, BlockKind::ShortGrass => true, BlockKind::Apple => true, + BlockKind::Mushroom => true, + BlockKind::Liana => true, _ => false, } } @@ -59,6 +71,10 @@ impl BlockKind { BlockKind::Water => false, BlockKind::LargeCactus => false, BlockKind::BarrelCactus => false, + BlockKind::RoundCactus => false, + BlockKind::ShortCactus => false, + BlockKind::MedFlatCactus => false, + BlockKind::ShortFlatCactus => false, BlockKind::BlueFlower => false, BlockKind::PinkFlower => false, BlockKind::PurpleFlower => false, @@ -70,6 +86,8 @@ impl BlockKind { BlockKind::MediumGrass => false, BlockKind::ShortGrass => false, BlockKind::Apple => false, + BlockKind::Mushroom => false, + BlockKind::Liana => false, _ => true, } } @@ -80,6 +98,10 @@ impl BlockKind { BlockKind::Water => false, BlockKind::LargeCactus => true, BlockKind::BarrelCactus => true, + BlockKind::RoundCactus => true, + BlockKind::ShortCactus => true, + BlockKind::MedFlatCactus => true, + BlockKind::ShortFlatCactus => true, BlockKind::BlueFlower => false, BlockKind::PinkFlower => false, BlockKind::PurpleFlower => false, @@ -91,6 +113,8 @@ impl BlockKind { BlockKind::MediumGrass => false, BlockKind::ShortGrass => false, BlockKind::Apple => true, + BlockKind::Mushroom => false, + BlockKind::Liana => false, _ => true, } } diff --git a/common/src/terrain/structure.rs b/common/src/terrain/structure.rs index 9225df4b16..955f6a6556 100644 --- a/common/src/terrain/structure.rs +++ b/common/src/terrain/structure.rs @@ -15,11 +15,13 @@ pub enum StructureBlock { TemperateLeaves, PineLeaves, Acacia, + Mangrove, PalmLeaves, Water, GreenSludge, Fruit, Hollow, + Liana, Normal(Rgb), } @@ -110,8 +112,10 @@ impl Asset for Structure { 2 => StructureBlock::PalmLeaves, 3 => StructureBlock::Water, 4 => StructureBlock::Acacia, + 5 => StructureBlock::Mangrove, 6 => StructureBlock::GreenSludge, 7 => StructureBlock::Fruit, + 9 => StructureBlock::Liana, 15 => StructureBlock::Hollow, index => { let color = palette diff --git a/server/src/cmd.rs b/server/src/cmd.rs index 33733b9b26..f43ed9bbe8 100644 --- a/server/src/cmd.rs +++ b/server/src/cmd.rs @@ -262,9 +262,12 @@ fn handle_kill(server: &mut Server, entity: EcsEntity, _args: String, _action: & fn handle_time(server: &mut Server, entity: EcsEntity, args: String, action: &ChatCommand) { let time = scan_fmt_some!(&args, action.arg_fmt, String); let new_time = match time.as_ref().map(|s| s.as_str()) { - Some("night") => NaiveTime::from_hms(0, 0, 0), + Some("midnight") => NaiveTime::from_hms(0, 0, 0), + Some("night") => NaiveTime::from_hms(20, 0, 0), Some("dawn") => NaiveTime::from_hms(5, 0, 0), - Some("day") => NaiveTime::from_hms(12, 0, 0), + Some("morning") => NaiveTime::from_hms(8, 0, 0), + Some("day") => NaiveTime::from_hms(10, 0, 0), + Some("noon") => NaiveTime::from_hms(12, 0, 0), Some("dusk") => NaiveTime::from_hms(17, 0, 0), Some(n) => match n.parse() { Ok(n) => n, @@ -797,14 +800,12 @@ fn handle_tell(server: &mut Server, entity: EcsEntity, args: String, action: &Ch .get(entity) .map(|s| s.alias.clone()) { - server.clients.notify( - player, - ServerMsg::tell(format!("[{}] tells you:{}", name, msg)), - ); - server.clients.notify( - entity, - ServerMsg::tell(format!("You tell [{}]:{}", alias, msg)), - ); + server + .clients + .notify(player, ServerMsg::tell(format!("[{}] tells:{}", name, msg))); + server + .clients + .notify(entity, ServerMsg::tell(format!("To [{}]:{}", alias, msg))); } else { server.clients.notify( entity, diff --git a/voxygen/Cargo.toml b/voxygen/Cargo.toml index 67f9008899..555a6181c4 100644 --- a/voxygen/Cargo.toml +++ b/voxygen/Cargo.toml @@ -59,3 +59,4 @@ crossbeam = "0.7.2" heaptrack = "0.3.0" hashbrown = { version = "0.5.0", features = ["serde", "nightly"] } parking_lot = "0.9.0" +chrono = "0.4.7" diff --git a/voxygen/src/hud/mod.rs b/voxygen/src/hud/mod.rs index 79731b13a2..a3ea9f4177 100644 --- a/voxygen/src/hud/mod.rs +++ b/voxygen/src/hud/mod.rs @@ -18,6 +18,7 @@ use bag::Bag; use buttons::Buttons; use character_window::CharacterWindow; use chat::Chat; +use chrono::NaiveTime; use esc_menu::EscMenu; use img_ids::Imgs; use map::Map; @@ -94,6 +95,7 @@ widget_ids! { coordinates, velocity, loaded_distance, + time, // Game Version version, @@ -157,7 +159,6 @@ pub enum Event { CrosshairTransp(f32), CrosshairType(CrosshairType), ToggleXpBar(XpBar), - ToggleEnBars(EnBars), ToggleBarNumbers(BarNumbers), ToggleShortcutNumbers(ShortcutNumbers), UiScale(ScaleChange), @@ -189,11 +190,6 @@ pub enum XpBar { Always, OnGain, } -#[derive(Clone, Copy, Debug, Serialize, Deserialize)] -pub enum EnBars { - Always, - OnLoss, -} #[derive(Clone, Copy, Debug, Serialize, Deserialize)] pub enum BarNumbers { @@ -629,6 +625,22 @@ impl Hud { .font_id(self.fonts.opensans) .font_size(14) .set(self.ids.loaded_distance, ui_widgets); + // Time + let time_in_seconds = client.state().get_time_of_day(); + let current_time = NaiveTime::from_num_seconds_from_midnight( + // Wraps around back to 0s if it exceeds 24 hours (24 hours = 86400s) + (time_in_seconds as u64 % 86400) as u32, + 0, + ); + Text::new(&format!( + "Time: {}", + current_time.format("%H:%M").to_string() + )) + .color(TEXT_COLOR) + .down_from(self.ids.loaded_distance, 5.0) + .font_id(self.fonts.opensans) + .font_size(14) + .set(self.ids.time, ui_widgets); } // Add Bag-Space Button. @@ -792,9 +804,6 @@ impl Hud { settings_window::Event::ToggleXpBar(xp_bar) => { events.push(Event::ToggleXpBar(xp_bar)); } - settings_window::Event::ToggleEnBars(en_bars) => { - events.push(Event::ToggleEnBars(en_bars)); - } settings_window::Event::ToggleBarNumbers(bar_numbers) => { events.push(Event::ToggleBarNumbers(bar_numbers)); } diff --git a/voxygen/src/hud/settings_window.rs b/voxygen/src/hud/settings_window.rs index e549f1d03a..fbb64e05b2 100644 --- a/voxygen/src/hud/settings_window.rs +++ b/voxygen/src/hud/settings_window.rs @@ -1,6 +1,5 @@ use super::{ - img_ids::Imgs, BarNumbers, CrosshairType, EnBars, Fonts, ShortcutNumbers, Show, XpBar, - TEXT_COLOR, + img_ids::Imgs, BarNumbers, CrosshairType, Fonts, ShortcutNumbers, Show, XpBar, TEXT_COLOR, }; use crate::{ audio::base::Genre, @@ -145,7 +144,6 @@ pub enum Event { ToggleHelp, ToggleDebug, ToggleXpBar(XpBar), - ToggleEnBars(EnBars), ToggleBarNumbers(BarNumbers), ToggleShortcutNumbers(ShortcutNumbers), ChangeTab(SettingsTab), @@ -644,36 +642,6 @@ impl<'a> Widget for SettingsWindow<'a> { .graphics_for(state.ids.show_xpbar_button) .color(TEXT_COLOR) .set(state.ids.show_xpbar_text, ui); - // Show Health & Energy Bars - if Button::image(match self.global_state.settings.gameplay.en_bars { - EnBars::Always => self.imgs.checkbox_checked, - EnBars::OnLoss => self.imgs.checkbox, - }) - .w_h(18.0, 18.0) - .hover_image(match self.global_state.settings.gameplay.en_bars { - EnBars::Always => self.imgs.checkbox_checked_mo, - EnBars::OnLoss => self.imgs.checkbox_mo, - }) - .press_image(match self.global_state.settings.gameplay.en_bars { - EnBars::Always => self.imgs.checkbox_checked, - EnBars::OnLoss => self.imgs.checkbox_press, - }) - .down_from(state.ids.show_xpbar_button, 8.0) - .set(state.ids.show_bars_button, ui) - .was_clicked() - { - match self.global_state.settings.gameplay.en_bars { - EnBars::Always => events.push(Event::ToggleEnBars(EnBars::OnLoss)), - EnBars::OnLoss => events.push(Event::ToggleEnBars(EnBars::Always)), - } - } - Text::new("Always show Health and Energy Bars") - .right_from(state.ids.show_bars_button, 10.0) - .font_size(14) - .font_id(self.fonts.opensans) - .graphics_for(state.ids.show_bars_button) - .color(TEXT_COLOR) - .set(state.ids.show_bars_text, ui); // Show Shortcut Numbers if Button::image(match self.global_state.settings.gameplay.shortcut_numbers { ShortcutNumbers::On => self.imgs.checkbox_checked, @@ -688,7 +656,7 @@ impl<'a> Widget for SettingsWindow<'a> { ShortcutNumbers::On => self.imgs.checkbox_checked, ShortcutNumbers::Off => self.imgs.checkbox_press, }) - .down_from(state.ids.show_bars_button, 8.0) + .down_from(state.ids.show_xpbar_button, 8.0) .set(state.ids.show_shortcuts_button, ui) .was_clicked() { diff --git a/voxygen/src/hud/skillbar.rs b/voxygen/src/hud/skillbar.rs index e996ebeb45..71e41d5494 100644 --- a/voxygen/src/hud/skillbar.rs +++ b/voxygen/src/hud/skillbar.rs @@ -1,5 +1,5 @@ use super::{ - img_ids::Imgs, BarNumbers, EnBars, Fonts, ShortcutNumbers, XpBar, CRITICAL_HP_COLOR, + img_ids::Imgs, BarNumbers, Fonts, ShortcutNumbers, XpBar, CRITICAL_HP_COLOR, /*FOCUS_COLOR, RAGE_COLOR,*/ HP_COLOR, LOW_HP_COLOR, MANA_COLOR, TEXT_COLOR, XP_COLOR, }; use crate::GlobalState; @@ -546,173 +546,80 @@ impl<'a> Widget for Skillbar<'a> { .set(state.ids.slotq_text, ui); }; - // Option to show Energy Bars only on loss or Always - match self.global_state.settings.gameplay.en_bars { - EnBars::OnLoss => { - if { self.stats.health.current() < self.stats.health.maximum() } || { - self.stats.energy.current() < self.stats.energy.maximum() - } { - // Lifebar - Image::new(self.imgs.healthbar_bg) - .w_h(100.0 * scale, 20.0 * scale) - .top_left_with_margins_on(state.ids.m1_slot, 0.0, -100.0 * scale) - .set(state.ids.healthbar_bg, ui); - Image::new(self.imgs.bar_content) - .w_h(97.0 * scale * hp_percentage / 100.0, 16.0 * scale) - .color(Some(if hp_percentage <= 20.0 { - CRITICAL_HP_COLOR - } else if hp_percentage <= 40.0 { - LOW_HP_COLOR - } else { - HP_COLOR - })) - .top_right_with_margins_on(state.ids.healthbar_bg, 2.0 * scale, 1.0 * scale) - .set(state.ids.healthbar_filling, ui); - // Energybar - Image::new(self.imgs.energybar_bg) - .w_h(100.0 * scale, 20.0 * scale) - .top_right_with_margins_on(state.ids.m2_slot, 0.0, -100.0 * scale) - .set(state.ids.energybar_bg, ui); - Image::new(self.imgs.bar_content) - .w_h(97.0 * scale * energy_percentage / 100.0, 16.0 * scale) - .top_left_with_margins_on(state.ids.energybar_bg, 2.0 * scale, 1.0 * scale) - .color(Some(match self.current_resource { - ResourceType::Mana => MANA_COLOR, - //ResourceType::Focus => FOCUS_COLOR, - //ResourceType::Rage => RAGE_COLOR, - })) - .set(state.ids.energybar_filling, ui); - // Bar Text - // Values - if let BarNumbers::Values = bar_values { - let hp_text = format!( - "{}/{}", - self.stats.health.current() as u32, - self.stats.health.maximum() as u32 - ); - Text::new(&hp_text) - .mid_top_with_margin_on(state.ids.healthbar_bg, 5.0 * scale) - .font_size(14) - .color(TEXT_COLOR) - .set(state.ids.health_text, ui); - let energy_text = format!( - "{}/{}", - self.stats.energy.current() as u32, - self.stats.energy.maximum() as u32 - ); - Text::new(&energy_text) - .mid_top_with_margin_on(state.ids.energybar_bg, 5.0 * scale) - .font_size(14) - .color(TEXT_COLOR) - .set(state.ids.energy_text, ui); - } - //Percentages - if let BarNumbers::Percent = bar_values { - let hp_text = format!("{}%", hp_percentage as u32); - Text::new(&hp_text) - .mid_top_with_margin_on(state.ids.healthbar_bg, 5.0 * scale) - .font_size(14) - .color(TEXT_COLOR) - .set(state.ids.health_text, ui); - let energy_text = format!("{}%", energy_percentage as u32); - Text::new(&energy_text) - .mid_top_with_margin_on(state.ids.energybar_bg, 5.0 * scale) - .font_size(14) - .color(TEXT_COLOR) - .set(state.ids.energy_text, ui); - } - } else { - // Lifebar - Image::new(self.imgs.healthbar_bg) - .w_h(100.0 * scale, 20.0 * scale) - .color(Some(Color::Rgba(1.0, 1.0, 1.0, 0.8))) - .top_left_with_margins_on(state.ids.m1_slot, 0.0, -100.0 * scale) - .set(state.ids.healthbar_bg, ui); - // Energybar - Image::new(self.imgs.energybar_bg) - .w_h(100.0 * scale, 20.0 * scale) - .color(Some(Color::Rgba(1.0, 1.0, 1.0, 0.8))) - .top_right_with_margins_on(state.ids.m2_slot, 0.0, -100.0 * scale) - .set(state.ids.energybar_bg, ui); - } - } - EnBars::Always => { - // Lifebar - Image::new(self.imgs.healthbar_bg) - .w_h(100.0 * scale, 20.0 * scale) - .top_left_with_margins_on(state.ids.m1_slot, 0.0, -100.0 * scale) - .set(state.ids.healthbar_bg, ui); - Image::new(self.imgs.bar_content) - .w_h(97.0 * scale * hp_percentage / 100.0, 16.0 * scale) - .color(Some(if hp_percentage <= 20.0 { - CRITICAL_HP_COLOR - } else if hp_percentage <= 40.0 { - LOW_HP_COLOR - } else { - HP_COLOR - })) - .top_right_with_margins_on(state.ids.healthbar_bg, 2.0 * scale, 1.0 * scale) - .set(state.ids.healthbar_filling, ui); - // Energybar - Image::new(self.imgs.energybar_bg) - .w_h(100.0 * scale, 20.0 * scale) - .top_right_with_margins_on(state.ids.m2_slot, 0.0, -100.0 * scale) - .set(state.ids.energybar_bg, ui); - Image::new(self.imgs.bar_content) - .w_h(97.0 * scale * energy_percentage / 100.0, 16.0 * scale) - .top_left_with_margins_on(state.ids.energybar_bg, 2.0 * scale, 1.0 * scale) - .color(Some(match self.current_resource { - ResourceType::Mana => MANA_COLOR, - //ResourceType::Focus => FOCUS_COLOR, - //ResourceType::Rage => RAGE_COLOR, - })) - .set(state.ids.energybar_filling, ui); - // Bar Text - // Values - if let BarNumbers::Values = bar_values { - let hp_text = format!( - "{}/{}", - self.stats.health.current() as u32, - self.stats.health.maximum() as u32 - ); - Text::new(&hp_text) - .mid_top_with_margin_on(state.ids.healthbar_bg, 5.0 * scale) - .font_size(14) - .color(TEXT_COLOR) - .set(state.ids.health_text, ui); - let energy_text = format!( - "{}/{}", - self.stats.energy.current() as u32, - self.stats.energy.maximum() as u32 - ); - Text::new(&energy_text) - .mid_top_with_margin_on(state.ids.energybar_bg, 5.0 * scale) - .font_size(14) - .color(TEXT_COLOR) - .set(state.ids.energy_text, ui); - } - //Percentages - if let BarNumbers::Percent = bar_values { - let hp_text = format!("{}%", hp_percentage as u32); - Text::new(&hp_text) - .mid_top_with_margin_on(state.ids.healthbar_bg, 5.0 * scale) - .font_size(14) - .color(TEXT_COLOR) - .set(state.ids.health_text, ui); - let energy_text = format!("{}%", energy_percentage as u32); - Text::new(&energy_text) - .mid_top_with_margin_on(state.ids.energybar_bg, 5.0 * scale) - .font_size(14) - .color(TEXT_COLOR) - .set(state.ids.energy_text, ui); - } - } + // Lifebar + Image::new(self.imgs.healthbar_bg) + .w_h(100.0 * scale, 20.0 * scale) + .top_left_with_margins_on(state.ids.m1_slot, 0.0, -100.0 * scale) + .set(state.ids.healthbar_bg, ui); + Image::new(self.imgs.bar_content) + .w_h(97.0 * scale * hp_percentage / 100.0, 16.0 * scale) + .color(Some(if hp_percentage <= 20.0 { + CRITICAL_HP_COLOR + } else if hp_percentage <= 40.0 { + LOW_HP_COLOR + } else { + HP_COLOR + })) + .top_right_with_margins_on(state.ids.healthbar_bg, 2.0 * scale, 1.0 * scale) + .set(state.ids.healthbar_filling, ui); + // Energybar + Image::new(self.imgs.energybar_bg) + .w_h(100.0 * scale, 20.0 * scale) + .top_right_with_margins_on(state.ids.m2_slot, 0.0, -100.0 * scale) + .set(state.ids.energybar_bg, ui); + Image::new(self.imgs.bar_content) + .w_h(97.0 * scale * energy_percentage / 100.0, 16.0 * scale) + .top_left_with_margins_on(state.ids.energybar_bg, 2.0 * scale, 1.0 * scale) + .color(Some(match self.current_resource { + ResourceType::Mana => MANA_COLOR, + //ResourceType::Focus => FOCUS_COLOR, + //ResourceType::Rage => RAGE_COLOR, + })) + .set(state.ids.energybar_filling, ui); + // Bar Text + // Values + if let BarNumbers::Values = bar_values { + let hp_text = format!( + "{}/{}", + self.stats.health.current() as u32, + self.stats.health.maximum() as u32 + ); + Text::new(&hp_text) + .mid_top_with_margin_on(state.ids.healthbar_bg, 5.0 * scale) + .font_size(14) + .color(TEXT_COLOR) + .set(state.ids.health_text, ui); + let energy_text = format!( + "{}/{}", + self.stats.energy.current() as u32, + self.stats.energy.maximum() as u32 + ); + Text::new(&energy_text) + .mid_top_with_margin_on(state.ids.energybar_bg, 5.0 * scale) + .font_size(14) + .color(TEXT_COLOR) + .set(state.ids.energy_text, ui); + } + //Percentages + if let BarNumbers::Percent = bar_values { + let hp_text = format!("{}%", hp_percentage as u32); + Text::new(&hp_text) + .mid_top_with_margin_on(state.ids.healthbar_bg, 5.0 * scale) + .font_size(14) + .color(TEXT_COLOR) + .set(state.ids.health_text, ui); + let energy_text = format!("{}%", energy_percentage as u32); + Text::new(&energy_text) + .mid_top_with_margin_on(state.ids.energybar_bg, 5.0 * scale) + .font_size(14) + .color(TEXT_COLOR) + .set(state.ids.energy_text, ui); } - - // Buffs - // Add debuff slots above the health bar - // Add buff slots above the mana bar - - // Debuffs } + + // Buffs + // Add debuff slots above the health bar + // Add buff slots above the mana bar + + // Debuffs } diff --git a/voxygen/src/scene/terrain.rs b/voxygen/src/scene/terrain.rs index 451402e298..2f10ee1383 100644 --- a/voxygen/src/scene/terrain.rs +++ b/voxygen/src/scene/terrain.rs @@ -5,6 +5,7 @@ use crate::{ SpritePipeline, TerrainLocals, TerrainPipeline, }, }; + use client::Client; use common::{ assets, @@ -62,49 +63,73 @@ fn sprite_config_for(kind: BlockKind) -> Option { variations: 1, wind_sway: 0.0, }), + BlockKind::RoundCactus => Some(SpriteConfig { + variations: 1, + wind_sway: 0.0, + }), + BlockKind::ShortCactus => Some(SpriteConfig { + variations: 1, + wind_sway: 0.0, + }), + BlockKind::MedFlatCactus => Some(SpriteConfig { + variations: 1, + wind_sway: 0.0, + }), + BlockKind::ShortFlatCactus => Some(SpriteConfig { + variations: 1, + wind_sway: 0.0, + }), BlockKind::BlueFlower => Some(SpriteConfig { - variations: 2, - wind_sway: 0.3, + variations: 5, + wind_sway: 0.1, }), BlockKind::PinkFlower => Some(SpriteConfig { - variations: 3, - wind_sway: 0.3, + variations: 4, + wind_sway: 0.1, }), BlockKind::RedFlower => Some(SpriteConfig { - variations: 1, - wind_sway: 0.3, + variations: 2, + wind_sway: 0.1, }), BlockKind::WhiteFlower => Some(SpriteConfig { variations: 1, - wind_sway: 0.3, + wind_sway: 0.1, }), BlockKind::YellowFlower => Some(SpriteConfig { variations: 1, - wind_sway: 0.3, + wind_sway: 0.1, }), BlockKind::Sunflower => Some(SpriteConfig { variations: 2, - wind_sway: 0.3, + wind_sway: 0.1, }), BlockKind::LongGrass => Some(SpriteConfig { - variations: 5, - wind_sway: 1.0, + variations: 7, + wind_sway: 0.8, }), BlockKind::MediumGrass => Some(SpriteConfig { variations: 5, - wind_sway: 1.0, + wind_sway: 0.5, }), BlockKind::ShortGrass => Some(SpriteConfig { variations: 5, - wind_sway: 1.0, + wind_sway: 0.1, }), BlockKind::Apple => Some(SpriteConfig { variations: 1, wind_sway: 0.0, }), + BlockKind::Mushroom => Some(SpriteConfig { + variations: 10, + wind_sway: 0.0, + }), + BlockKind::Liana => Some(SpriteConfig { + variations: 2, + wind_sway: 0.05, + }), _ => None, } } @@ -137,7 +162,7 @@ fn mesh_worker( let kind = volume.get(wpos).unwrap_or(&Block::empty()).kind(); if let Some(cfg) = sprite_config_for(kind) { - let seed = wpos.x * 3 + wpos.y * 7 + wpos.z * 13 + wpos.x * wpos.y; + let seed = wpos.x * 3 + wpos.y * 7 + wpos.x * wpos.y; // Awful PRNG let instance = SpriteInstance::new( Mat4::identity() @@ -183,12 +208,12 @@ impl Terrain { // worker threads that are meshing chunks. let (send, recv) = channel::unbounded(); - let mut make_model = |s| { + let mut make_model = |s, offset| { renderer .create_model( &Meshable::::generate_mesh( &Segment::from(assets::load_expect::(s).as_ref()), - Vec3::new(-6.0, -6.0, 0.0), + offset, ) .0, ) @@ -204,122 +229,370 @@ impl Terrain { // Cacti ( (BlockKind::LargeCactus, 0), - make_model("voxygen.voxel.sprite.cacti.large_cactus"), + make_model( + "voxygen.voxel.sprite.cacti.large_cactus", + Vec3::new(-6.0, -6.0, 0.0), + ), ), ( (BlockKind::BarrelCactus, 0), - make_model("voxygen.voxel.sprite.cacti.barrel_cactus"), + make_model( + "voxygen.voxel.sprite.cacti.barrel_cactus", + Vec3::new(-6.0, -6.0, 0.0), + ), + ), + ( + (BlockKind::RoundCactus, 0), + make_model( + "voxygen.voxel.sprite.cacti.cactus_round", + Vec3::new(-6.0, -6.0, 0.0), + ), + ), + ( + (BlockKind::ShortCactus, 0), + make_model( + "voxygen.voxel.sprite.cacti.cactus_short", + Vec3::new(-6.0, -6.0, 0.0), + ), + ), + ( + (BlockKind::MedFlatCactus, 0), + make_model( + "voxygen.voxel.sprite.cacti.flat_cactus_med", + Vec3::new(-6.0, -6.0, 0.0), + ), + ), + ( + (BlockKind::ShortFlatCactus, 0), + make_model( + "voxygen.voxel.sprite.cacti.flat_cactus_short", + Vec3::new(-6.0, -6.0, 0.0), + ), ), // Fruit ( (BlockKind::Apple, 0), - make_model("voxygen.voxel.sprite.fruit.apple"), + make_model( + "voxygen.voxel.sprite.fruit.apple", + Vec3::new(-6.0, -6.0, 0.0), + ), ), // Flowers ( (BlockKind::BlueFlower, 0), - make_model("voxygen.voxel.sprite.flowers.flower_blue_1"), + make_model( + "voxygen.voxel.sprite.flowers.flower_blue_1", + Vec3::new(-6.0, -6.0, 0.0), + ), ), ( (BlockKind::BlueFlower, 1), - make_model("voxygen.voxel.sprite.flowers.flower_blue_2"), + make_model( + "voxygen.voxel.sprite.flowers.flower_blue_2", + Vec3::new(-6.0, -6.0, 0.0), + ), + ), + ( + (BlockKind::BlueFlower, 2), + make_model( + "voxygen.voxel.sprite.flowers.flower_blue_3", + Vec3::new(-6.0, -6.0, 0.0), + ), + ), + ( + (BlockKind::BlueFlower, 3), + make_model( + "voxygen.voxel.sprite.flowers.flower_blue_4", + Vec3::new(-6.0, -6.0, 0.0), + ), + ), + ( + (BlockKind::BlueFlower, 4), + make_model( + "voxygen.voxel.sprite.flowers.flower_blue_5", + Vec3::new(-6.0, -6.0, 0.0), + ), ), ( (BlockKind::PinkFlower, 0), - make_model("voxygen.voxel.sprite.flowers.flower_pink_1"), + make_model( + "voxygen.voxel.sprite.flowers.flower_pink_1", + Vec3::new(-6.0, -6.0, 0.0), + ), ), ( (BlockKind::PinkFlower, 1), - make_model("voxygen.voxel.sprite.flowers.flower_pink_2"), + make_model( + "voxygen.voxel.sprite.flowers.flower_pink_2", + Vec3::new(-6.0, -6.0, 0.0), + ), ), ( (BlockKind::PinkFlower, 2), - make_model("voxygen.voxel.sprite.flowers.flower_pink_3"), + make_model( + "voxygen.voxel.sprite.flowers.flower_pink_3", + Vec3::new(-6.0, -6.0, 0.0), + ), + ), + ( + (BlockKind::PinkFlower, 3), + make_model( + "voxygen.voxel.sprite.flowers.flower_pink_4", + Vec3::new(-6.0, -6.0, 0.0), + ), ), ( (BlockKind::PurpleFlower, 0), - make_model("voxygen.voxel.sprite.flowers.flower_purple_1"), + make_model( + "voxygen.voxel.sprite.flowers.flower_purple_1", + Vec3::new(-6.0, -6.0, 0.0), + ), ), ( (BlockKind::RedFlower, 0), - make_model("voxygen.voxel.sprite.flowers.flower_red_1"), + make_model( + "voxygen.voxel.sprite.flowers.flower_red_1", + Vec3::new(-6.0, -6.0, 0.0), + ), + ), + ( + (BlockKind::RedFlower, 1), + make_model( + "voxygen.voxel.sprite.flowers.flower_red_2", + Vec3::new(-6.0, -6.0, 0.0), + ), ), ( (BlockKind::WhiteFlower, 0), - make_model("voxygen.voxel.sprite.flowers.flower_white_1"), + make_model( + "voxygen.voxel.sprite.flowers.flower_white_1", + Vec3::new(-6.0, -6.0, 0.0), + ), ), ( (BlockKind::YellowFlower, 0), - make_model("voxygen.voxel.sprite.flowers.flower_purple_1"), + make_model( + "voxygen.voxel.sprite.flowers.flower_purple_1", + Vec3::new(-6.0, -6.0, 0.0), + ), ), ( (BlockKind::Sunflower, 0), - make_model("voxygen.voxel.sprite.flowers.sunflower_1"), + make_model( + "voxygen.voxel.sprite.flowers.sunflower_1", + Vec3::new(-6.0, -6.0, 0.0), + ), ), ( (BlockKind::Sunflower, 1), - make_model("voxygen.voxel.sprite.flowers.sunflower_2"), + make_model( + "voxygen.voxel.sprite.flowers.sunflower_2", + Vec3::new(-6.0, -6.0, 0.0), + ), ), // Grass ( (BlockKind::LongGrass, 0), - make_model("voxygen.voxel.sprite.grass.grass_long_1"), + make_model( + "voxygen.voxel.sprite.grass.grass_long_1", + Vec3::new(-6.0, -6.0, 0.0), + ), ), ( (BlockKind::LongGrass, 1), - make_model("voxygen.voxel.sprite.grass.grass_long_2"), + make_model( + "voxygen.voxel.sprite.grass.grass_long_2", + Vec3::new(-6.0, -6.0, 0.0), + ), ), ( (BlockKind::LongGrass, 2), - make_model("voxygen.voxel.sprite.grass.grass_long_3"), + make_model( + "voxygen.voxel.sprite.grass.grass_long_3", + Vec3::new(-6.0, -6.0, 0.0), + ), ), ( (BlockKind::LongGrass, 3), - make_model("voxygen.voxel.sprite.grass.grass_long_4"), + make_model( + "voxygen.voxel.sprite.grass.grass_long_4", + Vec3::new(-6.0, -6.0, 0.0), + ), ), ( (BlockKind::LongGrass, 4), - make_model("voxygen.voxel.sprite.grass.grass_long_5"), + make_model( + "voxygen.voxel.sprite.grass.grass_long_5", + Vec3::new(-6.0, -6.0, 0.0), + ), + ), + ( + (BlockKind::LongGrass, 5), + make_model( + "voxygen.voxel.sprite.grass.grass_long_6", + Vec3::new(-6.0, -6.0, 0.0), + ), + ), + ( + (BlockKind::LongGrass, 6), + make_model( + "voxygen.voxel.sprite.grass.grass_long_7", + Vec3::new(-6.0, -6.0, 0.0), + ), ), ( (BlockKind::MediumGrass, 0), - make_model("voxygen.voxel.sprite.grass.grass_med_1"), + make_model( + "voxygen.voxel.sprite.grass.grass_med_1", + Vec3::new(-6.0, -6.0, 0.0), + ), ), ( (BlockKind::MediumGrass, 1), - make_model("voxygen.voxel.sprite.grass.grass_med_2"), + make_model( + "voxygen.voxel.sprite.grass.grass_med_2", + Vec3::new(-6.0, -6.0, 0.0), + ), ), ( (BlockKind::MediumGrass, 2), - make_model("voxygen.voxel.sprite.grass.grass_med_3"), + make_model( + "voxygen.voxel.sprite.grass.grass_med_3", + Vec3::new(-6.0, -6.0, 0.0), + ), ), ( (BlockKind::MediumGrass, 3), - make_model("voxygen.voxel.sprite.grass.grass_med_4"), + make_model( + "voxygen.voxel.sprite.grass.grass_med_4", + Vec3::new(-6.0, -6.0, 0.0), + ), ), ( (BlockKind::MediumGrass, 4), - make_model("voxygen.voxel.sprite.grass.grass_med_5"), + make_model( + "voxygen.voxel.sprite.grass.grass_med_5", + Vec3::new(-6.0, -6.0, 0.0), + ), ), ( (BlockKind::ShortGrass, 0), - make_model("voxygen.voxel.sprite.grass.grass_short_1"), + make_model( + "voxygen.voxel.sprite.grass.grass_short_1", + Vec3::new(-6.0, -6.0, 0.0), + ), ), ( (BlockKind::ShortGrass, 1), - make_model("voxygen.voxel.sprite.grass.grass_short_2"), + make_model( + "voxygen.voxel.sprite.grass.grass_short_2", + Vec3::new(-6.0, -6.0, 0.0), + ), ), ( (BlockKind::ShortGrass, 2), - make_model("voxygen.voxel.sprite.grass.grass_short_3"), + make_model( + "voxygen.voxel.sprite.grass.grass_short_3", + Vec3::new(-6.0, -6.0, 0.0), + ), ), ( (BlockKind::ShortGrass, 3), - make_model("voxygen.voxel.sprite.grass.grass_short_3"), + make_model( + "voxygen.voxel.sprite.grass.grass_short_3", + Vec3::new(-6.0, -6.0, 0.0), + ), ), ( (BlockKind::ShortGrass, 4), - make_model("voxygen.voxel.sprite.grass.grass_short_5"), + make_model( + "voxygen.voxel.sprite.grass.grass_short_5", + Vec3::new(-6.0, -6.0, 0.0), + ), + ), + ( + (BlockKind::Mushroom, 0), + make_model( + "voxygen.voxel.sprite.mushrooms.mushroom-0", + Vec3::new(-6.0, -6.0, 0.0), + ), + ), + ( + (BlockKind::Mushroom, 1), + make_model( + "voxygen.voxel.sprite.mushrooms.mushroom-1", + Vec3::new(-6.0, -6.0, 0.0), + ), + ), + ( + (BlockKind::Mushroom, 2), + make_model( + "voxygen.voxel.sprite.mushrooms.mushroom-2", + Vec3::new(-6.0, -6.0, 0.0), + ), + ), + ( + (BlockKind::Mushroom, 3), + make_model( + "voxygen.voxel.sprite.mushrooms.mushroom-3", + Vec3::new(-6.0, -6.0, 0.0), + ), + ), + ( + (BlockKind::Mushroom, 4), + make_model( + "voxygen.voxel.sprite.mushrooms.mushroom-4", + Vec3::new(-6.0, -6.0, 0.0), + ), + ), + ( + (BlockKind::Mushroom, 5), + make_model( + "voxygen.voxel.sprite.mushrooms.mushroom-5", + Vec3::new(-6.0, -6.0, 0.0), + ), + ), + ( + (BlockKind::Mushroom, 6), + make_model( + "voxygen.voxel.sprite.mushrooms.mushroom-6", + Vec3::new(-6.0, -6.0, 0.0), + ), + ), + ( + (BlockKind::Mushroom, 7), + make_model( + "voxygen.voxel.sprite.mushrooms.mushroom-7", + Vec3::new(-6.0, -6.0, 0.0), + ), + ), + ( + (BlockKind::Mushroom, 8), + make_model( + "voxygen.voxel.sprite.mushrooms.mushroom-8", + Vec3::new(-6.0, -6.0, 0.0), + ), + ), + ( + (BlockKind::Mushroom, 9), + make_model( + "voxygen.voxel.sprite.mushrooms.mushroom-9", + Vec3::new(-6.0, -6.0, 0.0), + ), + ), + ( + (BlockKind::Liana, 0), + make_model( + "voxygen.voxel.sprite.lianas.liana-0", + Vec3::new(-1.5, -0.5, -88.0), + ), + ), + ( + (BlockKind::Liana, 1), + make_model( + "voxygen.voxel.sprite.lianas.liana-1", + Vec3::new(-1.0, -0.5, -55.0), + ), ), ] .into_iter() diff --git a/voxygen/src/session.rs b/voxygen/src/session.rs index af62898a32..7555b8efc7 100644 --- a/voxygen/src/session.rs +++ b/voxygen/src/session.rs @@ -342,10 +342,6 @@ impl PlayState for SessionState { global_state.settings.gameplay.xp_bar = xp_bar; global_state.settings.save_to_file_warn(); } - HudEvent::ToggleEnBars(en_bars) => { - global_state.settings.gameplay.en_bars = en_bars; - global_state.settings.save_to_file_warn(); - } HudEvent::ToggleBarNumbers(bar_numbers) => { global_state.settings.gameplay.bar_numbers = bar_numbers; global_state.settings.save_to_file_warn(); diff --git a/voxygen/src/settings.rs b/voxygen/src/settings.rs index 8f46dd5d47..66327d7fe4 100644 --- a/voxygen/src/settings.rs +++ b/voxygen/src/settings.rs @@ -1,5 +1,5 @@ use crate::{ - hud::{BarNumbers, CrosshairType, EnBars, ShortcutNumbers, XpBar}, + hud::{BarNumbers, CrosshairType, ShortcutNumbers, XpBar}, ui::ScaleMode, window::KeyMouse, }; @@ -87,7 +87,6 @@ pub struct GameplaySettings { pub crosshair_transp: f32, pub crosshair_type: CrosshairType, pub xp_bar: XpBar, - pub en_bars: EnBars, pub shortcut_numbers: ShortcutNumbers, pub bar_numbers: BarNumbers, pub ui_scale: ScaleMode, @@ -101,7 +100,6 @@ impl Default for GameplaySettings { crosshair_transp: 0.6, crosshair_type: CrosshairType::Round, xp_bar: XpBar::OnGain, - en_bars: EnBars::OnLoss, shortcut_numbers: ShortcutNumbers::On, bar_numbers: BarNumbers::Off, ui_scale: ScaleMode::RelativeToWindow([1920.0, 1080.0].into()), @@ -182,10 +180,10 @@ impl Default for AudioSettings { fn default() -> Self { Self { master_volume: 1.0, - music_volume: 0.5, - sfx_volume: 0.5, + music_volume: 0.4, + sfx_volume: 0.6, audio_device: None, - audio_on: true, + audio_on: false, } } } diff --git a/world/src/block/mod.rs b/world/src/block/mod.rs index b73ae6fb96..fc6c7026f2 100644 --- a/world/src/block/mod.rs +++ b/world/src/block/mod.rs @@ -265,6 +265,7 @@ impl<'a> BlockGen<'a> { BlockKind::WhiteFlower, BlockKind::YellowFlower, BlockKind::Sunflower, + BlockKind::Mushroom, ]; let grasses = [ @@ -285,11 +286,20 @@ impl<'a> BlockGen<'a> { && temp > CONFIG.desert_temp && (marble * 4423.5).fract() < 0.0005 { + let large_cacti = [BlockKind::LargeCactus, BlockKind::MedFlatCactus]; + + let small_cacti = [ + BlockKind::BarrelCactus, + BlockKind::RoundCactus, + BlockKind::ShortCactus, + BlockKind::ShortFlatCactus, + ]; + Some(Block::new( if (height * 1271.0).fract() < 0.5 { - BlockKind::LargeCactus + large_cacti[(height * 0.2) as usize % large_cacti.len()] } else { - BlockKind::BarrelCactus + small_cacti[(height * 0.3) as usize % small_cacti.len()] }, Rgb::broadcast(0), )) @@ -565,6 +575,20 @@ pub fn block_from_structure( .map(|e| e as u8), )), StructureBlock::Fruit => Some(Block::new(BlockKind::Apple, Rgb::new(194, 30, 37))), + StructureBlock::Liana => Some(Block::new( + BlockKind::Liana, + Lerp::lerp( + Rgb::new(0.0, 125.0, 107.0), + Rgb::new(0.0, 155.0, 129.0), + lerp, + ) + .map(|e| e as u8), + )), + StructureBlock::Mangrove => Some(Block::new( + BlockKind::Normal, + Lerp::lerp(Rgb::new(32.0, 56.0, 22.0), Rgb::new(57.0, 69.0, 27.0), lerp) + .map(|e| e as u8), + )), StructureBlock::Hollow => Some(Block::empty()), StructureBlock::Normal(color) => { Some(Block::new(default_kind, color)).filter(|block| !block.is_empty()) diff --git a/world/src/block/natural.rs b/world/src/block/natural.rs index 54c6f27306..1489b92eef 100644 --- a/world/src/block/natural.rs +++ b/world/src/block/natural.rs @@ -440,16 +440,16 @@ lazy_static! { .with_center(Vec3::new(18, 16, 8))) .unwrap(), assets::load_map("world.tree.mangroves.5", |s: Structure| s - .with_center(Vec3::new(16, 17, 8))) + .with_center(Vec3::new(19, 20, 9))) .unwrap(), assets::load_map("world.tree.mangroves.6", |s: Structure| s - .with_center(Vec3::new(18, 18, 8))) + .with_center(Vec3::new(18, 18, 9))) .unwrap(), assets::load_map("world.tree.mangroves.7", |s: Structure| s - .with_center(Vec3::new(18, 17, 8))) + .with_center(Vec3::new(18, 17, 9))) .unwrap(), assets::load_map("world.tree.mangroves.8", |s: Structure| s - .with_center(Vec3::new(18, 18, 8))) + .with_center(Vec3::new(18, 18, 9))) .unwrap(), ];