From e68f280f543b086951f98b18ea9a1f6b14477384 Mon Sep 17 00:00:00 2001 From: Relintai Date: Thu, 26 Sep 2024 21:25:23 +0200 Subject: [PATCH] Added https://github.com/Relintai/the_tower_pandemonium as a new voxelman demo. --- voxelman/the_tower_gles2/.gitignore | 16 + voxelman/the_tower_gles2/LICENSE | 19 + voxelman/the_tower_gles2/README.md | 270 +++++++++++++ .../the_tower_gles2/areas/ExitPortal.tscn | 34 ++ .../the_tower_gles2/default_bus_layout.tres | 18 + voxelman/the_tower_gles2/default_env.tres | 7 + .../the_tower_gles2/environments/red_env.tres | 23 ++ voxelman/the_tower_gles2/icon.png | Bin 0 -> 6925 bytes voxelman/the_tower_gles2/icon.png.import | 35 ++ voxelman/the_tower_gles2/levels/LICENSE.txt | 202 ++++++++++ voxelman/the_tower_gles2/levels/Level0.gd | 6 + voxelman/the_tower_gles2/levels/Level0.tscn | 357 ++++++++++++++++++ voxelman/the_tower_gles2/levels/Level1.gd | 2 + voxelman/the_tower_gles2/levels/Level1.tscn | 285 ++++++++++++++ voxelman/the_tower_gles2/levels/Level10.gd | 12 + voxelman/the_tower_gles2/levels/Level10.tscn | 238 ++++++++++++ voxelman/the_tower_gles2/levels/Level2.tscn | 258 +++++++++++++ voxelman/the_tower_gles2/levels/Level3.tscn | 220 +++++++++++ voxelman/the_tower_gles2/levels/Level4.tscn | 224 +++++++++++ voxelman/the_tower_gles2/levels/Level5.tscn | 257 +++++++++++++ voxelman/the_tower_gles2/levels/Level6.tscn | 204 ++++++++++ voxelman/the_tower_gles2/levels/Level7.tscn | 188 +++++++++ voxelman/the_tower_gles2/levels/Level8.tscn | 204 ++++++++++ voxelman/the_tower_gles2/levels/Level9.tscn | 220 +++++++++++ voxelman/the_tower_gles2/levels/LevelKit.tscn | 84 +++++ .../the_tower_gles2/levels/Particles.tscn | 35 ++ .../the_tower_gles2/levels/Roboto-Black.ttf | Bin 0 -> 171072 bytes .../levels/WorldEnvironment.tscn | 6 + .../the_tower_gles2/levels/title_font.tres | 7 + .../levels/title_subtext_font.tres | 7 + .../the_tower_gles2/library/MainLibrary.tres | 38 ++ .../library/liquid_material.tres | 6 + .../the_tower_gles2/library/main_atlas.png | Bin 0 -> 2654 bytes .../library/main_atlas.png.import | 35 ++ .../the_tower_gles2/library/main_atlas.pxo | Bin 0 -> 363 bytes .../the_tower_gles2/library/main_emission.png | Bin 0 -> 541 bytes .../library/main_emission.png.import | 35 ++ .../the_tower_gles2/library/main_emission.pxo | Bin 0 -> 490 bytes .../library/surface_material.tres | 13 + voxelman/the_tower_gles2/particles/flake.png | Bin 0 -> 119 bytes .../particles/flake.png.import | 35 ++ voxelman/the_tower_gles2/particles/flake.pxo | Bin 0 -> 174 bytes voxelman/the_tower_gles2/player/Exit.gd | 4 + voxelman/the_tower_gles2/player/Menu.gd | 8 + voxelman/the_tower_gles2/player/Player.gd | 210 +++++++++++ voxelman/the_tower_gles2/player/Player.tscn | 71 ++++ voxelman/the_tower_gles2/player/Volume.gd | 8 + .../the_tower_gles2/player/VolumeControl.tscn | 26 ++ voxelman/the_tower_gles2/player/button.png | Bin 0 -> 630 bytes .../the_tower_gles2/player/button.png.import | 35 ++ voxelman/the_tower_gles2/player/panel.png | Bin 0 -> 630 bytes .../the_tower_gles2/player/panel.png.import | 35 ++ voxelman/the_tower_gles2/player/ui_theme.tres | 62 +++ voxelman/the_tower_gles2/project.pandemonium | 62 +++ voxelman/the_tower_gles2/scenes/Main.gd | 34 ++ voxelman/the_tower_gles2/scenes/Main.tscn | 18 + voxelman/the_tower_gles2/scripts/Ladder.gd | 15 + .../the_tower_gles2/scripts/exit_portal.gd | 16 + .../the_tower_gles2/sounds/edited/README.txt | 32 ++ .../sounds/edited/stepdirt_1.wav | Bin 0 -> 22586 bytes .../sounds/edited/stepdirt_1.wav.import | 23 ++ 61 files changed, 4259 insertions(+) create mode 100644 voxelman/the_tower_gles2/.gitignore create mode 100644 voxelman/the_tower_gles2/LICENSE create mode 100644 voxelman/the_tower_gles2/README.md create mode 100644 voxelman/the_tower_gles2/areas/ExitPortal.tscn create mode 100644 voxelman/the_tower_gles2/default_bus_layout.tres create mode 100644 voxelman/the_tower_gles2/default_env.tres create mode 100644 voxelman/the_tower_gles2/environments/red_env.tres create mode 100644 voxelman/the_tower_gles2/icon.png create mode 100644 voxelman/the_tower_gles2/icon.png.import create mode 100644 voxelman/the_tower_gles2/levels/LICENSE.txt create mode 100644 voxelman/the_tower_gles2/levels/Level0.gd create mode 100644 voxelman/the_tower_gles2/levels/Level0.tscn create mode 100644 voxelman/the_tower_gles2/levels/Level1.gd create mode 100644 voxelman/the_tower_gles2/levels/Level1.tscn create mode 100644 voxelman/the_tower_gles2/levels/Level10.gd create mode 100644 voxelman/the_tower_gles2/levels/Level10.tscn create mode 100644 voxelman/the_tower_gles2/levels/Level2.tscn create mode 100644 voxelman/the_tower_gles2/levels/Level3.tscn create mode 100644 voxelman/the_tower_gles2/levels/Level4.tscn create mode 100644 voxelman/the_tower_gles2/levels/Level5.tscn create mode 100644 voxelman/the_tower_gles2/levels/Level6.tscn create mode 100644 voxelman/the_tower_gles2/levels/Level7.tscn create mode 100644 voxelman/the_tower_gles2/levels/Level8.tscn create mode 100644 voxelman/the_tower_gles2/levels/Level9.tscn create mode 100644 voxelman/the_tower_gles2/levels/LevelKit.tscn create mode 100644 voxelman/the_tower_gles2/levels/Particles.tscn create mode 100644 voxelman/the_tower_gles2/levels/Roboto-Black.ttf create mode 100644 voxelman/the_tower_gles2/levels/WorldEnvironment.tscn create mode 100644 voxelman/the_tower_gles2/levels/title_font.tres create mode 100644 voxelman/the_tower_gles2/levels/title_subtext_font.tres create mode 100644 voxelman/the_tower_gles2/library/MainLibrary.tres create mode 100644 voxelman/the_tower_gles2/library/liquid_material.tres create mode 100644 voxelman/the_tower_gles2/library/main_atlas.png create mode 100644 voxelman/the_tower_gles2/library/main_atlas.png.import create mode 100644 voxelman/the_tower_gles2/library/main_atlas.pxo create mode 100644 voxelman/the_tower_gles2/library/main_emission.png create mode 100644 voxelman/the_tower_gles2/library/main_emission.png.import create mode 100644 voxelman/the_tower_gles2/library/main_emission.pxo create mode 100644 voxelman/the_tower_gles2/library/surface_material.tres create mode 100644 voxelman/the_tower_gles2/particles/flake.png create mode 100644 voxelman/the_tower_gles2/particles/flake.png.import create mode 100644 voxelman/the_tower_gles2/particles/flake.pxo create mode 100644 voxelman/the_tower_gles2/player/Exit.gd create mode 100644 voxelman/the_tower_gles2/player/Menu.gd create mode 100644 voxelman/the_tower_gles2/player/Player.gd create mode 100644 voxelman/the_tower_gles2/player/Player.tscn create mode 100644 voxelman/the_tower_gles2/player/Volume.gd create mode 100644 voxelman/the_tower_gles2/player/VolumeControl.tscn create mode 100644 voxelman/the_tower_gles2/player/button.png create mode 100644 voxelman/the_tower_gles2/player/button.png.import create mode 100644 voxelman/the_tower_gles2/player/panel.png create mode 100644 voxelman/the_tower_gles2/player/panel.png.import create mode 100644 voxelman/the_tower_gles2/player/ui_theme.tres create mode 100644 voxelman/the_tower_gles2/project.pandemonium create mode 100644 voxelman/the_tower_gles2/scenes/Main.gd create mode 100644 voxelman/the_tower_gles2/scenes/Main.tscn create mode 100644 voxelman/the_tower_gles2/scripts/Ladder.gd create mode 100644 voxelman/the_tower_gles2/scripts/exit_portal.gd create mode 100644 voxelman/the_tower_gles2/sounds/edited/README.txt create mode 100644 voxelman/the_tower_gles2/sounds/edited/stepdirt_1.wav create mode 100644 voxelman/the_tower_gles2/sounds/edited/stepdirt_1.wav.import diff --git a/voxelman/the_tower_gles2/.gitignore b/voxelman/the_tower_gles2/.gitignore new file mode 100644 index 0000000..e9f4f1f --- /dev/null +++ b/voxelman/the_tower_gles2/.gitignore @@ -0,0 +1,16 @@ +\exports/ +\.import/ + +addons/scene_notes/ + +addons/todo/ + +scene-notes\.ini + +todo\.cache\.ini + +todo\.config\.ini + +export_presets\.cfg + +export.cfg \ No newline at end of file diff --git a/voxelman/the_tower_gles2/LICENSE b/voxelman/the_tower_gles2/LICENSE new file mode 100644 index 0000000..a7d5e8f --- /dev/null +++ b/voxelman/the_tower_gles2/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2019-present Péter Magyar + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/voxelman/the_tower_gles2/README.md b/voxelman/the_tower_gles2/README.md new file mode 100644 index 0000000..d26dc25 --- /dev/null +++ b/voxelman/the_tower_gles2/README.md @@ -0,0 +1,270 @@ +# The Tower Pandemonium + +A really simple (and visually strange) demonstration project for Voxelman in the Pandemonium engine. + +It is a first person parkour game. Reach the weird glowing teleporter at the end of each level. + +In order to open this, you need to have the proper version of the [Pandemonium Engine](https://github.com/Relintai/pandemonium_engine)! + +You can either just get an executable at the [releases tab](https://github.com/Relintai/the_tower_pandemonium/releases), or +you can build one yourself see [here](#compiling). + +You can also try a live version running in the browser [here](https://relintai.github.io/the_tower_pandemonium/). + +Unfortunately the web editor needs custom http headers to work and I can't set that up from github.io, so right now I don't have a hosted version of that. + +Should work on all platforms (even when there is no threading available).\ +It does not have touchscreen controls tough. + +## Controls + +`w`,`a`,`s`,`d`: Movement \ +`space`: jump (you can also double jump) \ +`shift`: run \ +`r`: reload level \ +`esc`: ingame menu + +## Screenshots + +![The menu](pictures/screenshot_menu.jpg) +![The game](pictures/screenshot_game.jpg) +![A teleporter](pictures/screenshot_teleporter.jpg) +![The editor](pictures/screenshot_editor.jpg) + +## Assets + +### The sound effect + +https://opengameart.org/content/foot-walking-step-sounds-on-stone-water-snow-wood-and-dirt + +Author: \ +Jute (Submitted by qubodup)\ +Thursday, February 11, 2010 - 02:27\ +Art Type: Sound Effect \ +Tags: snow step walk walking movement dirt Wood water wet footstep foot run Action RPG Fantasy Other\ +License(s): GPL 3.0, GPL 2.0 + +These sounds were made by Jute for DungeonHack. They are based on sounds from pdsounds.org. + +I did modify the effect I use from it. + +### The font + +The font is licensed under the Apache License. (it's next to it.) + +## Editing the game + +Grab an engine which has voxelman built in, and then open the project inside the `game` folder. + +## Compiling + +First make sure, that you have everything installed to be able to compile the godot engine. See [the official docs for compiling Godot](https://docs.godotengine.org/en/latest/development/compiling/index.html) for more info. My setup/compile script uses the same tools, so +you don't need to install anything else. + +Now let's clone this repository: + +``` git clone https://github.com/Relintai/the_tower_pandemonium ``` + +cd into the new folder: + +``` cd the_tower ``` + +Now let's run the project's setup script, by calling scons without arguments. + +``` scons ``` + +This will clone and setup the engine, and all of the required modules into a new `engine` folder inside the project, using http. + +(If you want to use the github's ssh links append `repository_type=ssh` like ``` scons repository_type=ssh ```) + +Once it is done you can compile the engine. + +To build the editor on windows with 4 threads run the following command: + +``` scons bew -j4 ``` + +To build the editor on linux with 4 threads run the following command: + +``` scons bel -j4 ``` + +I call this feature of the setup script build words. [See](#build-words). + +Once the build finishes you can find the editor executable inside the `./engine/bin/` folder. + +For convenience there is a provided `editor.sh`, or `editor.bat` for running it from the project's folder. +These will create a copy, so you can even compile while the editor is running. + +Alternatively if you don't want to use build words, you can also just go into the engine folder: + +``` cd engine ``` + +And compile godot as per the [official docs](https://docs.godotengine.org/en/latest/development/compiling/index.html). + +### Build words + +The project's setup script contains support for "build words". These can be used from the root of this project. + +For example to build the editor for windows with 4 threads you can use: + +``` scons bew -j4 ``` + +The first argument must start with b (build), then it needs to be followed by a few abbreviations (the order does not matters) + +The rest of the arguments will be passed directly to godot's scons script. + +#### Editor + +Append `e` to build with `tools=yes` a.k.a. the editor. + +``` scons bew -j4 ``` + +if you omit `e`, the system will build the export template for you. For example: + +``` scons bw -j4 ``` + +This will be the `release_debug` windows export template. + +#### Platform abbreviations + +`l`: linux \ +`w`: windows \ +`a`: android \ +`j`: Javascript \ +`i`: iphone (Not yet finished, use `build_ios.sh`, and `build_ios_release.sh`) \ +Mac OSX: Not yet finished, use `build_osx.sh` + +#### Target abbreviations + +By default the system builds in release_debug. + +Append `d` for debug, or `r` for release. + +``` scons bewd -j4 ``` + +build editor windows debug + +``` scons bwr -j4 ``` + +build windows release (this will build the windows release export template) + +#### Shared modules + +Note: This only works on linux! + +append `s` to the build string. + +Optionally you can also make the build system only build a target module, by appending one of these: + +`E`: Entity Spell System \ +`T`: Texture Packer \ +`V`: Voxelman \ +`W`: World Generator \ +`P`: Procedural Animations + +Example: + +``` scons belsE -j4 ``` + +build editor linux shared (Entity Spell System) with 4 threads + +Note: to easily run the editor you can use the `editor.sh` or `editor.bat` in the root of the project. + +#### Other + +Append `v` to pass the `vsproj=yes` parameter to the build script. This will generate Visual Studio project files. + +#### Postfixes + +There are a few postfixes for the build words. These are more complex options. You have to append them to your build word with an underscore. + +You can use as many as you want. + +For example: + +``` scons bel_slim_latomic -j4 ``` + +##### slim + +With this postfix you can build a slimmed down version of the engine. This disables quite a few unneeded modules. + +``` scons bel_slim -j4 ``` + +##### latomic + +If you get linker errors while building the game/editor about undefined referenced with atomic related functions you can use this postfix. +It will add the ` -latomic ` command line switch to the linker flags. + +I ran into this issue while building on a raspberry pi 4 with the x11 platform. It might be related to the recent reworks to threading. + +``` scons bel_latomic -j4 ``` + +##### strip + +Appends `debug_symbols=no` to the build command, which will strip the resulting binary from debug symbols. + +``` scons bel_strip -j4 ``` + +##### threads + +Appends `threads_enabled=yes` to the build command. Useful for building the editor for html. + +``` scons bej_threads -j4 ``` + +#### Scons cache, and sdk locations + +In order to use scons cache and to tell the build system where some of the required sdks are located you usually +have to use environment variables. Most of the time you might just want to add them globally, +howewer this is sometimes unfeasible (e.g. you don't have administrator access, or you just want to have +multiple sdk versions installed). + +In order to solve this a build config file was added. + +If you want to use the config simply rename the provided `build.config.example` to `build.config`, and customize +the settings inside. + +### Manual Setup + +If you you don't want to use the setup script (or just want to know what it actually does), +this section will explain how to set everything up manually. + +First clone the Pandemonium Engine: + +``` git clone https://github.com/Relintai/pandemonium_engine ``` + +go into engine's modules folder. + +``` cd godot/modules/ ``` + +Now go ahead and get every single required engine module from [here](#the-required-engine-modules). + +``` cd ../../ ``` + +Now if you look at the [HEADS file](https://github.com/Relintai/the_tower_pandemonium/blob/master/HEADS). + +It contains the commit hashes for that particular revision for every module and the engine. + +You need to go through them and checkout the proper commits. + +Now you can go ahead and compile godot normally. + +## Pulling upstream changes + +First pull the changes by calling + +``` git pull orgin master ``` + +Then just run `scons`, to update the modules. + +## Upgrading the modules + +Note: this is how to update the HEADS file. Normally you don't need to do this. + +If you want to update the modules, and the engine to the latest, you can use (`action=update`): + +``` scons a=u ``` + +You can also update different targets: `all`, `engine`, `modules`, `all_addons`, `addons`, `third_party_addons` + +For example to update the engine to the latest: ``` scons a=u target=engine ``` + + diff --git a/voxelman/the_tower_gles2/areas/ExitPortal.tscn b/voxelman/the_tower_gles2/areas/ExitPortal.tscn new file mode 100644 index 0000000..d47505d --- /dev/null +++ b/voxelman/the_tower_gles2/areas/ExitPortal.tscn @@ -0,0 +1,34 @@ +[gd_scene load_steps=6 format=3] + +[ext_resource path="res://scripts/exit_portal.gd" type="Script" id=1] +[ext_resource path="res://particles/flake.png" type="Texture" id=2] + +[sub_resource type="BoxShape" id=4] +extents = Vector3( 1, 1.65801, 1 ) + +[sub_resource type="SpatialMaterial" id=5] +flags_transparent = true +vertex_color_use_as_albedo = true +params_billboard_mode = 3 +particles_anim_h_frames = 1 +particles_anim_v_frames = 1 +particles_anim_loop = false +albedo_texture = ExtResource( 2 ) + +[sub_resource type="QuadMesh" id=6] +material = SubResource( 5 ) + +[node name="ExitPortal" type="Area"] +script = ExtResource( 1 ) + +[node name="CollisionShape" type="CollisionShape" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.67644, 0 ) +shape = SubResource( 4 ) + +[node name="Particles" type="CPUParticles" parent="."] +mesh = SubResource( 6 ) +emission_shape = 2 +emission_box_extents = Vector3( 0.5, 1, 0.5 ) +gravity = Vector3( 0, 9.8, 0 ) +scale_amount = 0.1 +color = Color( 0.26, 0.33, 0.84, 1 ) diff --git a/voxelman/the_tower_gles2/default_bus_layout.tres b/voxelman/the_tower_gles2/default_bus_layout.tres new file mode 100644 index 0000000..fe1781a --- /dev/null +++ b/voxelman/the_tower_gles2/default_bus_layout.tres @@ -0,0 +1,18 @@ +[gd_resource type="AudioBusLayout" load_steps=2 format=3] + +[sub_resource type="AudioEffectReverb" id=1] +resource_name = "Reverb" +room_size = 0.13 +damping = 0.09 +wet = 0.13 + +[resource] +bus/0/volume_db = 0.0672607 +bus/1/name = @"Footsteps" +bus/1/solo = false +bus/1/mute = false +bus/1/bypass_fx = false +bus/1/volume_db = -4.25003 +bus/1/send = @"Master" +bus/1/effect/0/effect = SubResource( 1 ) +bus/1/effect/0/enabled = true diff --git a/voxelman/the_tower_gles2/default_env.tres b/voxelman/the_tower_gles2/default_env.tres new file mode 100644 index 0000000..8419635 --- /dev/null +++ b/voxelman/the_tower_gles2/default_env.tres @@ -0,0 +1,7 @@ +[gd_resource type="Environment3D" load_steps=2 format=3] + +[sub_resource type="ProceduralSky" id=1] + +[resource] +background_mode = 2 +background_sky = SubResource( 1 ) diff --git a/voxelman/the_tower_gles2/environments/red_env.tres b/voxelman/the_tower_gles2/environments/red_env.tres new file mode 100644 index 0000000..4a1f851 --- /dev/null +++ b/voxelman/the_tower_gles2/environments/red_env.tres @@ -0,0 +1,23 @@ +[gd_resource type="Environment3D" load_steps=2 format=3] + +[sub_resource type="ProceduralSky" id=1] +sky_top_color = Color( 0.490196, 0.364706, 0.45098, 1 ) +sky_horizon_color = Color( 0.52549, 0.168627, 0.203922, 1 ) +sky_curve = 0.564901 +ground_bottom_color = Color( 0.329412, 0.156863, 0.2, 1 ) +ground_horizon_color = Color( 0.498039, 0.117647, 0.235294, 1 ) +ground_curve = 0.0828212 +sun_color = Color( 0, 0, 0, 1 ) +sun_latitude = 30.76 +sun_angle_min = 5.24 +sun_curve = 0.237841 + +[resource] +background_mode = 2 +background_sky = SubResource( 1 ) +ambient_light_color = Color( 0.772549, 0.772549, 0.772549, 1 ) +fog_enabled = true +ss_reflections_enabled = true +ssao_enabled = true +dof_blur_far_distance = 11.61 +glow_enabled = true diff --git a/voxelman/the_tower_gles2/icon.png b/voxelman/the_tower_gles2/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..b6a755ffb01f7732581f5b848e399c15a3c5a1b2 GIT binary patch literal 6925 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 JnYc6Ze*j{{%6 void: + if event.scancode == KEY_ENTER: + get_parent().next_level() diff --git a/voxelman/the_tower_gles2/levels/Level0.tscn b/voxelman/the_tower_gles2/levels/Level0.tscn new file mode 100644 index 0000000..fc5c66c --- /dev/null +++ b/voxelman/the_tower_gles2/levels/Level0.tscn @@ -0,0 +1,357 @@ +[gd_scene load_steps=20 format=3] + +[ext_resource path="res://levels/Particles.tscn" type="PackedScene" id=1] +[ext_resource path="res://levels/Level0.gd" type="Script" id=2] +[ext_resource path="res://library/MainLibrary.tres" type="VoxelLibrarySimple" id=3] +[ext_resource path="res://levels/WorldEnvironment.tscn" type="PackedScene" id=4] +[ext_resource path="res://areas/ExitPortal.tscn" type="PackedScene" id=6] +[ext_resource path="res://levels/title_font.tres" type="DynamicFont" id=7] +[ext_resource path="res://levels/title_subtext_font.tres" type="DynamicFont" id=8] + +[sub_resource type="VoxelChunkBlocky" id=1] +resource_name = "Chunk[-1,0,-1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, 0, -16 ) +position_x = -1 +position_z = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 3 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABACM/AQEBOQAjDwIAbQ63AA8SAAAP3gBUD0QB/zAvAQG/AQAPAgCSDrcADxIAAA+IAlQeAnsADwIAbA6RAA8SAAAPPwMADyYAAg4VAA8CAD8PZgBTDwIAGg/3AFEPAgA6D8wDgA9EAWoOfQAPEgAjDwIAbA61AA8CAGoOjwAPEgARDwIA/yAOVgEPAgD/IA9EAX4PkQB+DwIAoA9EAf///84O3gMPEgAOHwE9DIAPAgCdDmUBDwIA/w0OMQEOTw8OJAAPAgD7DiABHQIhAQ4SAA8CAP8/UAAAAAAA" ) + +[sub_resource type="VoxelChunkBlocky" id=2] +resource_name = "Chunk[-1,-1,-1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, -16, -16 ) +position_x = -1 +position_y = -1 +position_z = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 3 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAP//vC8BAc8C//92D4gC/zIPRAH/Mg8CAP///////////6oP+Ar/Mg9EAf8fDjEBDkwRDyQAAA9gDPoOIAEdAiABDhIADjYADwIA6Q4OAQ4yAQsSAFAAAAAAAA==" ) + +[sub_resource type="VoxelChunkBlocky" id=3] +resource_name = "Chunk[0,0,-1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -16 ) +position_z = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 3 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAP////////////////////////8NHwEOE/8xD0QB/zIPAgD/G1AAAAAAAA==" ) + +[sub_resource type="VoxelChunkBlocky" id=4] +resource_name = "Chunk[-1,0,0]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, 0, 0 ) +position_x = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 3 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAP//Lh0BQAIfAhIAEA8CAPsORAEPEgARDwIA/////////////////////////wlQAAAAAAA=" ) + +[sub_resource type="VoxelChunkBlocky" id=5] +resource_name = "Chunk[0,-1,-1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -16, -16 ) +position_y = -1 +position_z = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 3 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAP////////////////////////8LHQEMEw4SAA8CAP8OHQIhAQ9EAf8gDgIAD0QB/wtQAAAAAAA=" ) + +[sub_resource type="VoxelChunkBlocky" id=6] +resource_name = "Chunk[0,-1,0]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -16, 0 ) +position_y = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 3 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAA4fASIADg8CAP0dAhEBD0QB/yAOMgEOEgAPAgD//////////////////////////whQAAAAAAA=" ) + +[sub_resource type="VoxelChunkBlocky" id=7] +resource_name = "Chunk[-1,-1,0]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, -16, 0 ) +position_x = -1 +position_y = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 3 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAPgdAQwBHwISABAPAgD7D0QBIw42AA8CAOkODgEPEgAjDwIA////////////////////////5lAAAAAAAA==" ) + +[sub_resource type="VoxelChunkBlocky" id=8] +resource_name = "Chunk[0,0,0]" +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 3 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAP9DHwFWAf8xD0QB/zIPAgD////////////////////////kUAAAAAAA" ) + +[sub_resource type="VoxelChunkBlocky" id=9] +resource_name = "Chunk[-1,0,-2]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, 0, -32 ) +position_x = -1 +position_z = -2 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 3 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAP//////////////////////3B0B3xEsAQEVAA8SAAAAOQAJJgANJAA9AQIBFAAAJwAaATcAARMAABoAAwIAAB4AAAQACQIACSIAIQACEgAKFAABNQALOAAPJAAAAJMAAC0ADwIATAycAA8CAJUOHQEPEgAAD0QBUw9mAFMPAgBADzIBAA1mAA6aAg8CAEMPiAL0UAAAAAAA" ) + +[sub_resource type="VoxelChunkBlocky" id=10] +resource_name = "Chunk[0,0,-2]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -32 ) +position_z = -2 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 3 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAP/////////////////////////////FUAAAAAAA" ) + +[sub_resource type="VoxelChunkBlocky" id=11] +resource_name = "Chunk[-1,-1,-2]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, -16, -32 ) +position_x = -1 +position_y = -1 +position_z = -2 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 3 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAP//////////////////////////hx8BhxT//ypQAAAAAAA=" ) + +[sub_resource type="VoxelChunkBlocky" id=12] +resource_name = "Chunk[-2,0,-1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -32, 0, -16 ) +position_x = -2 +position_z = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 3 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAP///////+sdAfkGDxIAIw8CAOkOMgEdAg8BDhIADjYADhIADwIAEQ42AA4SAA8CAI8OtAAOMgEOEgAONgAPAgA1D1oARw8CAEcOtAAPEgAjDwIA//////////////+uUAAAAAAA" ) + +[node name="Level0" type="VoxelWorldBlocky"] +editable = true +max_concurrent_generations = 5 +library = ExtResource( 3 ) +chunks = [ SubResource( 1 ), SubResource( 2 ), SubResource( 3 ), SubResource( 4 ), SubResource( 5 ), SubResource( 6 ), SubResource( 7 ), SubResource( 8 ), SubResource( 9 ), SubResource( 10 ), SubResource( 11 ), SubResource( 12 ) ] +num_lods = 5 +script = ExtResource( 2 ) +__meta__ = { +"_edit_lock_": true +} + +[node name="WorldEnvironment" parent="." instance=ExtResource( 4 )] + +[node name="DirectionalLight" type="DirectionalLight" parent="."] +transform = Transform( 0.969817, 0.22762, -0.0874344, 0, 0.35858, 0.933499, 0.243835, -0.905323, 0.347757, 0, 5.5679, -6.05193 ) +light_color = Color( 0.47451, 0.352941, 0.607843, 1 ) +light_energy = 0.31 +shadow_enabled = true + +[node name="DirectionalLight2" type="DirectionalLight" parent="."] +transform = Transform( 0.902848, -0.382056, -0.197228, 0, -0.458712, 0.888585, -0.42996, -0.802257, -0.414147, 0, 5.5679, -6.94149 ) +light_color = Color( 0.682353, 0.145098, 0.145098, 1 ) +light_energy = 0.17 +shadow_enabled = true + +[node name="OmniLight" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -5.33566, 8.78919, -13.4252 ) +light_color = Color( 0.894118, 0.894118, 0.894118, 1 ) +light_energy = 1.17 +light_negative = true +shadow_enabled = true +omni_range = 7.3664 +omni_attenuation = 2.0 +omni_shadow_mode = 0 + +[node name="OmniLight2" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -8.18059, 1.65957, -15.6395 ) +light_color = Color( 0.141176, 0.427451, 0.552941, 1 ) +light_energy = 2.55 +light_indirect_energy = 5.47 +light_specular = 0.61 +omni_range = 8.88538 +omni_attenuation = 1.1487 + +[node name="OmniLight3" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -17.2802, 1.65957, -7.3639 ) +light_color = Color( 0.462745, 0.0980392, 0.380392, 1 ) +light_energy = 2.55 +light_indirect_energy = 5.47 +light_specular = 0.61 +omni_range = 8.88538 +omni_attenuation = 1.1487 + +[node name="OmniLight4" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -8.53726, 4.41136, -7.73945 ) +light_color = Color( 0.164706, 0.054902, 0.690196, 1 ) +light_energy = 2.55 +light_indirect_energy = 5.47 +light_specular = 0.61 +omni_range = 8.88538 +omni_attenuation = 0.406128 + +[node name="OmniLight5" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.674599, 2.49094, 1.27345 ) +light_color = Color( 0.372549, 0.572549, 0.705882, 1 ) +light_energy = 0.83 +light_indirect_energy = 5.47 +light_negative = true +light_specular = 0.61 +omni_range = 7.6254 +omni_attenuation = 0.70711 + +[node name="Particles" parent="." instance=ExtResource( 1 )] + +[node name="ExitPortal" parent="." instance=ExtResource( 6 )] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -21.9693, 3.02528, -9.99266 ) + +[node name="Texts" type="MarginContainer" parent="."] +anchor_right = 1.0 +anchor_bottom = 1.0 + +[node name="VBoxContainer" type="VBoxContainer" parent="Texts"] +margin_right = 1024.0 +margin_bottom = 600.0 + +[node name="Container" type="MarginContainer" parent="Texts/VBoxContainer"] +margin_right = 1024.0 +margin_bottom = 397.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +size_flags_stretch_ratio = 4.88 + +[node name="Label" type="Label" parent="Texts/VBoxContainer/Container"] +margin_top = 168.0 +margin_right = 1024.0 +margin_bottom = 228.0 +custom_fonts/font = ExtResource( 7 ) +text = "The Tower" +align = 1 +valign = 1 + +[node name="Label2" type="Label" parent="Texts/VBoxContainer"] +margin_top = 401.0 +margin_right = 1024.0 +margin_bottom = 425.0 +custom_fonts/font = ExtResource( 8 ) +text = "Press ENTER to begin" +align = 1 +valign = 1 + +[node name="Control2" type="Control" parent="Texts/VBoxContainer"] +margin_top = 429.0 +margin_right = 1024.0 +margin_bottom = 600.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +size_flags_stretch_ratio = 2.1 + +[node name="Camera" type="Camera" parent="."] +transform = Transform( 0.666715, 0, 0.745313, 0, 1, 0, -0.745313, 0, 0.666715, 0, 6.15975, -5.948 ) + +[node name="HelpText" type="MarginContainer" parent="."] +anchor_right = 1.0 +anchor_bottom = 1.0 +custom_constants/margin_left = 30 +custom_constants/margin_right = 30 + +[node name="VBoxContainer" type="VBoxContainer" parent="HelpText"] +margin_left = 30.0 +margin_right = 994.0 +margin_bottom = 600.0 +alignment = 1 + +[node name="HBoxContainer" type="HBoxContainer" parent="HelpText/VBoxContainer"] +margin_top = 242.0 +margin_right = 964.0 +margin_bottom = 358.0 + +[node name="Label" type="Label" parent="HelpText/VBoxContainer/HBoxContainer"] +margin_right = 121.0 +margin_bottom = 116.0 +text = "Controls + +w,a,s,d: Movement +space: jump +shift: run +r: reload level +esc: ingame menu" diff --git a/voxelman/the_tower_gles2/levels/Level1.gd b/voxelman/the_tower_gles2/levels/Level1.gd new file mode 100644 index 0000000..c995f10 --- /dev/null +++ b/voxelman/the_tower_gles2/levels/Level1.gd @@ -0,0 +1,2 @@ +extends VoxelWorldBlocky + diff --git a/voxelman/the_tower_gles2/levels/Level1.tscn b/voxelman/the_tower_gles2/levels/Level1.tscn new file mode 100644 index 0000000..30016a3 --- /dev/null +++ b/voxelman/the_tower_gles2/levels/Level1.tscn @@ -0,0 +1,285 @@ +[gd_scene load_steps=18 format=3] + +[ext_resource path="res://levels/Particles.tscn" type="PackedScene" id=1] +[ext_resource path="res://player/Player.tscn" type="PackedScene" id=2] +[ext_resource path="res://library/MainLibrary.tres" type="VoxelLibrarySimple" id=3] +[ext_resource path="res://levels/WorldEnvironment.tscn" type="PackedScene" id=4] +[ext_resource path="res://areas/ExitPortal.tscn" type="PackedScene" id=6] + +[sub_resource type="VoxelChunkBlocky" id=1] +resource_name = "Chunk[-1,0,-1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, 0, -16 ) +position_x = -1 +position_z = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 3 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABACM/AQEBOQAjDwIAbQ63AA8SAAAP3gBUD0QB/zAvAQG/AQAPAgCSDrcADxIAAA+IAlQeAnsADwIAbA6RAA8SAAAPPwMADyYAAg4VAA8CAD8PZgBTDwIAGg/3AFEPAgA6D8wDgA9EAWoOfQAPEgAjDwIAbA61AA8CAGoOjwAPEgARDwIA/yAOVgEPAgD/IA9EAX4PkQB+DwIAoA9EAf///84O3gMPEgAOHwE9DIAPAgCdDmUBDwIA/w0OMQEOTw8OJAAPAgD7DiABHQIhAQ4SAA8CAP8/UAAAAAAA" ) + +[sub_resource type="VoxelChunkBlocky" id=2] +resource_name = "Chunk[-1,-1,-1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, -16, -16 ) +position_x = -1 +position_y = -1 +position_z = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 3 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAP//vC8BAc8C//92D4gC/zIPRAH/Mg8CAP///////////6oP+Ar/Mg9EAf8fDjEBDkwRDyQAAA9gDPoOIAEdAiABDhIADjYADwIA6Q4OAQ4yAQsSAFAAAAAAAA==" ) + +[sub_resource type="VoxelChunkBlocky" id=3] +resource_name = "Chunk[0,0,-1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -16 ) +position_z = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 3 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAP////////////////////////8NHwEOE/8xD0QB/zIPAgD/G1AAAAAAAA==" ) + +[sub_resource type="VoxelChunkBlocky" id=4] +resource_name = "Chunk[-1,0,0]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, 0, 0 ) +position_x = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 3 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAP//Lh0BQAIfAhIAEA8CAPsORAEPEgARDwIA/////////////////////////wlQAAAAAAA=" ) + +[sub_resource type="VoxelChunkBlocky" id=5] +resource_name = "Chunk[0,-1,-1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -16, -16 ) +position_y = -1 +position_z = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 3 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAP////////////////////////8LHQEMEw4SAA8CAP8OHQIhAQ9EAf8gDgIAD0QB/wtQAAAAAAA=" ) + +[sub_resource type="VoxelChunkBlocky" id=6] +resource_name = "Chunk[0,-1,0]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -16, 0 ) +position_y = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 3 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAA4fASIADg8CAP0dAhEBD0QB/yAOMgEOEgAPAgD//////////////////////////whQAAAAAAA=" ) + +[sub_resource type="VoxelChunkBlocky" id=7] +resource_name = "Chunk[-1,-1,0]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, -16, 0 ) +position_x = -1 +position_y = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 3 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAPgdAQwBHwISABAPAgD7D0QBIw42AA8CAOkODgEPEgAjDwIA////////////////////////5lAAAAAAAA==" ) + +[sub_resource type="VoxelChunkBlocky" id=8] +resource_name = "Chunk[0,0,0]" +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 3 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAP9DHwFWAf8xD0QB/zIPAgD////////////////////////kUAAAAAAA" ) + +[sub_resource type="VoxelChunkBlocky" id=9] +resource_name = "Chunk[-1,0,-2]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, 0, -32 ) +position_x = -1 +position_z = -2 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 3 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAP//////////////////////3B0B3xEsAQEVAA8SAAAAOQAJJgANJAA9AQIBFAAAJwAaATcAARMAABoAAwIAAB4AAAQACQIACSIAIQACEgAKFAABNQALOAAPJAAAAJMAAC0ADwIATAycAA8CAJUOHQEPEgAAD0QBUw9mAFMPAgBADzIBAA1mAA6aAg8CAEMPiAL0UAAAAAAA" ) + +[sub_resource type="VoxelChunkBlocky" id=10] +resource_name = "Chunk[0,0,-2]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -32 ) +position_z = -2 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 3 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAP/////////////////////////////FUAAAAAAA" ) + +[sub_resource type="VoxelChunkBlocky" id=11] +resource_name = "Chunk[-1,-1,-2]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, -16, -32 ) +position_x = -1 +position_y = -1 +position_z = -2 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 3 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAP//////////////////////////hx8BhxT//ypQAAAAAAA=" ) + +[sub_resource type="VoxelChunkBlocky" id=12] +resource_name = "Chunk[-2,0,-1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -32, 0, -16 ) +position_x = -2 +position_z = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 3 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAP///////+sdAfkGDxIAIw8CAOkOMgEdAg8BDhIADjYADhIADwIAEQ42AA4SAA8CAI8OtAAOMgEOEgAONgAPAgA1D1oARw8CAEcOtAAPEgAjDwIA//////////////+uUAAAAAAA" ) + +[node name="Level1" type="VoxelWorldBlocky"] +editable = true +max_concurrent_generations = 5 +library = ExtResource( 3 ) +chunks = [ SubResource( 1 ), SubResource( 2 ), SubResource( 3 ), SubResource( 4 ), SubResource( 5 ), SubResource( 6 ), SubResource( 7 ), SubResource( 8 ), SubResource( 9 ), SubResource( 10 ), SubResource( 11 ), SubResource( 12 ) ] +num_lods = 5 +__meta__ = { +"_edit_lock_": true +} + +[node name="WorldEnvironment" parent="." instance=ExtResource( 4 )] + +[node name="Player" parent="." instance=ExtResource( 2 )] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.852744, 0.165382, 0 ) + +[node name="DirectionalLight" type="DirectionalLight" parent="."] +transform = Transform( 0.969817, 0.22762, -0.0874344, 0, 0.35858, 0.933499, 0.243835, -0.905323, 0.347757, 0, 5.5679, -6.05193 ) +light_color = Color( 0.47451, 0.352941, 0.607843, 1 ) +light_energy = 0.31 +shadow_enabled = true + +[node name="DirectionalLight2" type="DirectionalLight" parent="."] +transform = Transform( 0.902848, -0.382056, -0.197228, 0, -0.458712, 0.888585, -0.42996, -0.802257, -0.414147, 0, 5.5679, -6.94149 ) +light_color = Color( 0.682353, 0.145098, 0.145098, 1 ) +light_energy = 0.17 +shadow_enabled = true + +[node name="OmniLight" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -5.33566, 8.78919, -13.4252 ) +light_color = Color( 0.894118, 0.894118, 0.894118, 1 ) +light_energy = 1.17 +light_negative = true +shadow_enabled = true +omni_range = 7.3664 +omni_attenuation = 2.0 +omni_shadow_mode = 0 + +[node name="OmniLight2" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -8.18059, 1.65957, -15.6395 ) +light_color = Color( 0.141176, 0.427451, 0.552941, 1 ) +light_energy = 2.55 +light_indirect_energy = 5.47 +light_specular = 0.61 +omni_range = 8.88538 +omni_attenuation = 1.1487 + +[node name="OmniLight3" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -17.2802, 1.65957, -7.3639 ) +light_color = Color( 0.462745, 0.0980392, 0.380392, 1 ) +light_energy = 2.55 +light_indirect_energy = 5.47 +light_specular = 0.61 +omni_range = 8.88538 +omni_attenuation = 1.1487 + +[node name="OmniLight4" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -8.53726, 4.41136, -7.73945 ) +light_color = Color( 0.164706, 0.054902, 0.690196, 1 ) +light_energy = 2.55 +light_indirect_energy = 5.47 +light_specular = 0.61 +omni_range = 8.88538 +omni_attenuation = 0.406128 + +[node name="OmniLight5" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.674599, 2.49094, 1.27345 ) +light_color = Color( 0.372549, 0.572549, 0.705882, 1 ) +light_energy = 0.83 +light_indirect_energy = 5.47 +light_negative = true +light_specular = 0.61 +omni_range = 7.6254 +omni_attenuation = 0.70711 + +[node name="Particles" parent="." instance=ExtResource( 1 )] + +[node name="ExitPortal" parent="." instance=ExtResource( 6 )] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -21.9693, 3.02528, -9.99266 ) diff --git a/voxelman/the_tower_gles2/levels/Level10.gd b/voxelman/the_tower_gles2/levels/Level10.gd new file mode 100644 index 0000000..ae661ab --- /dev/null +++ b/voxelman/the_tower_gles2/levels/Level10.gd @@ -0,0 +1,12 @@ +extends VoxelWorldBlocky + +var time : float = 0 + +func _process(delta): + time += delta + + if time > 3: + if get_parent().has_method("next_level"): + get_parent().next_level() + + set_process(false) diff --git a/voxelman/the_tower_gles2/levels/Level10.tscn b/voxelman/the_tower_gles2/levels/Level10.tscn new file mode 100644 index 0000000..739ad3b --- /dev/null +++ b/voxelman/the_tower_gles2/levels/Level10.tscn @@ -0,0 +1,238 @@ +[gd_scene load_steps=15 format=3] + +[ext_resource path="res://levels/title_font.tres" type="DynamicFont" id=1] +[ext_resource path="res://areas/ExitPortal.tscn" type="PackedScene" id=2] +[ext_resource path="res://levels/Particles.tscn" type="PackedScene" id=3] +[ext_resource path="res://library/MainLibrary.tres" type="VoxelLibrarySimple" id=4] +[ext_resource path="res://levels/Level10.gd" type="Script" id=5] +[ext_resource path="res://levels/WorldEnvironment.tscn" type="PackedScene" id=6] + +[sub_resource type="VoxelChunkBlocky" id=1] +resource_name = "Chunk[0,-1,-1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -16, -16 ) +position_y = -1 +position_z = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAP//////////////////////////Tx8BTxT//2JQAAAAAAA=" ) + +[sub_resource type="VoxelChunkBlocky" id=2] +resource_name = "Chunk[-1,-1,0]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, -16, 0 ) +position_x = -1 +position_y = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAMEfAdUANA5IAA4SAA8CAMUP6gAjDjYADxIAEQ8CAP//////////////////////////P1AAAAAAAA==" ) + +[sub_resource type="VoxelChunkBlocky" id=3] +resource_name = "Chunk[-1,-1,-1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, -16, -16 ) +position_x = -1 +position_y = -1 +position_z = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAP////////////////////8CHwEGEP8xDkQBHwETAAAPaQH/DA4xAQ8CAP8fD3UCAA8CAP8fD4cCNQ5IAA4SAA8CAMUP6gAjDjYADxIAD1AAAAAAAA==" ) + +[sub_resource type="VoxelChunkBlocky" id=4] +resource_name = "Chunk[0,-1,0]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -16, 0 ) +position_y = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAP9AHwFTAf9ADwIA//////////////////////////8eUAAAAAAA" ) + +[sub_resource type="VoxelChunkBlocky" id=5] +resource_name = "Chunk[-1,0,-1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, 0, -16 ) +position_x = -1 +position_z = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAP////+6HwHKBP8xD0QB/0QOVgEPEgARDwIA6Q4gAQ8CAP///////zUPVAb5DwwBJQ84ACUPAgDBDgwBLQEBFAAOEgAdACQADwIA6A8MAfkPAgAlD0QB/zIPAgD/q1AAAAAAAA==" ) + +[sub_resource type="VoxelChunkBlocky" id=6] +resource_name = "Chunk[0,0,-1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -16 ) +position_z = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAP///////0gdAVYGDxIAAA0TAA4SAA8lAAAfACUAAA1uAA8CAP///////////////////+lQAAAAAAA=" ) + +[sub_resource type="VoxelChunkBlocky" id=7] +resource_name = "Chunk[0,0,-2]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -32 ) +position_z = -2 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAP///////////////////zIdATcPDhIADwIA/w4dAiEBDUQBHAESABwBEgAMEAAPAgDcD0QBEA8CAA8MZQEPAgDcDv8ADhIADwIADg8zACAPAgD///84UAAAAAAA" ) + +[sub_resource type="VoxelChunkBlocky" id=8] +resource_name = "Chunk[-1,0,-2]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, 0, -32 ) +position_x = -1 +position_z = -2 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAP////////////////////8vHQEzEA8SACMPAgDpDjIBHQIPAQ4SAA42AA8CAOkODgEOMgEOEgAONgAPAgDpDg4BDxIAIw8CAP//a1AAAAAAAA==" ) + +[node name="Level10" type="VoxelWorldBlocky"] +editable = true +max_concurrent_generations = 5 +library = ExtResource( 4 ) +chunks = [ SubResource( 1 ), SubResource( 2 ), SubResource( 3 ), SubResource( 4 ), SubResource( 5 ), SubResource( 6 ), SubResource( 7 ), SubResource( 8 ) ] +num_lods = 5 +script = ExtResource( 5 ) +__meta__ = { +"_edit_lock_": true +} + +[node name="WorldEnvironment" parent="." instance=ExtResource( 6 )] + +[node name="DirectionalLight" type="DirectionalLight" parent="."] +transform = Transform( 0.969817, 0.22762, -0.0874344, 0, 0.35858, 0.933499, 0.243835, -0.905323, 0.347757, 0, 5.5679, -6.05193 ) +light_color = Color( 0.47451, 0.352941, 0.607843, 1 ) +light_energy = 0.31 +shadow_enabled = true + +[node name="DirectionalLight2" type="DirectionalLight" parent="."] +transform = Transform( 0.902848, -0.382056, -0.197228, 0, -0.458712, 0.888585, -0.42996, -0.802257, -0.414147, 0, 5.5679, -6.94149 ) +light_color = Color( 0.682353, 0.145098, 0.145098, 1 ) +light_energy = 0.17 +shadow_enabled = true + +[node name="OmniLight" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -5.33566, 8.78919, -13.4252 ) +light_color = Color( 0.894118, 0.894118, 0.894118, 1 ) +light_energy = 1.17 +light_negative = true +shadow_enabled = true +omni_range = 7.3664 +omni_attenuation = 2.0 +omni_shadow_mode = 0 + +[node name="OmniLight2" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -8.18059, 1.65957, -15.6395 ) +light_color = Color( 0.141176, 0.427451, 0.552941, 1 ) +light_energy = 2.55 +light_indirect_energy = 5.47 +light_specular = 0.61 +omni_range = 8.88538 +omni_attenuation = 1.1487 + +[node name="OmniLight3" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -17.2802, 1.65957, -7.3639 ) +light_color = Color( 0.462745, 0.0980392, 0.380392, 1 ) +light_energy = 2.55 +light_indirect_energy = 5.47 +light_specular = 0.61 +omni_range = 8.88538 +omni_attenuation = 1.1487 + +[node name="OmniLight4" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -8.53726, 4.41136, -7.73945 ) +light_color = Color( 0.164706, 0.054902, 0.690196, 1 ) +light_energy = 2.55 +light_indirect_energy = 5.47 +light_specular = 0.61 +omni_range = 8.88538 +omni_attenuation = 0.406128 + +[node name="OmniLight5" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.674599, 2.49094, 1.27345 ) +light_color = Color( 0.372549, 0.572549, 0.705882, 1 ) +light_energy = 0.83 +light_indirect_energy = 5.47 +light_negative = true +light_specular = 0.61 +omni_range = 7.6254 +omni_attenuation = 0.70711 + +[node name="ExitPortal" parent="." instance=ExtResource( 2 )] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.922967, 6.98507, -18.9305 ) + +[node name="Particles" parent="." instance=ExtResource( 3 )] + +[node name="Camera" type="Camera" parent="."] +transform = Transform( 0.689822, -0.472154, 0.548832, 0, 0.758077, 0.652165, -0.723979, -0.449877, 0.522938, 5.55108, 12.3711, -5.69769 ) + +[node name="MarginContainer" type="MarginContainer" parent="."] +anchor_right = 1.0 +anchor_bottom = 1.0 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Label" type="Label" parent="MarginContainer"] +margin_top = 270.0 +margin_right = 1024.0 +margin_bottom = 330.0 +custom_fonts/font = ExtResource( 1 ) +text = "The End" +align = 1 +valign = 1 diff --git a/voxelman/the_tower_gles2/levels/Level2.tscn b/voxelman/the_tower_gles2/levels/Level2.tscn new file mode 100644 index 0000000..22684c7 --- /dev/null +++ b/voxelman/the_tower_gles2/levels/Level2.tscn @@ -0,0 +1,258 @@ +[gd_scene load_steps=19 format=3] + +[ext_resource path="res://levels/Level1.gd" type="Script" id=1] +[ext_resource path="res://player/Player.tscn" type="PackedScene" id=2] +[ext_resource path="res://library/MainLibrary.tres" type="VoxelLibrarySimple" id=3] +[ext_resource path="res://scripts/Ladder.gd" type="Script" id=4] +[ext_resource path="res://levels/Particles.tscn" type="PackedScene" id=5] +[ext_resource path="res://levels/WorldEnvironment.tscn" type="PackedScene" id=6] +[ext_resource path="res://areas/ExitPortal.tscn" type="PackedScene" id=7] + +[sub_resource type="VoxelChunkBlocky" id=1] +resource_name = "Chunk[-2,1,0]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -32, 16, 0 ) +position_x = -2 +position_y = 1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 3 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAP///////////+YfAfEJ/0YPWQH/Lw9BAf8vDwIA////igzbBBwBEQAdABEADxIAEg8CAOksAQFGAQwQAA54AQ8SAAEPAgD/IA6sAg8CAP8NDzEB/w4OIAEOEgAPAgAHUAAAAAAA" ) + +[sub_resource type="VoxelChunkBlocky" id=2] +resource_name = "Chunk[-2,1,1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -32, 16, 16 ) +position_x = -2 +position_y = 1 +position_z = 1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 3 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAP8SHwElAf8NDiABDhIADwIA/w4PMgERDiQADhIADwIA+w4gAQ8SABEPAgD/////8A4jBQ8CAP8ODjIBDhIADwIA//9lD4gC/zIPRAH/Mg8CAP///////05QAAAAAAA=" ) + +[sub_resource type="VoxelChunkBlocky" id=3] +resource_name = "Chunk[-1,1,1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, 16, 16 ) +position_x = -1 +position_y = 1 +position_z = 1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 3 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABABUfASkAFQsCABsCEAAPSQAmDwIADw5aAA8SABEPAgBYDo8ADwIAEw44AA4SAA0CAA4jAA8SAFkPAgAiD6EAEQ8CAFoPkQARDyQARw8CAAgOdQAEAgAOGgAOEgAPAgBaDn8ADxIAIw8CAD4OhwAPAgCGD6sAEQ8kADUPAgAaHwF2ABEPAgBPDoYADpkADyQAAA2ZAA8kACMPAgAaD2MAAA0TAA0RAA8CAD8PYwARDiQADhIADgIADiQALAEBBQgOJAAPAgAaD90BAA9SABkPLAAZDwIACQ5IAA4SAA8CACQNSQAP8wAsDgIAD1EAGg2PAA88AwAPAgARD0gAEQ8kABAOIwAPAgAADiUAD/MAEQ42AAYCAA4cAA8SACMPAgAHD1AAIw82ACIODQEPAgASDjcADhIADwIACQ+sACIcAEAEBgIAD1AAEQ8CAAILOQALDwAP4gImDgIAD1oAAA0TAA9EAX0PAgAADbQADgMEDsYADzUAEA8CACUPWwAsDz8AEQ8kABEPAgAaFgEBAAM4AAUJAAQCAB8BEgAABBwABAIADhIADwIAJA/hACwOPwAPAgA/DjIBJAADAQAEbgAMiAAdAZsCDjIBDiQADwIAJAx9AA8SAAEPAgAIDj8ADwIAQAH/AAdaAhYBVwEDbgAFCQAEAgAHLgADAgAPEgASAywADwIAHA8FAVIPAgAwC6gABEUBBFoAAhAABA4AAC8AARIAAAsAAwIADBAAAEYFCSEADwIAJwucAA8CAIMOpQAOEgAPAgANDjABD0QAHw8CAP+7UAAAAAAA" ) + +[sub_resource type="VoxelChunkBlocky" id=4] +resource_name = "Chunk[-1,1,0]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, 16, 0 ) +position_x = -1 +position_y = 1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 3 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAP////////////8gHwEqCv8uD0EB/y8PAgCkD/gB+w8OASMONgAOEgAPAgC0D9kAEA8jABAPJAASDwIAag6hAA4SAA8CABIdATgADREADyQAEQ8jAAAvAQKBABILAgAOfgAPAgBGDmsADxIAAA0TAA/qAAAN6QANNQAPSAATDTcADREAPQABAG0ADwIAfA60AA8CAEgNZAIPngEAD38AIw/HAFcPagARDyQAEQ8CAAENLQIPSQAlDwIADw5aAA8SABEPAgBYDo8ADwIAEw44AA4SAA0CAA4jAA8SAFkPAgAYUAAAAAAA" ) + +[sub_resource type="VoxelChunkBlocky" id=5] +resource_name = "Chunk[-1,2,1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, 32, 16 ) +position_x = -1 +position_y = 2 +position_z = 1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 3 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAP///////yIfATAG/zEPRAH/IA4yAQ4SAA8CAP8ODjIBDhIADwIA+w4gAQ8SABEPAgD7DzIBEQ4kAA8CAPsOIAEPEgARDwIA+w8yAREOJAAPAgA1HwFbAEcPAgBYD8UAWQ4yAS8DA+sAWA8CAEYPRAFaDcYADlYBDwIA/yAPRAH/Mg8CAP//PFAAAAAAAA==" ) + +[sub_resource type="VoxelChunkBlocky" id=6] +resource_name = "Chunk[0,1,0]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 16, 0 ) +position_y = 1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 3 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAP/////////////////////////////FUAAAAAAA" ) + +[sub_resource type="VoxelChunkBlocky" id=7] +resource_name = "Chunk[0,1,1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 16, 16 ) +position_y = 1 +position_z = 1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 3 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAP//hR8BlwL/MQ9EAf8zD0UB/zEORAENEQAPAgD/Dw5EAQ8CAP8gD0QB/zIPuwMADxIAIw8CAOkOMgEdAg8BDhIADjYADwIA6Q4OAQ4yAQ4SAA42AA8CAOkODgEPEgAjDwIA//////////90UAAAAAAA" ) + +[sub_resource type="VoxelChunkBlocky" id=8] +resource_name = "Chunk[-1,1,2]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, 16, 32 ) +position_x = -1 +position_y = 1 +position_z = 2 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 3 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABABodAS4ADhIADwIADR0BMwANEQAPAgD/////////////////////////////MVAAAAAAAA==" ) + +[sub_resource type="VoxelChunkBlocky" id=9] +resource_name = "Chunk[-2,2,1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -32, 32, 16 ) +position_x = -2 +position_y = 2 +position_z = 1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 3 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAP/////////////////////////////FUAAAAAAA" ) + +[sub_resource type="VoxelChunkBlocky" id=10] +resource_name = "Chunk[0,2,1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 32, 16 ) +position_y = 2 +position_z = 1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 3 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAP////////////8oHQEyCg8SABEPAgD7HQIPAQ4SAA5WAQ8CAPsOMgEOEgAPRAH/Dg4gAQ8SABEPAgD//////////4RQAAAAAAA=" ) + +[sub_resource type="BoxShape" id=11] +extents = Vector3( 0.470313, 4.46225, 0.754098 ) + +[node name="Level2" type="VoxelWorldBlocky"] +editable = true +library = ExtResource( 3 ) +chunks = [ SubResource( 1 ), SubResource( 2 ), SubResource( 3 ), SubResource( 4 ), SubResource( 5 ), SubResource( 6 ), SubResource( 7 ), SubResource( 8 ), SubResource( 9 ), SubResource( 10 ) ] +num_lods = 5 +script = ExtResource( 1 ) +__meta__ = { +"_edit_lock_": true +} + +[node name="DirectionalLight" type="DirectionalLight" parent="."] +transform = Transform( 1, 0, 0, 0, 0.238161, 0.971226, 0, -0.971226, 0.238161, 0, 14.9531, 0 ) +light_color = Color( 0.298039, 0.627451, 0.784314, 1 ) +light_energy = 0.19 +shadow_enabled = true + +[node name="DirectionalLight2" type="DirectionalLight" parent="."] +transform = Transform( 1, 0, 0, 0, -0.498533, 0.866871, 0, -0.866871, -0.498533, 0, 14.9531, -0.0236439 ) +light_color = Color( 0.894118, 0.901961, 0.905882, 1 ) +light_energy = 0.19 +shadow_enabled = true + +[node name="OmniLight" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16.3737, 22.2862, 17.3319 ) +light_color = Color( 0.545098, 0.803922, 0.403922, 1 ) +shadow_enabled = true + +[node name="Player" parent="." instance=ExtResource( 2 )] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -8.12439, 25.2891, 17.5787 ) + +[node name="OmniLight2" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -8.96332, 24.167, 17.7326 ) +light_color = Color( 0.627451, 0.0862745, 0.776471, 1 ) +light_energy = 1.65 +shadow_enabled = true + +[node name="WorldEnvironment" parent="." instance=ExtResource( 6 )] + +[node name="OmniLight4" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -13.3812, 25.2187, 20.8924 ) +light_energy = 0.96 +light_indirect_energy = 5.3 +light_negative = true +light_specular = 0.98 +shadow_enabled = true +omni_range = 12.7 +omni_attenuation = 2.82842 + +[node name="OmniLight3" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.639428, 24.7962, 15.2102 ) +light_color = Color( 0.517647, 0.623529, 0.180392, 1 ) +shadow_enabled = true + +[node name="OmniLight5" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -11.1076, 29.5305, 27.24 ) +light_color = Color( 0.815686, 0.831373, 0.764706, 1 ) +shadow_enabled = true +omni_range = 8.8008 + +[node name="Particles" parent="." instance=ExtResource( 5 )] + +[node name="ExitPortal" parent="." instance=ExtResource( 7 )] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.95379, 32.0067, 25.0291 ) + +[node name="Ladder" type="Area" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -12.039, 25.5516, 28.331 ) +script = ExtResource( 4 ) + +[node name="CollisionShape" type="CollisionShape" parent="Ladder"] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.519846, 2.90384, 0.339609 ) +shape = SubResource( 11 ) diff --git a/voxelman/the_tower_gles2/levels/Level3.tscn b/voxelman/the_tower_gles2/levels/Level3.tscn new file mode 100644 index 0000000..37ce09f --- /dev/null +++ b/voxelman/the_tower_gles2/levels/Level3.tscn @@ -0,0 +1,220 @@ +[gd_scene load_steps=14 format=3] + +[ext_resource path="res://levels/Particles.tscn" type="PackedScene" id=1] +[ext_resource path="res://areas/ExitPortal.tscn" type="PackedScene" id=2] +[ext_resource path="res://levels/WorldEnvironment.tscn" type="PackedScene" id=3] +[ext_resource path="res://library/MainLibrary.tres" type="VoxelLibrarySimple" id=4] +[ext_resource path="res://player/Player.tscn" type="PackedScene" id=5] + +[sub_resource type="VoxelChunkBlocky" id=1] +resource_name = "Chunk[-1,-1,-1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, -16, -16 ) +position_x = -1 +position_y = -1 +position_z = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAP///////////////0QfAUwM/zEPRAH/RA5WAQ0SAB0BEgAPAgD/IA9DAf8xD0QB//93Dw8F/0QO3QMOEgAPAgD7DiABDRIAUAAAAAAA" ) + +[sub_resource type="VoxelChunkBlocky" id=2] +resource_name = "Chunk[0,-1,0]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -16, 0 ) +position_y = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAAwdASAADxIAEQ8CAOkPIAERDiQADwIA////////////////////////////PVAAAAAAAA==" ) + +[sub_resource type="VoxelChunkBlocky" id=3] +resource_name = "Chunk[-1,-1,0]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, -16, 0 ) +position_x = -1 +position_y = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAP8JHQEcAQ4SAA8CAP8ODjIBDxIAEQ8CAP//////////////////////////LlAAAAAAAA==" ) + +[sub_resource type="VoxelChunkBlocky" id=4] +resource_name = "Chunk[0,-1,-1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -16, -16 ) +position_y = -1 +position_z = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAP//////oh8BsQX/MQ9EAf///7wPAgD///+8D5gH//9QDmECDxIAAC4BARUADwIAwg7nAA8SACMPAgDpDzIBEQ8CANcPDgERDyQAEQ8CAPsPMgH/DVAAAAAAAA==" ) + +[sub_resource type="VoxelChunkBlocky" id=5] +resource_name = "Chunk[-1,0,-1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, 0, -16 ) +position_x = -1 +position_z = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABALsfAc8Auw8CACoNDAE9AQEBFAAfABIAEQ8CAPgOLwEPAgD///////9pD8oHAA8CAP8fD0QB/y4ADAkABAAPAgD/Kg9AAf8uAAIADkQBDxIAIw8CAP////////+rUAAAAAAA" ) + +[sub_resource type="VoxelChunkBlocky" id=6] +resource_name = "Chunk[0,0,-1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -16 ) +position_z = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAP9/LwEBkwH/fw8CAP//KA7LAwsSABEBAwAIAgALIQANEAAPAgD/AA4iAQwSAB8BVAX/MQxUAQ8CAP8iD0QB/zIPAgD///+8DxAF/zIPRAH/MQ8eCv8xDwIA/////21QAAAAAAA=" ) + +[sub_resource type="VoxelChunkBlocky" id=7] +resource_name = "Chunk[0,0,-2]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -32 ) +position_z = -2 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAP//////////////////////zy8BAdMRIA81ACIPAgD///+GD8sD3lAAAAAAAA==" ) + +[sub_resource type="VoxelChunkBlocky" id=8] +resource_name = "Chunk[-1,0,-2]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, 0, -32 ) +position_x = -1 +position_z = -2 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAP////////////////////odAf8PDxIAIw8CAOkOMgEdAg8BDhIADjYADwIA6Q4OAQ4yAQ4SAA42AA8CABAfATYAIg8CAJAO2AAPEgAjDwIA6Q4yAQ8CAOcNDAEvAQE8AwANJgAPEgAADwIAS1AAAAAAAA==" ) + +[node name="Level3" type="VoxelWorldBlocky"] +editable = true +max_concurrent_generations = 5 +library = ExtResource( 4 ) +chunks = [ SubResource( 1 ), SubResource( 2 ), SubResource( 3 ), SubResource( 4 ), SubResource( 5 ), SubResource( 6 ), SubResource( 7 ), SubResource( 8 ) ] +num_lods = 5 +__meta__ = { +"_edit_lock_": true +} + +[node name="WorldEnvironment" parent="." instance=ExtResource( 3 )] + +[node name="Player" parent="." instance=ExtResource( 5 )] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.852744, -0.947732, 0 ) + +[node name="DirectionalLight" type="DirectionalLight" parent="."] +transform = Transform( 0.969817, 0.22762, -0.0874344, 0, 0.35858, 0.933499, 0.243835, -0.905323, 0.347757, 0, 5.5679, -6.05193 ) +light_color = Color( 0.47451, 0.352941, 0.607843, 1 ) +light_energy = 0.31 +shadow_enabled = true + +[node name="DirectionalLight2" type="DirectionalLight" parent="."] +transform = Transform( 0.902848, -0.382056, -0.197228, 0, -0.458712, 0.888585, -0.42996, -0.802257, -0.414147, 0, 5.5679, -6.94149 ) +light_color = Color( 0.682353, 0.145098, 0.145098, 1 ) +light_energy = 0.17 +shadow_enabled = true + +[node name="OmniLight" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -5.33566, 8.78919, -13.4252 ) +light_color = Color( 0.894118, 0.894118, 0.894118, 1 ) +light_energy = 1.17 +light_negative = true +shadow_enabled = true +omni_range = 7.3664 +omni_attenuation = 2.0 +omni_shadow_mode = 0 + +[node name="OmniLight2" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -8.18059, 1.65957, -15.6395 ) +light_color = Color( 0.141176, 0.427451, 0.552941, 1 ) +light_energy = 2.55 +light_indirect_energy = 5.47 +light_specular = 0.61 +omni_range = 8.88538 +omni_attenuation = 1.1487 + +[node name="OmniLight3" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -17.2802, 1.65957, -7.3639 ) +light_color = Color( 0.462745, 0.0980392, 0.380392, 1 ) +light_energy = 2.55 +light_indirect_energy = 5.47 +light_specular = 0.61 +omni_range = 8.88538 +omni_attenuation = 1.1487 + +[node name="OmniLight4" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -8.53726, 4.41136, -7.73945 ) +light_color = Color( 0.164706, 0.054902, 0.690196, 1 ) +light_energy = 2.55 +light_indirect_energy = 5.47 +light_specular = 0.61 +omni_range = 8.88538 +omni_attenuation = 0.406128 + +[node name="OmniLight5" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.674599, 2.49094, 1.27345 ) +light_color = Color( 0.372549, 0.572549, 0.705882, 1 ) +light_energy = 0.83 +light_indirect_energy = 5.47 +light_negative = true +light_specular = 0.61 +omni_range = 7.6254 +omni_attenuation = 0.70711 + +[node name="Particles" parent="." instance=ExtResource( 1 )] + +[node name="ExitPortal" parent="." instance=ExtResource( 2 )] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -4.00102, 9.20603, -19.3076 ) diff --git a/voxelman/the_tower_gles2/levels/Level4.tscn b/voxelman/the_tower_gles2/levels/Level4.tscn new file mode 100644 index 0000000..0e101c4 --- /dev/null +++ b/voxelman/the_tower_gles2/levels/Level4.tscn @@ -0,0 +1,224 @@ +[gd_scene load_steps=14 format=3] + +[ext_resource path="res://levels/Particles.tscn" type="PackedScene" id=1] +[ext_resource path="res://areas/ExitPortal.tscn" type="PackedScene" id=2] +[ext_resource path="res://levels/WorldEnvironment.tscn" type="PackedScene" id=3] +[ext_resource path="res://library/MainLibrary.tres" type="VoxelLibrarySimple" id=4] +[ext_resource path="res://player/Player.tscn" type="PackedScene" id=5] + +[sub_resource type="VoxelChunkBlocky" id=1] +resource_name = "Chunk[0,-1,-1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -16, -16 ) +position_y = -1 +position_z = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAP//////////////////////wx8BxhH/MQ9EAf//dw8CAP8fUAAAAAAA" ) + +[sub_resource type="VoxelChunkBlocky" id=2] +resource_name = "Chunk[-1,-1,0]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, -16, 0 ) +position_x = -1 +position_y = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAP8JLAEBHQENEQAPAgD///////////////////////////+GUAAAAAAA" ) + +[sub_resource type="VoxelChunkBlocky" id=3] +resource_name = "Chunk[-1,-1,-1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, -16, -16 ) +position_x = -1 +position_y = -1 +position_z = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABANQfAegA1A8CAP/////////nD9sI/zIPRAH//////wEdARAFDREADwIA/w8PMgH/IA4CAA9EAREPrAIRD0gAEQ8CAP8OD0QB/yAPmgIRDwIA/zFQAAAAAAA=" ) + +[sub_resource type="VoxelChunkBlocky" id=4] +resource_name = "Chunk[-1,0,-1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, 0, -16 ) +position_x = -1 +position_z = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAP/////////////////////////////FUAAAAAAA" ) + +[sub_resource type="VoxelChunkBlocky" id=5] +resource_name = "Chunk[-1,-1,-2]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, -16, -32 ) +position_x = -1 +position_y = -1 +position_z = -2 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAP////////////////////////9UHQFVEw8SADQdAUgADxIAAA99ABAPAgD/IA15AQ8CAP94UAAAAAAA" ) + +[sub_resource type="VoxelChunkBlocky" id=6] +resource_name = "Chunk[-1,0,-2]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, 0, -32 ) +position_x = -1 +position_z = -2 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAP////////////////////////4rAQEBEw8RAA8PIwAiDjUADxIAAQuMAA8jAAEMsAAONQAPEgAADwIA/yANZwEPAgD/iFAAAAAAAA==" ) + +[sub_resource type="VoxelChunkBlocky" id=7] +resource_name = "Chunk[-2,0,-2]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -32, 0, -32 ) +position_x = -2 +position_z = -2 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAP////////////////////////+3OgEBAboTDxEAEQoyACsAAEMAAEUAAAYACAIADRIADREADwIAqA/MALkPAgAwDQ8CDiECDxIAEg8CAFxQAAAAAAA=" ) + +[sub_resource type="VoxelChunkBlocky" id=8] +resource_name = "Chunk[-2,0,-1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -32, 0, -16 ) +position_x = -2 +position_z = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAKkvAQG+AKkPAgA+Dg4BDxIAIw8CAOkOMgEdAg8BDhIADjYADwIA6Q4OAQ4yAQ4SAA42AA8CAOkODgEPEgAjDwIA/////////////////////+BQAAAAAAA=" ) + +[node name="Level4" type="VoxelWorldBlocky"] +editable = true +max_concurrent_generations = 5 +library = ExtResource( 4 ) +chunks = [ SubResource( 1 ), SubResource( 2 ), SubResource( 3 ), SubResource( 4 ), SubResource( 5 ), SubResource( 6 ), SubResource( 7 ), SubResource( 8 ) ] +num_lods = 5 +__meta__ = { +"_edit_lock_": true +} + +[node name="WorldEnvironment" parent="." instance=ExtResource( 3 )] + +[node name="Player" parent="." instance=ExtResource( 5 )] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.379907, 0.165382, -0.480157 ) + +[node name="DirectionalLight" type="DirectionalLight" parent="."] +transform = Transform( 0.969817, 0.22762, -0.0874344, 0, 0.35858, 0.933499, 0.243835, -0.905323, 0.347757, 0, 5.5679, -6.05193 ) +light_color = Color( 0.47451, 0.352941, 0.607843, 1 ) +light_energy = 0.31 +shadow_enabled = true + +[node name="DirectionalLight2" type="DirectionalLight" parent="."] +transform = Transform( 0.902848, -0.382056, -0.197228, 0, -0.458712, 0.888585, -0.42996, -0.802257, -0.414147, 0, 5.5679, -6.94149 ) +light_color = Color( 0.682353, 0.145098, 0.145098, 1 ) +light_energy = 0.17 +shadow_enabled = true + +[node name="OmniLight" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -5.33566, 8.78919, -13.4252 ) +light_color = Color( 0.894118, 0.894118, 0.894118, 1 ) +light_energy = 1.17 +light_negative = true +shadow_enabled = true +omni_range = 7.3664 +omni_attenuation = 2.0 +omni_shadow_mode = 0 + +[node name="OmniLight2" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -8.18059, 1.65957, -15.6395 ) +light_color = Color( 0.141176, 0.427451, 0.552941, 1 ) +light_energy = 2.55 +light_indirect_energy = 5.47 +light_specular = 0.61 +omni_range = 8.88538 +omni_attenuation = 1.1487 + +[node name="OmniLight3" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -17.2802, 1.65957, -7.3639 ) +light_color = Color( 0.462745, 0.0980392, 0.380392, 1 ) +light_energy = 2.55 +light_indirect_energy = 5.47 +light_specular = 0.61 +omni_range = 8.88538 +omni_attenuation = 1.1487 + +[node name="OmniLight4" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -8.53726, 4.41136, -7.73945 ) +light_color = Color( 0.164706, 0.054902, 0.690196, 1 ) +light_energy = 2.55 +light_indirect_energy = 5.47 +light_specular = 0.61 +omni_range = 8.88538 +omni_attenuation = 0.406128 + +[node name="OmniLight5" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.674599, 2.49094, 1.27345 ) +light_color = Color( 0.372549, 0.572549, 0.705882, 1 ) +light_energy = 0.83 +light_indirect_energy = 5.47 +light_negative = true +light_specular = 0.61 +omni_range = 7.6254 +omni_attenuation = 0.70711 + +[node name="Particles" parent="." instance=ExtResource( 1 )] + +[node name="ExitPortal" parent="." instance=ExtResource( 2 )] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -23.7753, 10.3203, -13.9228 ) diff --git a/voxelman/the_tower_gles2/levels/Level5.tscn b/voxelman/the_tower_gles2/levels/Level5.tscn new file mode 100644 index 0000000..700568d --- /dev/null +++ b/voxelman/the_tower_gles2/levels/Level5.tscn @@ -0,0 +1,257 @@ +[gd_scene load_steps=16 format=3] + +[ext_resource path="res://levels/Particles.tscn" type="PackedScene" id=1] +[ext_resource path="res://areas/ExitPortal.tscn" type="PackedScene" id=2] +[ext_resource path="res://levels/WorldEnvironment.tscn" type="PackedScene" id=3] +[ext_resource path="res://library/MainLibrary.tres" type="VoxelLibrarySimple" id=4] +[ext_resource path="res://player/Player.tscn" type="PackedScene" id=5] + +[sub_resource type="VoxelChunkBlocky" id=1] +resource_name = "Chunk[-1,-1,-1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, -16, -16 ) +position_x = -1 +position_y = -1 +position_z = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAJ0fAbEAnQ8CADgP/ABaDm0ADhIADwIAoA/FALIPAgAmDv4ADhIADwIADw80ACEPAgD//+cOLAMOEgAPAgD//2UPiAL//3cNAgAfAZoC/zAPQwH//3UfAMkD/zAPAgD/////8Q5CBg0SAFAAAAAAAA==" ) + +[sub_resource type="VoxelChunkBlocky" id=2] +resource_name = "Chunk[0,-1,0]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -16, 0 ) +position_y = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAP8/HQFSAQ8SABEPAgD///////////////////////////89UAAAAAAA" ) + +[sub_resource type="VoxelChunkBlocky" id=3] +resource_name = "Chunk[-1,-1,0]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, -16, 0 ) +position_x = -1 +position_y = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAP//Th0BYAIPEgARDwIA//////////////////////////8uUAAAAAAA" ) + +[sub_resource type="VoxelChunkBlocky" id=4] +resource_name = "Chunk[0,-1,-1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -16, -16 ) +position_y = -1 +position_z = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAP//////////////ax8BdAv/MB8BRAH/MA9DAf8xHwCGAv8wDwIA//////8WDmYGDhIADwIA6FAAAAAAAA==" ) + +[sub_resource type="VoxelChunkBlocky" id=5] +resource_name = "Chunk[-1,0,-1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, 0, -16 ) +position_x = -1 +position_z = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAP/3HQEKAg4SAA8CAP+NDrEBDxIAEQ8CAP///z4dAXMDDREADwIA//9mD4gC//93DQIADjMFDwIA/yAP3QP/WA9qAf8yD0QB////vA8CAP//cFAAAAAAAA==" ) + +[sub_resource type="VoxelChunkBlocky" id=6] +resource_name = "Chunk[0,0,-1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -16 ) +position_z = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAP//////////////XB8BZQv//////////////1VQAAAAAAA=" ) + +[sub_resource type="VoxelChunkBlocky" id=7] +resource_name = "Chunk[-1,-1,-2]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, -16, -32 ) +position_x = -1 +position_y = -1 +position_z = -2 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAP//////////////////////////8R8B8RToD/wAWg5tAA4SAA8CADJQAAAAAAA=" ) + +[sub_resource type="VoxelChunkBlocky" id=8] +resource_name = "Chunk[-1,0,-2]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, 0, -32 ) +position_x = -1 +position_z = -2 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAP/////////////////////////////FUAAAAAAA" ) + +[sub_resource type="VoxelChunkBlocky" id=9] +resource_name = "Chunk[-2,0,-1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -32, 0, -16 ) +position_x = -2 +position_z = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAP/////LLAEB3AQNEQAPEgAADwIA/////8wP7QT/////3g8CAP8xDjAGDxIAIw8CAOkOMgEdAg8BDhIADjYADwIA6Q4OAQ4yAQ4SAA42AA8CAOkODgEPEgAjDwIA//+CUAAAAAAA" ) + +[sub_resource type="VoxelChunkBlocky" id=10] +resource_name = "Chunk[-2,-1,-1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -32, -16, -16 ) +position_x = -2 +position_y = -1 +position_z = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAP/////bHQHrBA4SAA8CAP//////////////////////slAAAAAAAA==" ) + +[node name="Level5" type="VoxelWorldBlocky"] +editable = true +max_concurrent_generations = 5 +library = ExtResource( 4 ) +chunks = [ SubResource( 1 ), SubResource( 2 ), SubResource( 3 ), SubResource( 4 ), SubResource( 5 ), SubResource( 6 ), SubResource( 7 ), SubResource( 8 ), SubResource( 9 ), SubResource( 10 ) ] +num_lods = 5 +__meta__ = { +"_edit_lock_": true +} + +[node name="WorldEnvironment" parent="." instance=ExtResource( 3 )] + +[node name="Player" parent="." instance=ExtResource( 5 )] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.852744, -0.91547, 0.534943 ) + +[node name="DirectionalLight" type="DirectionalLight" parent="."] +transform = Transform( 0.969817, 0.22762, -0.0874344, 0, 0.35858, 0.933499, 0.243835, -0.905323, 0.347757, 0, 5.5679, -6.05193 ) +light_color = Color( 0.47451, 0.352941, 0.607843, 1 ) +light_energy = 0.31 +shadow_enabled = true + +[node name="DirectionalLight2" type="DirectionalLight" parent="."] +transform = Transform( 0.902848, -0.382056, -0.197228, 0, -0.458712, 0.888585, -0.42996, -0.802257, -0.414147, 0, 5.5679, -6.94149 ) +light_color = Color( 0.682353, 0.145098, 0.145098, 1 ) +light_energy = 0.17 +shadow_enabled = true + +[node name="OmniLight" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -5.33566, 8.78919, -13.4252 ) +light_color = Color( 0.894118, 0.894118, 0.894118, 1 ) +light_energy = 1.17 +light_negative = true +shadow_enabled = true +omni_range = 7.3664 +omni_attenuation = 2.0 +omni_shadow_mode = 0 + +[node name="OmniLight2" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -8.18059, 1.65957, -15.6395 ) +light_color = Color( 0.141176, 0.427451, 0.552941, 1 ) +light_energy = 2.55 +light_indirect_energy = 5.47 +light_specular = 0.61 +omni_range = 8.88538 +omni_attenuation = 1.1487 + +[node name="OmniLight3" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -17.2802, 1.65957, -7.3639 ) +light_color = Color( 0.462745, 0.0980392, 0.380392, 1 ) +light_energy = 2.55 +light_indirect_energy = 5.47 +light_specular = 0.61 +omni_range = 8.88538 +omni_attenuation = 1.1487 + +[node name="OmniLight4" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -8.53726, 4.41136, -7.73945 ) +light_color = Color( 0.164706, 0.054902, 0.690196, 1 ) +light_energy = 2.55 +light_indirect_energy = 5.47 +light_specular = 0.61 +omni_range = 8.88538 +omni_attenuation = 0.406128 + +[node name="OmniLight5" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.674599, 2.49094, 1.27345 ) +light_color = Color( 0.372549, 0.572549, 0.705882, 1 ) +light_energy = 0.83 +light_indirect_energy = 5.47 +light_negative = true +light_specular = 0.61 +omni_range = 7.6254 +omni_attenuation = 0.70711 + +[node name="Particles" parent="." instance=ExtResource( 1 )] + +[node name="ExitPortal" parent="." instance=ExtResource( 2 )] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -18.0323, 2.06599, -2.96928 ) diff --git a/voxelman/the_tower_gles2/levels/Level6.tscn b/voxelman/the_tower_gles2/levels/Level6.tscn new file mode 100644 index 0000000..0e8ea6a --- /dev/null +++ b/voxelman/the_tower_gles2/levels/Level6.tscn @@ -0,0 +1,204 @@ +[gd_scene load_steps=13 format=3] + +[ext_resource path="res://levels/Particles.tscn" type="PackedScene" id=1] +[ext_resource path="res://areas/ExitPortal.tscn" type="PackedScene" id=2] +[ext_resource path="res://levels/WorldEnvironment.tscn" type="PackedScene" id=3] +[ext_resource path="res://library/MainLibrary.tres" type="VoxelLibrarySimple" id=4] +[ext_resource path="res://player/Player.tscn" type="PackedScene" id=5] + +[sub_resource type="VoxelChunkBlocky" id=14] +resource_name = "Chunk[0,-1,-1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -16, -16 ) +position_y = -1 +position_z = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAP//////////////////////////UB8BUBT//2FQAAAAAAA=" ) + +[sub_resource type="VoxelChunkBlocky" id=15] +resource_name = "Chunk[-1,0,-1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, 0, -16 ) +position_x = -1 +position_z = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAIAdAZQADxIAIw8CAOkOMgEdAg8BDhIADjYADwIA6Q4OAQ4yAQ4SAA42AA8CAOkODgEPEgAjDwIA+w5EAQ8CAP8gD0QBww7WAA4SAA8CACMOSAAuAQEUAA8CALEP1gDDDwIAWg8aAsQPAgBZD0MB/zEPygP/Mg9EAf8zDwIA//+vD0gF/zIPAgD/eQ1bCQ0RAA/2BiQOKAMOEgAPAgD/P1AAAAAAAA==" ) + +[sub_resource type="VoxelChunkBlocky" id=16] +resource_name = "Chunk[-1,-1,0]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, -16, 0 ) +position_x = -1 +position_y = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAMIdAdYADhIADwIAEQ42AA4SAA8CAP8ODjIBDhIADwIA//////////////////////////8+UAAAAAAA" ) + +[sub_resource type="VoxelChunkBlocky" id=17] +resource_name = "Chunk[-1,-1,-1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, -16, -16 ) +position_x = -1 +position_y = -1 +position_z = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAP////////////9dHwFnCv8wHwFEAf8yD4cC/zAPRAH/Mw8CAP//////gQ1aCQ5sCQ0jAA8CABIONgAOEgAPAgD/Dg4yAQsSAFAAAAAAAA==" ) + +[sub_resource type="VoxelChunkBlocky" id=18] +resource_name = "Chunk[0,-1,0]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -16, 0 ) +position_y = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAP9BHwFUAf9BDwIA//////////////////////////8cUAAAAAAA" ) + +[sub_resource type="VoxelChunkBlocky" id=19] +resource_name = "Chunk[-1,0,0]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, 0, 0 ) +position_x = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAKEsAQG2AA0RAA8CAP9oDosBDhIADwIA//////////////////////////9OUAAAAAAA" ) + +[sub_resource type="VoxelChunkBlocky" id=7] +resource_name = "Chunk[-1,0,-2]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, 0, -32 ) +position_x = -1 +position_z = -2 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAP//////////////////////////1B0B1BQPEgAjDwIA6Q4yAR0CDwEOEgAONgAPAgBQUAAAAAAA" ) + +[node name="Level6" type="VoxelWorldBlocky"] +editable = true +max_concurrent_generations = 5 +library = ExtResource( 4 ) +chunks = [ SubResource( 14 ), SubResource( 15 ), SubResource( 16 ), SubResource( 17 ), SubResource( 18 ), SubResource( 19 ), SubResource( 7 ) ] +num_lods = 5 +__meta__ = { +"_edit_lock_": true +} + +[node name="WorldEnvironment" parent="." instance=ExtResource( 3 )] + +[node name="Player" parent="." instance=ExtResource( 5 )] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.995627, 1.18497, 0.0195603 ) + +[node name="DirectionalLight" type="DirectionalLight" parent="."] +transform = Transform( 0.969817, 0.22762, -0.0874344, 0, 0.35858, 0.933499, 0.243835, -0.905323, 0.347757, 0, 5.5679, -6.05193 ) +light_color = Color( 0.47451, 0.352941, 0.607843, 1 ) +light_energy = 0.31 +shadow_enabled = true + +[node name="DirectionalLight2" type="DirectionalLight" parent="."] +transform = Transform( 0.902848, -0.382056, -0.197228, 0, -0.458712, 0.888585, -0.42996, -0.802257, -0.414147, 0, 5.5679, -6.94149 ) +light_color = Color( 0.682353, 0.145098, 0.145098, 1 ) +light_energy = 0.17 +shadow_enabled = true + +[node name="OmniLight" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -5.33566, 8.78919, -13.4252 ) +light_color = Color( 0.894118, 0.894118, 0.894118, 1 ) +light_energy = 1.17 +light_negative = true +shadow_enabled = true +omni_range = 7.3664 +omni_attenuation = 2.0 +omni_shadow_mode = 0 + +[node name="OmniLight2" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -8.18059, 1.65957, -15.6395 ) +light_color = Color( 0.141176, 0.427451, 0.552941, 1 ) +light_energy = 2.55 +light_indirect_energy = 5.47 +light_specular = 0.61 +omni_range = 8.88538 +omni_attenuation = 1.1487 + +[node name="OmniLight3" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -17.2802, 1.65957, -7.3639 ) +light_color = Color( 0.462745, 0.0980392, 0.380392, 1 ) +light_energy = 2.55 +light_indirect_energy = 5.47 +light_specular = 0.61 +omni_range = 8.88538 +omni_attenuation = 1.1487 + +[node name="OmniLight4" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -8.53726, 4.41136, -7.73945 ) +light_color = Color( 0.164706, 0.054902, 0.690196, 1 ) +light_energy = 2.55 +light_indirect_energy = 5.47 +light_specular = 0.61 +omni_range = 8.88538 +omni_attenuation = 0.406128 + +[node name="OmniLight5" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.674599, 2.49094, 1.27345 ) +light_color = Color( 0.372549, 0.572549, 0.705882, 1 ) +light_energy = 0.83 +light_indirect_energy = 5.47 +light_negative = true +light_specular = 0.61 +omni_range = 7.6254 +omni_attenuation = 0.70711 + +[node name="Particles" parent="." instance=ExtResource( 1 )] + +[node name="ExitPortal" parent="." instance=ExtResource( 2 )] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -6.98108, 4.06104, -14.9795 ) diff --git a/voxelman/the_tower_gles2/levels/Level7.tscn b/voxelman/the_tower_gles2/levels/Level7.tscn new file mode 100644 index 0000000..08c234a --- /dev/null +++ b/voxelman/the_tower_gles2/levels/Level7.tscn @@ -0,0 +1,188 @@ +[gd_scene load_steps=12 format=3] + +[ext_resource path="res://levels/Particles.tscn" type="PackedScene" id=1] +[ext_resource path="res://areas/ExitPortal.tscn" type="PackedScene" id=2] +[ext_resource path="res://levels/WorldEnvironment.tscn" type="PackedScene" id=3] +[ext_resource path="res://library/MainLibrary.tres" type="VoxelLibrarySimple" id=4] +[ext_resource path="res://player/Player.tscn" type="PackedScene" id=5] + +[sub_resource type="VoxelChunkBlocky" id=13] +resource_name = "Chunk[-1,-1,-1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, -16, -16 ) +position_x = -1 +position_y = -1 +position_z = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAP////////////////+tLwEBtQ3/MA9EAf8xHwFEAf8zD8sD/zEPQwH/MA9EAf8hDoQHDxIAIw8CAP8gDGgBUAAAAAAA" ) + +[sub_resource type="VoxelChunkBlocky" id=14] +resource_name = "Chunk[0,-1,0]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -16, 0 ) +position_y = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAP9AHwFTAf9ADwIA//////////////////////////8eUAAAAAAA" ) + +[sub_resource type="VoxelChunkBlocky" id=15] +resource_name = "Chunk[-1,-1,0]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, -16, 0 ) +position_x = -1 +position_y = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAOUdAfkADxIAIw8CAP8gDmgBDwIA//////////////////////////8/UAAAAAAA" ) + +[sub_resource type="VoxelChunkBlocky" id=16] +resource_name = "Chunk[0,-1,-1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -16, -16 ) +position_y = -1 +position_z = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAP//////////////////////////Tx8BTxT//2JQAAAAAAA=" ) + +[sub_resource type="VoxelChunkBlocky" id=17] +resource_name = "Chunk[-1,0,-1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, 0, -16 ) +position_x = -1 +position_z = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABACYfAToAIg42AB0CSAAOEgAONgAPAgCzDtgADxIAWQ8CALMOMgEPAgD/IA9EAf//iQ6aAg8SABEPAgD/IA5WAQ8CAP/////tHQEPBQ0RAA8SAAAPAgAjDkgADBIAHgGPAA8CAP8fD0MB/zEPRAH/NA+6A/8fDwIA/////xJQAAAAAAA=" ) + +[sub_resource type="VoxelChunkBlocky" id=18] +resource_name = "Chunk[-1,0,-2]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, 0, -32 ) +position_x = -1 +position_z = -2 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAP///////////////////////yYdASgSDxIAIw8CALMO/AAPAgARDjYAHQI3AA4SAA42AA8CALMP2AAjDjYADjIBDhIADjYADwIAsw7YAA8SAFkPAgB0UAAAAAAA" ) + +[node name="Level7" type="VoxelWorldBlocky"] +editable = true +max_concurrent_generations = 5 +library = ExtResource( 4 ) +chunks = [ SubResource( 13 ), SubResource( 14 ), SubResource( 15 ), SubResource( 16 ), SubResource( 17 ), SubResource( 18 ) ] +num_lods = 5 +__meta__ = { +"_edit_lock_": true +} + +[node name="WorldEnvironment" parent="." instance=ExtResource( 3 )] + +[node name="Player" parent="." instance=ExtResource( 5 )] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.41305, 0.165382, 0 ) + +[node name="DirectionalLight" type="DirectionalLight" parent="."] +transform = Transform( 0.969817, 0.22762, -0.0874344, 0, 0.35858, 0.933499, 0.243835, -0.905323, 0.347757, 0, 5.5679, -6.05193 ) +light_color = Color( 0.47451, 0.352941, 0.607843, 1 ) +light_energy = 0.31 +shadow_enabled = true + +[node name="DirectionalLight2" type="DirectionalLight" parent="."] +transform = Transform( 0.902848, -0.382056, -0.197228, 0, -0.458712, 0.888585, -0.42996, -0.802257, -0.414147, 0, 5.5679, -6.94149 ) +light_color = Color( 0.682353, 0.145098, 0.145098, 1 ) +light_energy = 0.17 +shadow_enabled = true + +[node name="OmniLight" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -5.33566, 8.78919, -13.4252 ) +light_color = Color( 0.894118, 0.894118, 0.894118, 1 ) +light_energy = 1.17 +light_negative = true +shadow_enabled = true +omni_range = 7.3664 +omni_attenuation = 2.0 +omni_shadow_mode = 0 + +[node name="OmniLight2" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -8.18059, 1.65957, -15.6395 ) +light_color = Color( 0.141176, 0.427451, 0.552941, 1 ) +light_energy = 2.55 +light_indirect_energy = 5.47 +light_specular = 0.61 +omni_range = 8.88538 +omni_attenuation = 1.1487 + +[node name="OmniLight3" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -17.2802, 1.65957, -7.3639 ) +light_color = Color( 0.462745, 0.0980392, 0.380392, 1 ) +light_energy = 2.55 +light_indirect_energy = 5.47 +light_specular = 0.61 +omni_range = 8.88538 +omni_attenuation = 1.1487 + +[node name="OmniLight4" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -8.53726, 4.41136, -7.73945 ) +light_color = Color( 0.164706, 0.054902, 0.690196, 1 ) +light_energy = 2.55 +light_indirect_energy = 5.47 +light_specular = 0.61 +omni_range = 8.88538 +omni_attenuation = 0.406128 + +[node name="OmniLight5" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.674599, 2.49094, 1.27345 ) +light_color = Color( 0.372549, 0.572549, 0.705882, 1 ) +light_energy = 0.83 +light_indirect_energy = 5.47 +light_negative = true +light_specular = 0.61 +omni_range = 7.6254 +omni_attenuation = 0.70711 + +[node name="Particles" parent="." instance=ExtResource( 1 )] + +[node name="ExitPortal" parent="." instance=ExtResource( 2 )] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -8.96747, 4.02385, -16.9428 ) diff --git a/voxelman/the_tower_gles2/levels/Level8.tscn b/voxelman/the_tower_gles2/levels/Level8.tscn new file mode 100644 index 0000000..3ba9079 --- /dev/null +++ b/voxelman/the_tower_gles2/levels/Level8.tscn @@ -0,0 +1,204 @@ +[gd_scene load_steps=13 format=3] + +[ext_resource path="res://levels/Particles.tscn" type="PackedScene" id=1] +[ext_resource path="res://areas/ExitPortal.tscn" type="PackedScene" id=2] +[ext_resource path="res://levels/WorldEnvironment.tscn" type="PackedScene" id=3] +[ext_resource path="res://library/MainLibrary.tres" type="VoxelLibrarySimple" id=4] +[ext_resource path="res://player/Player.tscn" type="PackedScene" id=5] + +[sub_resource type="VoxelChunkBlocky" id=1] +resource_name = "Chunk[-1,-1,-1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, -16, -16 ) +position_x = -1 +position_y = -1 +position_z = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAP////////////9LHQFVCg8SADUPAgAjD34AEQ8CAH0OtAAPAgD//wsPLgL/MR8BRAH/Mg+kBP8xD4cC/zEPiAL//4oP3gP/IA4yAQsSAFAAAAAAAA==" ) + +[sub_resource type="VoxelChunkBlocky" id=2] +resource_name = "Chunk[-1,0,0]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, 0, 0 ) +position_x = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAP//QB0BUgIOEgAPAgD//////////////////////////05QAAAAAAA=" ) + +[sub_resource type="VoxelChunkBlocky" id=3] +resource_name = "Chunk[-1,-1,0]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, -16, 0 ) +position_x = -1 +position_y = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAP8LHQEeAQ4SAA8CAP8ODjIBDhIADwIA//////////////////////////8+UAAAAAAA" ) + +[sub_resource type="VoxelChunkBlocky" id=14] +resource_name = "Chunk[0,-1,0]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -16, 0 ) +position_y = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAP9BHwFUAf9BDwIA//////////////////////////8cUAAAAAAA" ) + +[sub_resource type="VoxelChunkBlocky" id=15] +resource_name = "Chunk[0,-1,-1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -16, -16 ) +position_y = -1 +position_z = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAP//////////////////////////UB8BUBT//2FQAAAAAAA=" ) + +[sub_resource type="VoxelChunkBlocky" id=16] +resource_name = "Chunk[-1,0,-1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, 0, -16 ) +position_x = -1 +position_z = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAP////////////87HQFFCg8SADUPAgAjD34AEQ8CACQeAVwADwIAMw9ZAEYPAgB/D+sARw+dAUUPAgB+D0MBRw8CANYPQwH/MQ9wA9cPAgBID0QBJQ44AA8SABEPAgDDDvoADwIAEw44AA4SAA8CANUP+gDnDwIANw5EAQ4SAA8CAP8/UAAAAAAA" ) + +[sub_resource type="VoxelChunkBlocky" id=17] +resource_name = "Chunk[-2,0,-1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -32, 0, -16 ) +position_x = -2 +position_z = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAP////////////////////MdAfgPDxIAIw8CAOkOMgEdAg8BDhIADjYADwIA6Q4OAQ4yAQ4SAA42AA8SACMPAgCzD/wAIw42AA4CAA4kAA4SAA8CAP//cFAAAAAAAA==" ) + +[node name="Level8" type="VoxelWorldBlocky"] +editable = true +max_concurrent_generations = 5 +library = ExtResource( 4 ) +chunks = [ SubResource( 1 ), SubResource( 2 ), SubResource( 3 ), SubResource( 14 ), SubResource( 15 ), SubResource( 16 ), SubResource( 17 ) ] +num_lods = 5 +__meta__ = { +"_edit_lock_": true +} + +[node name="WorldEnvironment" parent="." instance=ExtResource( 3 )] + +[node name="Player" parent="." instance=ExtResource( 5 )] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.852744, 0.758311, 0 ) + +[node name="DirectionalLight" type="DirectionalLight" parent="."] +transform = Transform( 0.969817, 0.22762, -0.0874344, 0, 0.35858, 0.933499, 0.243835, -0.905323, 0.347757, 0, 5.5679, -6.05193 ) +light_color = Color( 0.47451, 0.352941, 0.607843, 1 ) +light_energy = 0.31 +shadow_enabled = true + +[node name="DirectionalLight2" type="DirectionalLight" parent="."] +transform = Transform( 0.902848, -0.382056, -0.197228, 0, -0.458712, 0.888585, -0.42996, -0.802257, -0.414147, 0, 5.5679, -6.94149 ) +light_color = Color( 0.682353, 0.145098, 0.145098, 1 ) +light_energy = 0.17 +shadow_enabled = true + +[node name="OmniLight" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -5.33566, 8.78919, -13.4252 ) +light_color = Color( 0.894118, 0.894118, 0.894118, 1 ) +light_energy = 1.17 +light_negative = true +shadow_enabled = true +omni_range = 7.3664 +omni_attenuation = 2.0 +omni_shadow_mode = 0 + +[node name="OmniLight2" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -8.18059, 1.65957, -15.6395 ) +light_color = Color( 0.141176, 0.427451, 0.552941, 1 ) +light_energy = 2.55 +light_indirect_energy = 5.47 +light_specular = 0.61 +omni_range = 8.88538 +omni_attenuation = 1.1487 + +[node name="OmniLight3" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -17.2802, 1.65957, -7.3639 ) +light_color = Color( 0.462745, 0.0980392, 0.380392, 1 ) +light_energy = 2.55 +light_indirect_energy = 5.47 +light_specular = 0.61 +omni_range = 8.88538 +omni_attenuation = 1.1487 + +[node name="OmniLight4" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -8.53726, 4.41136, -7.73945 ) +light_color = Color( 0.164706, 0.054902, 0.690196, 1 ) +light_energy = 2.55 +light_indirect_energy = 5.47 +light_specular = 0.61 +omni_range = 8.88538 +omni_attenuation = 0.406128 + +[node name="OmniLight5" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.674599, 2.49094, 1.27345 ) +light_color = Color( 0.372549, 0.572549, 0.705882, 1 ) +light_energy = 0.83 +light_indirect_energy = 5.47 +light_negative = true +light_specular = 0.61 +omni_range = 7.6254 +omni_attenuation = 0.70711 + +[node name="Particles" parent="." instance=ExtResource( 1 )] + +[node name="ExitPortal" parent="." instance=ExtResource( 2 )] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -19.9552, 2.02718, -3.01009 ) diff --git a/voxelman/the_tower_gles2/levels/Level9.tscn b/voxelman/the_tower_gles2/levels/Level9.tscn new file mode 100644 index 0000000..4e6d3ba --- /dev/null +++ b/voxelman/the_tower_gles2/levels/Level9.tscn @@ -0,0 +1,220 @@ +[gd_scene load_steps=14 format=3] + +[ext_resource path="res://levels/Particles.tscn" type="PackedScene" id=1] +[ext_resource path="res://areas/ExitPortal.tscn" type="PackedScene" id=2] +[ext_resource path="res://levels/WorldEnvironment.tscn" type="PackedScene" id=3] +[ext_resource path="res://library/MainLibrary.tres" type="VoxelLibrarySimple" id=4] +[ext_resource path="res://player/Player.tscn" type="PackedScene" id=5] + +[sub_resource type="VoxelChunkBlocky" id=1] +resource_name = "Chunk[0,-1,-1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -16, -16 ) +position_y = -1 +position_z = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAP//////////////////////////Tx8BTxT//2JQAAAAAAA=" ) + +[sub_resource type="VoxelChunkBlocky" id=2] +resource_name = "Chunk[-1,-1,0]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, -16, 0 ) +position_x = -1 +position_y = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAMEfAdUANA5IAA4SAA8CAMUP6gAjDjYADxIAEQ8CAP//////////////////////////P1AAAAAAAA==" ) + +[sub_resource type="VoxelChunkBlocky" id=3] +resource_name = "Chunk[-1,-1,-1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, -16, -16 ) +position_x = -1 +position_y = -1 +position_z = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAP////////////////////8CHwEGEP8xDkQBHwETAAAPaQH/DA4xAQ8CAP8fD3UCAA8CAP8fD4cCNQ5IAA4SAA8CAMUP6gAjDjYADxIAD1AAAAAAAA==" ) + +[sub_resource type="VoxelChunkBlocky" id=4] +resource_name = "Chunk[0,-1,0]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -16, 0 ) +position_y = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAP9AHwFTAf9ADwIA//////////////////////////8eUAAAAAAA" ) + +[sub_resource type="VoxelChunkBlocky" id=15] +resource_name = "Chunk[-1,0,-1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, 0, -16 ) +position_x = -1 +position_z = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAP////+6HwHKBP8xD0QB/0QOVgEPEgARDwIA6Q4gAQ8CAP///////zUPVAb5DwwBJQ84ACUPAgDBDgwBLQEBFAAOEgAdACQADwIA6A8MAfkPAgAlD0QB/zIPAgD/q1AAAAAAAA==" ) + +[sub_resource type="VoxelChunkBlocky" id=16] +resource_name = "Chunk[0,0,-1]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -16 ) +position_z = -1 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAP///////0gdAVYGDxIAAA0TAA4SAA8lAAAfACUAAA1uAA8CAP///////////////////+lQAAAAAAA=" ) + +[sub_resource type="VoxelChunkBlocky" id=17] +resource_name = "Chunk[0,0,-2]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -32 ) +position_z = -2 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAP///////////////////zIdATcPDhIADwIA/w4dAiEBDUQBHAESABwBEgAMEAAPAgDcD0QBEA8CAA8MZQEPAgDcDv8ADhIADwIADg8zACAPAgD///84UAAAAAAA" ) + +[sub_resource type="VoxelChunkBlocky" id=18] +resource_name = "Chunk[-1,0,-2]" +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16, 0, -32 ) +position_x = -1 +position_z = -2 +size_x = 16 +size_y = 16 +size_z = 16 +data_size_x = 18 +data_size_y = 18 +data_size_z = 18 +margin_start = 1 +margin_end = 1 +library = ExtResource( 4 ) +channel_count = 1 +data_channel = PoolByteArray( "HwABAP////////////////////8vHQEzEA8SACMPAgDpDjIBHQIPAQ4SAA42AA8CAOkODgEOMgEOEgAONgAPAgDpDg4BDxIAIw8CAP//a1AAAAAAAA==" ) + +[node name="Level9" type="VoxelWorldBlocky"] +editable = true +max_concurrent_generations = 5 +library = ExtResource( 4 ) +chunks = [ SubResource( 1 ), SubResource( 2 ), SubResource( 3 ), SubResource( 4 ), SubResource( 15 ), SubResource( 16 ), SubResource( 17 ), SubResource( 18 ) ] +num_lods = 5 +__meta__ = { +"_edit_lock_": true +} + +[node name="WorldEnvironment" parent="." instance=ExtResource( 3 )] + +[node name="Player" parent="." instance=ExtResource( 5 )] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.852744, 0.290306, 0.122863 ) + +[node name="DirectionalLight" type="DirectionalLight" parent="."] +transform = Transform( 0.969817, 0.22762, -0.0874344, 0, 0.35858, 0.933499, 0.243835, -0.905323, 0.347757, 0, 5.5679, -6.05193 ) +light_color = Color( 0.47451, 0.352941, 0.607843, 1 ) +light_energy = 0.31 +shadow_enabled = true + +[node name="DirectionalLight2" type="DirectionalLight" parent="."] +transform = Transform( 0.902848, -0.382056, -0.197228, 0, -0.458712, 0.888585, -0.42996, -0.802257, -0.414147, 0, 5.5679, -6.94149 ) +light_color = Color( 0.682353, 0.145098, 0.145098, 1 ) +light_energy = 0.17 +shadow_enabled = true + +[node name="OmniLight" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -5.33566, 8.78919, -13.4252 ) +light_color = Color( 0.894118, 0.894118, 0.894118, 1 ) +light_energy = 1.17 +light_negative = true +shadow_enabled = true +omni_range = 7.3664 +omni_attenuation = 2.0 +omni_shadow_mode = 0 + +[node name="OmniLight2" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -8.18059, 1.65957, -15.6395 ) +light_color = Color( 0.141176, 0.427451, 0.552941, 1 ) +light_energy = 2.55 +light_indirect_energy = 5.47 +light_specular = 0.61 +omni_range = 8.88538 +omni_attenuation = 1.1487 + +[node name="OmniLight3" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -17.2802, 1.65957, -7.3639 ) +light_color = Color( 0.462745, 0.0980392, 0.380392, 1 ) +light_energy = 2.55 +light_indirect_energy = 5.47 +light_specular = 0.61 +omni_range = 8.88538 +omni_attenuation = 1.1487 + +[node name="OmniLight4" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -8.53726, 4.41136, -7.73945 ) +light_color = Color( 0.164706, 0.054902, 0.690196, 1 ) +light_energy = 2.55 +light_indirect_energy = 5.47 +light_specular = 0.61 +omni_range = 8.88538 +omni_attenuation = 0.406128 + +[node name="OmniLight5" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.674599, 2.49094, 1.27345 ) +light_color = Color( 0.372549, 0.572549, 0.705882, 1 ) +light_energy = 0.83 +light_indirect_energy = 5.47 +light_negative = true +light_specular = 0.61 +omni_range = 7.6254 +omni_attenuation = 0.70711 + +[node name="Particles" parent="." instance=ExtResource( 1 )] + +[node name="ExitPortal" parent="." instance=ExtResource( 2 )] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.922967, 6.98507, -18.9305 ) diff --git a/voxelman/the_tower_gles2/levels/LevelKit.tscn b/voxelman/the_tower_gles2/levels/LevelKit.tscn new file mode 100644 index 0000000..fe9a528 --- /dev/null +++ b/voxelman/the_tower_gles2/levels/LevelKit.tscn @@ -0,0 +1,84 @@ +[gd_scene load_steps=6 format=3] + +[ext_resource path="res://levels/Particles.tscn" type="PackedScene" id=1] +[ext_resource path="res://areas/ExitPortal.tscn" type="PackedScene" id=2] +[ext_resource path="res://levels/WorldEnvironment.tscn" type="PackedScene" id=3] +[ext_resource path="res://library/MainLibrary.tres" type="VoxelLibrarySimple" id=4] +[ext_resource path="res://player/Player.tscn" type="PackedScene" id=5] + +[node name="LevelKit" type="VoxelWorldBlocky"] +editable = true +max_concurrent_generations = 5 +library = ExtResource( 4 ) +__meta__ = { +"_edit_lock_": true +} + +[node name="WorldEnvironment" parent="." instance=ExtResource( 3 )] + +[node name="Player" parent="." instance=ExtResource( 5 )] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.852744, 0.165382, 0 ) + +[node name="DirectionalLight" type="DirectionalLight" parent="."] +transform = Transform( 0.969817, 0.22762, -0.0874344, 0, 0.35858, 0.933499, 0.243835, -0.905323, 0.347757, 0, 5.5679, -6.05193 ) +light_color = Color( 0.47451, 0.352941, 0.607843, 1 ) +light_energy = 0.31 +shadow_enabled = true + +[node name="DirectionalLight2" type="DirectionalLight" parent="."] +transform = Transform( 0.902848, -0.382056, -0.197228, 0, -0.458712, 0.888585, -0.42996, -0.802257, -0.414147, 0, 5.5679, -6.94149 ) +light_color = Color( 0.682353, 0.145098, 0.145098, 1 ) +light_energy = 0.17 +shadow_enabled = true + +[node name="OmniLight" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -5.33566, 8.78919, -13.4252 ) +light_color = Color( 0.894118, 0.894118, 0.894118, 1 ) +light_energy = 1.17 +light_negative = true +shadow_enabled = true +omni_range = 7.3664 +omni_attenuation = 2.0 +omni_shadow_mode = 0 + +[node name="OmniLight2" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -8.18059, 1.65957, -15.6395 ) +light_color = Color( 0.141176, 0.427451, 0.552941, 1 ) +light_energy = 2.55 +light_indirect_energy = 5.47 +light_specular = 0.61 +omni_range = 8.88538 +omni_attenuation = 1.1487 + +[node name="OmniLight3" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -17.2802, 1.65957, -7.3639 ) +light_color = Color( 0.462745, 0.0980392, 0.380392, 1 ) +light_energy = 2.55 +light_indirect_energy = 5.47 +light_specular = 0.61 +omni_range = 8.88538 +omni_attenuation = 1.1487 + +[node name="OmniLight4" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -8.53726, 4.41136, -7.73945 ) +light_color = Color( 0.164706, 0.054902, 0.690196, 1 ) +light_energy = 2.55 +light_indirect_energy = 5.47 +light_specular = 0.61 +omni_range = 8.88538 +omni_attenuation = 0.406128 + +[node name="OmniLight5" type="OmniLight" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.674599, 2.49094, 1.27345 ) +light_color = Color( 0.372549, 0.572549, 0.705882, 1 ) +light_energy = 0.83 +light_indirect_energy = 5.47 +light_negative = true +light_specular = 0.61 +omni_range = 7.6254 +omni_attenuation = 0.70711 + +[node name="Particles" parent="." instance=ExtResource( 1 )] + +[node name="ExitPortal" parent="." instance=ExtResource( 2 )] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -21.9693, 3.02528, -9.99266 ) diff --git a/voxelman/the_tower_gles2/levels/Particles.tscn b/voxelman/the_tower_gles2/levels/Particles.tscn new file mode 100644 index 0000000..c6850c6 --- /dev/null +++ b/voxelman/the_tower_gles2/levels/Particles.tscn @@ -0,0 +1,35 @@ +[gd_scene load_steps=5 format=3] + +[ext_resource path="res://particles/flake.png" type="Texture" id=1] + +[sub_resource type="SpatialMaterial" id=13] +flags_transparent = true +vertex_color_use_as_albedo = true +params_specular_mode = 4 +params_billboard_mode = 3 +particles_anim_h_frames = 1 +particles_anim_v_frames = 1 +particles_anim_loop = false +albedo_texture = ExtResource( 1 ) + +[sub_resource type="QuadMesh" id=14] +material = SubResource( 13 ) + +[sub_resource type="Gradient" id=15] + +[node name="Particles" type="CPUParticles"] +mesh = SubResource( 14 ) +emission_shape = 2 +emission_box_extents = Vector3( 70, 70, 70 ) +gravity = Vector3( 0, -0.4, 0 ) +initial_velocity_random = 0.15 +angular_velocity = 16.55 +angular_velocity_random = 0.51 +radial_accel = -0.05 +radial_accel_random = 0.37 +scale_amount = 0.4 +color_ramp = SubResource( 15 ) +hue_variation = 0.48 +hue_variation_random = 0.09 +anim_speed = 44.14 +anim_offset = 0.07 diff --git a/voxelman/the_tower_gles2/levels/Roboto-Black.ttf b/voxelman/the_tower_gles2/levels/Roboto-Black.ttf new file mode 100644 index 0000000000000000000000000000000000000000..2d452383651a6ef279743a9926b90234b8b79366 GIT binary patch literal 171072 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� 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 z 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 A4FCWD literal 0 HcmV?d00001 diff --git a/voxelman/the_tower_gles2/library/main_atlas.png.import b/voxelman/the_tower_gles2/library/main_atlas.png.import new file mode 100644 index 0000000..a4ceb0f --- /dev/null +++ b/voxelman/the_tower_gles2/library/main_atlas.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/main_atlas.png-b5c8475f969ccbf3571485ba0e461048.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://library/main_atlas.png" +dest_files=[ "res://.import/main_atlas.png-b5c8475f969ccbf3571485ba0e461048.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=true +flags/anisotropic=false +flags/srgb=1 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/voxelman/the_tower_gles2/library/main_atlas.pxo b/voxelman/the_tower_gles2/library/main_atlas.pxo new file mode 100644 index 0000000000000000000000000000000000000000..903fe4e91e711554814832c47be60d5a670c4796 GIT binary patch literal 363 zcmZ>F4sc^)00IF9hSd%X4AX#2Q6!uPWNU2I|C_+TpUT2u!cu0SXU?U^<&#*MTBKmW z#mK&dp`=`bpD9rHSe!M*+ nqf=05ut$7|qkAwHJA==LxTeH}%hsLDi+8ew&e!912L>|$F{yXX literal 0 HcmV?d00001 diff --git a/voxelman/the_tower_gles2/library/main_emission.png b/voxelman/the_tower_gles2/library/main_emission.png new file mode 100644 index 0000000000000000000000000000000000000000..7a04597f7b6f77f50717dabf03bb3b07a112d672 GIT binary patch literal 541 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%zuY0;UhE&XX zJ7cfkVFQs?|A|gg6T4Koor5+$lZ`m!Bz~{0{N?PF!9QNG;o+aW%_pwa&idW(L2tv2 z(2AM4^>2%R{$gCP-+P0=eYW@cW)W|+wnVm+)&5T2ujKPa`mkG$ooHgx^=7kfw%3ij z9e!=%?%2zimN)zBfu(1ae&3pH*MI$eP`@3QA!GUNnQM1<-?K|zB+a; zbF|fe+CQ*g$aI78#tMcq1~aV&*@j-O1oni*G!r^&&ey1`FxBgvD=@wpJYD@<);T3K F0RWZk<%<9S literal 0 HcmV?d00001 diff --git a/voxelman/the_tower_gles2/library/main_emission.png.import b/voxelman/the_tower_gles2/library/main_emission.png.import new file mode 100644 index 0000000..a56ee68 --- /dev/null +++ b/voxelman/the_tower_gles2/library/main_emission.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/main_emission.png-bed3b454d6b789e788e1a92ce7e197d2.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://library/main_emission.png" +dest_files=[ "res://.import/main_emission.png-bed3b454d6b789e788e1a92ce7e197d2.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=true +flags/anisotropic=false +flags/srgb=1 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/voxelman/the_tower_gles2/library/main_emission.pxo b/voxelman/the_tower_gles2/library/main_emission.pxo new file mode 100644 index 0000000000000000000000000000000000000000..82850bdb5ad3909d7d3c284b1a57bfe2923912a3 GIT binary patch literal 490 zcmZ>F4sc^)00IF9hSd%X3=)hC45C0T3}*w`8e8@MCNS`qaxkQ@lo{xmbLnyUBvz&t zDHw18RdWDU2s60)xx~Bs_&YiJ#QQi#x&{Sv>FRPhFgP&iaslQ4Z)cTtVi)=HLu&?) z{4Y7qk`)J+f3s&;z$D1D;}L_<17!}zjY6{y3Hf<^{NE{`P?Nvy6;Ij1xC{Fuo%i|+ za9d8?bN2M&zrE!%zN9)7=gt3{)BOFD@>E9q|Jpy(*ynF+suj`G`ON-i_J(g$pTFj6 znt1>Jto4>JXDZ%ukbIXYpKTo^`QY^p1(W)Fy}J0PkT$Qo6h-Mt+uyYW|Pb+?X`>Z zeogaV{D%=5F0l*@3jcwgWMuexzubj1L50<#%nVmpK-wGZL173DJoivf7gx6+M_<=q zE)k$49}w@@Zf?JD!2+9?FJ9P!l()9D*gbskzy>JB$mkRl8tf4t;^-dC#m?ZfA+9O$ U!XNAT%qwk44ofy`glX(f`7<#%mhH%W( zJ?Y5HpultBfVZ1K2an7GhMCn$49qqW^|^=B7b-`eT%-6(hUbn$*q$5w+j`j^{EOT8 Q8mO7U)78&qol`;+0Im5WApigX literal 0 HcmV?d00001 diff --git a/voxelman/the_tower_gles2/particles/flake.png.import b/voxelman/the_tower_gles2/particles/flake.png.import new file mode 100644 index 0000000..7d3dcd8 --- /dev/null +++ b/voxelman/the_tower_gles2/particles/flake.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/flake.png-e35d9e06b95683c10cf763d53898bb0b.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://particles/flake.png" +dest_files=[ "res://.import/flake.png-e35d9e06b95683c10cf763d53898bb0b.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=true +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=1 +process/fix_alpha_border=false +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/voxelman/the_tower_gles2/particles/flake.pxo b/voxelman/the_tower_gles2/particles/flake.pxo new file mode 100644 index 0000000000000000000000000000000000000000..c7b7ae6fa28c1373b16ecd7700d20d5e63118ce5 GIT binary patch literal 174 zcmV;f08#%(Lr_Kn000005C8z{0001%0000ewJ-f3>um%8g2oslkf{*>Gvbdi#;97# z*(+HZm!wL@YG&K&LGPYwrenw7ye1zi-!i5_I 0: + accel = ACCEL * accel_multiplier + else: + accel = DEACCEL * accel_multiplier + + var target : Vector3 = direction * speed + temp_velocity = temp_velocity.linear_interpolate(target, ACCEL * delta) + + velocity.x = temp_velocity.x + velocity.z = temp_velocity.z + + if not has_contact and not double_jumped and Input.is_action_just_pressed("move_jump"): + double_jumped = true + velocity.y = jump_height * jump_height_modifier + + if has_contact and Input.is_action_just_pressed("move_jump"): + velocity.y = jump_height * jump_height_modifier + has_contact = false + double_jumped = false + + if not foot_audio.playing and last_sound_timer >= MIN_SOUND_TIME_LIMIT: + foot_audio.play() + last_sound_timer = 0 + + step_timer = 0 + + velocity = move_and_slide(velocity, Vector3(0, 1, 0), true) + + if not has_contact and is_on_floor(): + if not foot_audio.playing and last_sound_timer >= MIN_SOUND_TIME_LIMIT: + foot_audio.play() + last_sound_timer = 0 + + step_timer = 0 + + var v : Vector3 = velocity + v.y = 0 + if has_contact and v.length() > 1: + step_timer += delta + + if step_timer >= WALK_STEP_TIME: + step_timer = 0 + + if not foot_audio.playing and last_sound_timer >= MIN_SOUND_TIME_LIMIT: + foot_audio.play() + last_sound_timer = 0 + + +func _unhandled_input(event): + if event is InputEventMouseMotion: + camera_change = event.relative + +func aim(): + if camera_change.length() > 0: + $Head.rotate_y(deg2rad(-camera_change.x * mouse_sensitivity)) + + var change : float = -camera_change.y * mouse_sensitivity + + if camera_angle + change > -90 and camera_angle + change < 90: + $Head/Camera.rotate_x(deg2rad(change)) + camera_angle += change + + camera_change = Vector2() + +func ladder_area_entered(ladder): + flying = true + +func ladder_area_exited(ladder): + flying = false + +func is_player(): + return true diff --git a/voxelman/the_tower_gles2/player/Player.tscn b/voxelman/the_tower_gles2/player/Player.tscn new file mode 100644 index 0000000..d774e83 --- /dev/null +++ b/voxelman/the_tower_gles2/player/Player.tscn @@ -0,0 +1,71 @@ +[gd_scene load_steps=8 format=3] + +[ext_resource path="res://player/Player.gd" type="Script" id=1] +[ext_resource path="res://sounds/edited/stepdirt_1.wav" type="AudioStream" id=2] +[ext_resource path="res://player/VolumeControl.tscn" type="PackedScene" id=3] +[ext_resource path="res://player/Menu.gd" type="Script" id=4] +[ext_resource path="res://player/Exit.gd" type="Script" id=5] +[ext_resource path="res://player/ui_theme.tres" type="Theme" id=6] + +[sub_resource type="CapsuleShape" id=1] +radius = 0.4 +height = 1.6 + +[node name="Player" type="KinematicBody"] +script = ExtResource( 1 ) + +[node name="Capsule" type="CollisionShape" parent="."] +transform = Transform( 1, 0, 0, 0, -1.62921e-07, -1, 0, 1, -1.62921e-07, 0, 1.30561, 0 ) +shape = SubResource( 1 ) + +[node name="Head" type="Spatial" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.25899, 0 ) + +[node name="Camera" type="Camera" parent="Head"] +current = true + +[node name="Contact" type="RayCast" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.209, 0 ) +enabled = true +cast_to = Vector3( 0, -0.4, 0 ) + +[node name="foot" type="AudioStreamPlayer3D" parent="."] +stream = ExtResource( 2 ) +bus = @"Footsteps" + +[node name="Menu" type="CenterContainer" parent="."] +visible = false +anchor_right = 1.0 +anchor_bottom = 1.0 +theme = ExtResource( 6 ) +script = ExtResource( 4 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Main" type="PanelContainer" parent="Menu"] +margin_left = 508.0 +margin_top = 296.0 +margin_right = 515.401 +margin_bottom = 303.085 + +[node name="VBoxContainer" type="VBoxContainer" parent="Menu/Main"] +margin_left = 7.0 +margin_top = 7.0 +margin_right = 160.0 +margin_bottom = 89.0 +custom_constants/separation = 13 + +[node name="Resume" type="Button" parent="Menu/Main/VBoxContainer"] +margin_right = 153.0 +margin_bottom = 20.0 +text = "Resume" + +[node name="VolumeControl" parent="Menu/Main/VBoxContainer" instance=ExtResource( 3 )] + +[node name="Exit" type="Button" parent="Menu/Main/VBoxContainer"] +margin_top = 62.0 +margin_right = 153.0 +margin_bottom = 82.0 +text = "Exit" +script = ExtResource( 5 ) diff --git a/voxelman/the_tower_gles2/player/Volume.gd b/voxelman/the_tower_gles2/player/Volume.gd new file mode 100644 index 0000000..5c8abf9 --- /dev/null +++ b/voxelman/the_tower_gles2/player/Volume.gd @@ -0,0 +1,8 @@ +extends HSlider + +func _ready(): + connect("value_changed", self, "on_value_changed") + +func on_value_changed(value): + AudioServer.set_bus_volume_db(0, value) + diff --git a/voxelman/the_tower_gles2/player/VolumeControl.tscn b/voxelman/the_tower_gles2/player/VolumeControl.tscn new file mode 100644 index 0000000..331f8b8 --- /dev/null +++ b/voxelman/the_tower_gles2/player/VolumeControl.tscn @@ -0,0 +1,26 @@ +[gd_scene load_steps=2 format=3] + +[ext_resource path="res://player/Volume.gd" type="Script" id=1] + +[node name="VolumeControl" type="HBoxContainer"] +margin_top = 33.0 +margin_right = 153.0 +margin_bottom = 49.0 + +[node name="Label" type="Label" parent="."] +margin_top = 1.0 +margin_right = 49.0 +margin_bottom = 15.0 +text = "Volume" +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Volume" type="HSlider" parent="."] +margin_left = 53.0 +margin_right = 153.0 +margin_bottom = 16.0 +rect_min_size = Vector2( 100, 0 ) +min_value = -80.0 +max_value = 0.0 +script = ExtResource( 1 ) diff --git a/voxelman/the_tower_gles2/player/button.png b/voxelman/the_tower_gles2/player/button.png new file mode 100644 index 0000000000000000000000000000000000000000..be3b35b38fc46b9ffe1904effe06d9db05e8f023 GIT binary patch literal 630 zcmV-+0*U>JP)EX>4Tx04R}tkv&MmKp2MKrk09S1nnRqlA-EiK~%(1t5Adrp;lmEM7-$i+rcio?(Tg_Sw@QK8;%rGm&8^qI_ z6@&9WahMfkmH3=^%%lqvKXP4h`HgelVS#6c%~W!pI7}?&+gNF1RxmZ69;| zT~;}7an?#z*1RWwVJNGwEOVXKAmUiW5+sOFP(=|XR1l?IC&faN&SM__0mm`+qgqswK0f86W{ul;=yFjC6+uz5w-8cdK&%l-5@|Wwt%qQu! zmKHezdbWX!>z1bM0hc>K|C1q`vLpFv3Ar5ben#Jv0s3x%t~IxB&2yYS04eHK;s!W4 z1V-|dz3%bu&i20jThr{{4}AY}t3@QpumAu624YJ`L;xcIjQ|38!3R_T000SaNLh0L z04^f{04^f|c%?sf00007bV*G`2jm435-I=#I9O%?000?uMObu0Z*6U5Zgc=ca%Ew3 zWn>_CX>@2HM@dakSAh-}0000@NklJP)EX>4Tx04R}tkv&MmKp2MKrk09S1nnRqlA-EiK~%(1t5Adrp;lmEM7-$i+rcio?(Tg_Sw@QK8;%rGm&8^qI_ z6@&9WahMfkmH3=^%%lqvKXP4h`HgelVS#6c%~W!pI7}?&+gNF1RxmZ69;| zT~;}7an?#z*1RWwVJNGwEOVXKAmUiW5+sOFP(=|XR1l?IC&faN&SM__0mm`+qgqswK0f86W{ul;=yFjC6+uz5w-8cdK&%l-5@|Wwt%qQu! zmKHezdbWX!>z1bM0hc>K|C1q`vLpFv3Ar5ben#Jv0s3x%t~IxB&2yYS04eHK;s!W4 z1V-|dz3%bu&i20jThr{{4}AY}t3@QpumAu624YJ`L;xcIjQ|38!3R_T000SaNLh0L z04^f{04^f|c%?sf00007bV*G`2jm435-&QqLv@h=000?uMObu0Z*6U5Zgc=ca%Ew3 zWn>_CX>@2HM@dakSAh-}0000@Nkl#m*bpQYW literal 0 HcmV?d00001 diff --git a/voxelman/the_tower_gles2/player/panel.png.import b/voxelman/the_tower_gles2/player/panel.png.import new file mode 100644 index 0000000..653b7c4 --- /dev/null +++ b/voxelman/the_tower_gles2/player/panel.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/panel.png-e188ef6e7ca785861bf20b8a2e99961c.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://player/panel.png" +dest_files=[ "res://.import/panel.png-e188ef6e7ca785861bf20b8a2e99961c.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/voxelman/the_tower_gles2/player/ui_theme.tres b/voxelman/the_tower_gles2/player/ui_theme.tres new file mode 100644 index 0000000..9f5f9bc --- /dev/null +++ b/voxelman/the_tower_gles2/player/ui_theme.tres @@ -0,0 +1,62 @@ +[gd_resource type="Theme" load_steps=8 format=3] + +[ext_resource path="res://player/button.png" type="Texture" id=1] +[ext_resource path="res://player/panel.png" type="Texture" id=2] + +[sub_resource type="StyleBoxTexture" id=1] +texture = ExtResource( 1 ) +region_rect = Rect2( 0, 0, 20, 20 ) +margin_left = 4.12948 +margin_right = 4.27187 +margin_top = 4.55666 +margin_bottom = 3.84469 + +[sub_resource type="StyleBoxTexture" id=2] +texture = ExtResource( 1 ) +region_rect = Rect2( 0, 0, 20, 20 ) +margin_left = 3.59834 +margin_right = 3.98388 +margin_top = 3.59834 +margin_bottom = 3.72685 +modulate_color = Color( 0.752941, 0.752941, 0.752941, 1 ) + +[sub_resource type="StyleBoxTexture" id=3] +texture = ExtResource( 1 ) +region_rect = Rect2( 0, 0, 20, 20 ) +margin_left = 4.36941 +margin_right = 4.2409 +margin_top = 4.49793 +margin_bottom = 4.62644 + +[sub_resource type="StyleBoxTexture" id=4] +texture = ExtResource( 1 ) +region_rect = Rect2( 0, 0, 20, 20 ) +margin_left = 3.78773 +margin_right = 3.923 +margin_top = 3.78773 +margin_bottom = 3.78773 +modulate_color = Color( 0.505882, 0.505882, 0.505882, 1 ) + +[sub_resource type="StyleBoxTexture" id=5] +texture = ExtResource( 2 ) +region_rect = Rect2( 0, 0, 20, 20 ) +margin_left = 3.74726 +margin_right = 3.65383 +margin_top = 3.59737 +margin_bottom = 3.48775 +modulate_color = Color( 0.184314, 0.184314, 0.184314, 1 ) + +[resource] +Button/colors/font_color = Color( 0.88, 0.88, 0.88, 1 ) +Button/colors/font_color_disabled = Color( 0.9, 0.9, 0.9, 0.2 ) +Button/colors/font_color_hover = Color( 0.94, 0.94, 0.94, 1 ) +Button/colors/font_color_pressed = Color( 1, 1, 1, 1 ) +Button/constants/hseparation = 2 +Button/fonts/font = null +Button/styles/disabled = null +Button/styles/focus = SubResource( 1 ) +Button/styles/hover = SubResource( 2 ) +Button/styles/normal = SubResource( 3 ) +Button/styles/pressed = SubResource( 4 ) +Panel/styles/panel = SubResource( 5 ) +PanelContainer/styles/panel = SubResource( 5 ) diff --git a/voxelman/the_tower_gles2/project.pandemonium b/voxelman/the_tower_gles2/project.pandemonium new file mode 100644 index 0000000..745c872 --- /dev/null +++ b/voxelman/the_tower_gles2/project.pandemonium @@ -0,0 +1,62 @@ +; Engine configuration file. +; It's best edited using the editor UI and not directly, +; since the parameters that go here are not all obvious. +; +; Format: +; [section] ; section goes between [] +; param=value ; assign values to parameters + +config_version=4 + +_global_script_classes=[ ] +_global_script_class_icons={ +} + +[application] + +config/name="The Tower" +config/description="A really simple (and visually strange) demonstration project for Voxelman." +run/main_scene="res://scenes/Main.tscn" +config/icon="res://icon.png" + +[display] + +window/size/fullscreen=true + +[input] + +move_left={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":65,"physical_scancode":0,"unicode":0,"echo":false,"action_match_force_exact":false,"script":null) + ] +} +move_right={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":68,"physical_scancode":0,"unicode":0,"echo":false,"action_match_force_exact":false,"script":null) + ] +} +move_forward={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":87,"physical_scancode":0,"unicode":0,"echo":false,"action_match_force_exact":false,"script":null) + ] +} +move_backward={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":83,"physical_scancode":0,"unicode":0,"echo":false,"action_match_force_exact":false,"script":null) + ] +} +move_sprint={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777237,"physical_scancode":0,"unicode":0,"echo":false,"action_match_force_exact":false,"script":null) + ] +} +move_jump={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":32,"physical_scancode":0,"unicode":0,"echo":false,"action_match_force_exact":false,"script":null) + ] +} +restart={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":82,"physical_scancode":0,"unicode":0,"echo":false,"action_match_force_exact":false,"script":null) + ] +} diff --git a/voxelman/the_tower_gles2/scenes/Main.gd b/voxelman/the_tower_gles2/scenes/Main.gd new file mode 100644 index 0000000..53c77b5 --- /dev/null +++ b/voxelman/the_tower_gles2/scenes/Main.gd @@ -0,0 +1,34 @@ +extends Node + +export(Array, PackedScene) var levels + +var current_level_index : int = 0 + +var level : Node = null + +func _enter_tree(): + level = levels[current_level_index].instance() + add_child(level) + +func next_level(): + call_deferred("next") + +func next(): + level.queue_free() + remove_child(level) + current_level_index += 1 + + if current_level_index >= levels.size(): + current_level_index = 0 + + level = levels[current_level_index].instance() + add_child(level) + +func reload(): + call_deferred("reload_deferred") + +func reload_deferred(): + level.queue_free() + remove_child(level) + level = levels[current_level_index].instance() + add_child(level) diff --git a/voxelman/the_tower_gles2/scenes/Main.tscn b/voxelman/the_tower_gles2/scenes/Main.tscn new file mode 100644 index 0000000..e57102d --- /dev/null +++ b/voxelman/the_tower_gles2/scenes/Main.tscn @@ -0,0 +1,18 @@ +[gd_scene load_steps=13 format=3] + +[ext_resource path="res://scenes/Main.gd" type="Script" id=1] +[ext_resource path="res://levels/Level2.tscn" type="PackedScene" id=2] +[ext_resource path="res://levels/Level1.tscn" type="PackedScene" id=3] +[ext_resource path="res://levels/Level0.tscn" type="PackedScene" id=4] +[ext_resource path="res://levels/Level3.tscn" type="PackedScene" id=5] +[ext_resource path="res://levels/Level4.tscn" type="PackedScene" id=6] +[ext_resource path="res://levels/Level5.tscn" type="PackedScene" id=7] +[ext_resource path="res://levels/Level6.tscn" type="PackedScene" id=8] +[ext_resource path="res://levels/Level7.tscn" type="PackedScene" id=9] +[ext_resource path="res://levels/Level9.tscn" type="PackedScene" id=10] +[ext_resource path="res://levels/Level8.tscn" type="PackedScene" id=11] +[ext_resource path="res://levels/Level10.tscn" type="PackedScene" id=12] + +[node name="Main" type="Node"] +script = ExtResource( 1 ) +levels = [ ExtResource( 4 ), ExtResource( 3 ), ExtResource( 2 ), ExtResource( 5 ), ExtResource( 6 ), ExtResource( 7 ), ExtResource( 8 ), ExtResource( 9 ), ExtResource( 11 ), ExtResource( 10 ), ExtResource( 12 ) ] diff --git a/voxelman/the_tower_gles2/scripts/Ladder.gd b/voxelman/the_tower_gles2/scripts/Ladder.gd new file mode 100644 index 0000000..de0dfb5 --- /dev/null +++ b/voxelman/the_tower_gles2/scripts/Ladder.gd @@ -0,0 +1,15 @@ +extends Area + + +func _ready(): + connect("body_entered", self, "on_body_entered") + connect("body_exited", self, "on_body_exited") + +func on_body_entered(body): + if body.has_method("ladder_area_entered"): + body.ladder_area_entered(self) + + +func on_body_exited(body): + if body.has_method("ladder_area_exited"): + body.ladder_area_exited(self) diff --git a/voxelman/the_tower_gles2/scripts/exit_portal.gd b/voxelman/the_tower_gles2/scripts/exit_portal.gd new file mode 100644 index 0000000..2f7c6c8 --- /dev/null +++ b/voxelman/the_tower_gles2/scripts/exit_portal.gd @@ -0,0 +1,16 @@ +extends Area + + +func _ready(): + connect("body_entered", self, "on_body_entered") + +func on_body_entered(body): + if body.has_method("is_player"): + if body.is_player(): + var parent : Node = get_parent() + while parent != null: + if parent.has_method("next_level"): + parent.next_level() + return + parent = parent.get_parent() + diff --git a/voxelman/the_tower_gles2/sounds/edited/README.txt b/voxelman/the_tower_gles2/sounds/edited/README.txt new file mode 100644 index 0000000..699453c --- /dev/null +++ b/voxelman/the_tower_gles2/sounds/edited/README.txt @@ -0,0 +1,32 @@ +Author: +Jute +(Submitted by qubodup) +Thursday, February 11, 2010 - 02:27 +Art Type: +Sound Effect +Tags: +snow +step +walk +walking +movement +dirt +Wood +water +wet +footstep +foot +run +Action +RPG +Fantasy +Other +License(s): +GPL 3.0 +GPL 2.0 + + +These sounds were made by Jute for DungeonHack. They are based on sounds from pdsounds.org. + + +https://opengameart.org/content/foot-walking-step-sounds-on-stone-water-snow-wood-and-dirt diff --git a/voxelman/the_tower_gles2/sounds/edited/stepdirt_1.wav b/voxelman/the_tower_gles2/sounds/edited/stepdirt_1.wav new file mode 100644 index 0000000000000000000000000000000000000000..af0c999cf903f5c0644ae14c85ed49a290685ab0 GIT binary patch literal 22586 zcmW(-1$Y}tvs`9LhB$T{M#td`v%}2H%*@Qp%nTQ1rVG=BFAPo`FePS^w7jqW_vzb2 zmKJ7udV0F6YSf{5lO`3r5k%MeT^bJ=J*iLtK@cQC5sgj~M8G+UV2A)>Q2$B&r*$QW z&rWf|?^sTPQ;;Z#^HgUN@znX{kVGTmsuSxxaS9RriR#2}ryB9naT9?=E8;Fb4&>ilpXIIW4BxL3Br68||LoR&luJ`sq;&OZDVMnn*nQ=Z68tS6Qb?eLr^ zq9QSyC`ovoM^3ual_*V&Bz`#~h;%1Ep*g?t*+-`iamk5xcw(y4(RqpgGo8nHna(Ds zld}|m|LZJ6Tl)~(oME_T0?~q);Y6TKMTx>hZ6b)QL4*@MiD<`hzB@OZg-&f^pQAa= zooRUHdS{K(+lg}~I9<`#c}@_~iD-g0Rv_x(9NjqpOH?O55f9LU@kC2PcP`<%t%zyF zd15Fr7#3-W_br_{#0=sVKAB6La+2_rRNQSZtTxrjaVSE9T{k)hoisa?Smbmh=G(=H zQbayjqZqLVb{*p!BK~p)5p`kLP@*X@2$m^LZg3ttJDhdSdFPblbz+?D&Mt>?D&Vge zwCq3ooHNBqbOtzkoafGI9G{&bL;(7-6rYzuTOT=>ox?Fg{Z+7jJ}woU&~EbHUj}%pr;s?THk}gSLz%200vYjo3?s zkavh<@R7nqb66%9Q5#kyi1y?wr@OP<*@>~ZVHZN*r=m66oUw$2(62fK505BBOd<;q2Z=wW93?*5yPW{Xhx0BvQDh~@MFtS&+=uNDfpU=MHZnICw zOVlfBHKkB5h>Dh9-D;lFf7rU|&|_&s&Jb$`-VeGLI3`ztppu~zLXyKu<(Bh&3+Nr( zS5^YM%8chrK=;rKp2wb-+;nEXP>d-cy_RY_S224^IIHB-;$y{dH&IHs$I6$LIYI}S zcZY-?4(c8@UL328*7oXDW`Ue2|7JDZ=}(k%CewAuj(je97yHop=7i8e+$_Zm3Jauz zKLoxHp6=NYcta5ao9AjBGOWPud>ad<=Nno)wD6-cbxXL435DO~osegLUNO((;5biv zPbp;$Qn2JSvkIPGwWe8J&({FEgiwH1>lqp4%>U69SZSu6&*e zp5VYLuC4ATavjAlABA=2xvvIy4_X(xJlBWNg~1m>I|SDcDI0V%ps}lzr+_Opz;+J| zd=(fN&@iB3P`;pop+R}Nhb;)76go1rS;)5B?m&0&+kmIJCWX*>jIitZ(!!K*D&%y? z%0M}=cRcN{rGHp*n&JGg8$^+?}-Z5rD)eS zu8nw-QTSkHA@hsgPA_Ezc8;)~%PT$RDWNX+f$BkRvQOFl?Wg8*r=Weu-fzA(OB?6S z5M!KqN8ezSHRc+Q-c*06mGTetpU8>Msh3qWdr$hp%v|a9GDFhuW=u_8n--B;KV@)Q zV5&FuUh1jTDwwHs`kJg08B4OuX5P)3n{hvLe#Ys{m`s0$JM&?BgA6&NUB-lrS?Lk! zrP2?jO-~<@UL`|LAC}Q4ZA!+xw3F!#Q~RftNDfZjkyIyT{~so~W5U(M%-GKH*>M9C zswI~DV_~gIRo(hy#2O=wdBz~)x>41vYWl6OR%1KIDq@v1Z<(9)S!M-& zrSVer==1%N>OfxwRr7Vl{WblAx<&7!?l)*X%e3@s=50ODSgEexJ|w<@P@D{>(1ut&sgs&djWQIRV+-a%69L-z?w1 z{u%yQwTYUfdDL9`aeuH@(Z5h#>5K7C^oOa0_DJ>ni}{D<9L#Q;F(zYK>i4vlDPz*! zrKF`^NX|~_`Nv8U6W9Je9bYJMdR%zIreA98pr8GI75iE0*MgtZe+`Wt9yd3xPJE4@ z!mpsO_r5*+oF2X5OZ%_4qFa9J5k2JF(a-GHmmj$=?>?0Hoc%HU%e&8WqI-Th6Yc%N ze$Df3}`#=ec69eecG{a>$s)r!3tJ34N8T$}idaXsUo z#f8Mj##M-yVv}RPeE;&}$G6il)4wkH*6GXS=*Ul}KRNF=f7tS_@P{k!9(-8-ZuN(t zcdy@nd*^*W>3zNrOWt?66mv-OIeVzP$MNI7n1mSq$JX!ne_r`fE%x!x zz_>lXYQ(9(D#ZuHg(M7#{}$(o9~bM7JrNra*CK99+}F56aSh|g#dSmLrzez8_?Y-K zab;rZ-_;XFCAN%TlF&VVb3&hl9*JEOpC`sA_WIracbPx+euw|L^E=>ArR42NPU@kQ z@oA+}UneIf1^kXkER+x#Um~Gid|-kcUo*a3T#2~uu@hpI*z{O2E-L^C3AYDJZ#SQu^=k-_sMR#Nmlk6Wb>qOw3G3NJvDxRwdks zACQnc;bh{@#JPVu{F$6IGO2p9lsq6MCV5I~T1v^ZW2t4*My2*n9iCD+rDF2%1nA4}=^1ETIPfjUUf7<{z<-xT>7NS=?y; z441*J#C21c8O#>?EbXD&(oytddI@7P)wo4mQGOf0l27K}@$dPLLQ`Rc*j-#HHINQV ztt5{WBSwpVi=8D?ROE3|BYB{7LOL&oNtr^Xct_|V^%N_~)1>cmb@{a1N^UL}l{?9W zbc9gy0{};S6o|_5w0f6U#>#RZ{?NTOmWM+{6<_OZV+Y) zYxuW(DtCrY;%@N;`Nn(}_nZ60z2Rf{PGWvBL!2%CBeoO&h)cxrQmE8S3X}SX9mTdn zfN+8D%;yt6^ZCTDLVNMI@Jm=EG!!$1c2bb^mz-ZNsn~LB7wg*S?&_ZA>ELPO3Gw7| z|8ccfIw-lN`qC2g{}Ef5o5t>8->`q!d+ZN(G`p64!hU5BaCbS5uf~t!UUNg)3+x-_ z6?2Ih%+zMS(@*IIbQ-;lenK~=|DlFZ`6!86Pff@8{-BysU8p_8VM1^$dx5>nHta#p zey1q0#i>iwK*g}msYu)>T9Phm2SwBW&=2YD49Q$!7SI9APihIBLOrHe(_5GTrZ!ue z>B1UxAiJGD&kUvKGl%G{jLhsr25^z7$3~)^tI+0=Y$Z0D31t4EXHd1NBq9cN!yjj$ zGu|1BTH>h_Nw7pE;tHywM7xCZ!g_5jH)oigj3Gu1y^$WFwbf3jPt^X@0bRSeNXFc4McWGYPHO;mj%-(J-v9qk}wr)k+L3W}&%)V|l^jH`Xha@UeS1>%jRUGkafyzWjod& zry8nUAFAmX=P2r^c}|$q$GL9jcjnn~_6Yl?-NRmLm#`b#kF31*d@IaeXwmj!E7odc zEwNI~eAY(vbhoKmlP%SrX&-e0oeZZ5YVasjc&Z(5Z?PBR>bZ77{QJaOZsoUBbEjF> z`o}y08>UzftZmjlE62=j{byR{JnM$F9d*=LSZgz?)(xotEvFnolKsg*>MC`bno2*S zp3xO(i+)5`VqVdCnbPzs`WdBBzbJuTK_8%NFfEvF%xvZ_W*pOq8Ody8&M`&UVr&}w zmOaO9<#O?P_!usoYswAcF2mQm!Pg_%mTVGYLS3dNGn4L5x1kHuOX%tJZ~7ZOp6Sip zVD`g1=P<9C35$3TuVl!Y*N@@Gq`;ga~?5Xf5Uy)5WLa zaA}C-l`QF)d_bO~j8V3_M!CkjYr2CyY3{#0hdtj>Q_k~r@}#=s-9z0=+*z)Q?guWz zb=Gyy)zj6^^-X!IEK>$6t&}{<33;}BNE$8OL6mDO78k3FdBg=`74e}sK)fr~759mh zI9*H=)`=`)TOF~MG(fB>jSxenhGLq?h{y5yGjWvIUCJ$GOBbaMatZmAJXJ2J2+CXK zm2%s)&9%rK-cPpN^?o4-#dzE{Nn{&T(t##FM6>=R{7AxQ6M{=rEO`a{u@&w5v z?~qt|hV)VDECtI;rH6>$3lveIU0am)u0*Au%dZS}Y05ZPr0b+>tjp&*`HKr zbMk8rGWB!J)knbX-aL4%k+ym|{ zJDl6g)#5Mk!!TyW#OuORF+;d0#tHkxpTb6QfskLkj}@^mzX4u!mw(24u@c_leR#h> z=q@zSG@@sJ_7K}1M{RZ{OR^2v(@Zcs zf=Ob65o1@#MenCt(I=?(bQk&~-4%X*h}GG2t~&pT_w%7bgiuLnEu0lj!K0oC zWzqL*{2yMyr}KoXLVIC|@EUCz!1v{2xfre{SBv|~zGOM>IXjy3v-3HF9mKt7XLG;V zIowY+n45ubbFp4Fg!Qqx*@NtBCNJBV>C7CaztRJ+UbLZi(#7d?>IhYfsz}9=DdZLM z1385}K;|L)k`IYuPJc4D`)GuXClY1Ym1?0?KvraP0H`AQ$9GwBcX9%c%&o^8lZK|E*Ju&LV zd6{SVCtNB1GB=se;7;-)|AHs@1U@%^i^@+QTloKeaF ze`%{YN^2!U$%`xR%XyR=@>lu2{8}C+_mJO7Yo&#V8DY{c@ut{FyeF0v&x?{c6*itP z28jvc3~{VviG+MY8YJgNoM|gRl`qPbl;*hGdF3Rc-U8)g6?OoE$$ZX=kB%0G)uZ!_e0kZceq<~e|FFE4EN0O zEXK2@dFFcddv1A>Jqe!RfVUo3z;TZh@WfL-Al6eQpdZ$jjqVJ0k}J1+y6X-i?hn^I z*Ed&h*Hc$R*A6`WuIrpD%@yJr=-RBjQ9Me2MV55wpzs!zgCLz3Hi>QEt*PP)DMOkr zUzJA4dF2yw2l*rN@(5*(Lb{G9K4qdZRe7N7Q~rTfA1RBJwk}->aD7w)F|xm;97z)c zq@UttvAWbqS|DA(ShSNlm!aHsi=OTQvjS!YE(<&rcqPyX@CF?4Ecb-C8FznI7uOco z5LXjdj z?@BWlt4vZN~hTfQ&dky=O*(jRfA*g!lW+!EYEJz)Xny1+l--TX;D8FB0w zH<#DBG^`7ih0FYMA-C`pIfRW2!X?f@EwKQ{4&i{%SBU3N@NM~@++(gYcaW>Xz2tf! zgK}~0IfC1Qd;BZZ61JmO=_8#Hmr7s7tCB2zMV>N8$`IQ~@5IW|eQ}H!DP9%^pdGP% z5`Tmzg^O4_V)&Q*4aBFN{9*ndK1e7fT*F)!Fdsq?87>Lwg3S*Uy7OQ7&)jmpF(>iY zuxjLEOxR_3$htTIy4_2nC`NzT$wDSa3{Evu8&BPAkAhDC!67Q;rMZ_;cUh%xpTr`D4Vt>2uQF^6tV$~Fr?1nyX&?2Nsz9ZZU&$Hd-(*v=E}25SBc>1vxu4iaHX}o* zTVzM7D0Q6LLJ@QvRg4a$)2Q#%FseCqncPlRA|0Y08Ap62$B_@I0n|adBCNENF3(({ zD=_!yp-dXRf+>%cuQoH9slqI0#xmQPLrj0B9V);?dMSMb>(z9+FS6yy^ex&;mqCl~ zF&a~d{eY}^A=+LC`Evza+m)%xEM?l`ULA0C1*ST~Gnw>HdI#=Oht5ZTpkAV#t5G@D zr>>AM$Y{bQGQjW1sN%NUukD7wF*2;$_H!%S;_N_s87j+bs4XX>{_&!2IAIO34q3x3 z#y(+nunBuPuDEKCwr}CQBd9=r+BZ$rJWk!h%SH^yX6dVW;zj0 zeWxZkz9Y^V$9BTOtTiB(feZUWyd{>9qsb^#xqGPP)OFbNDYckNpl(tf=z_G1c|*Tq z9xyG~VZbS-vFS_%dypa7lc*NfFkhHdx*Agtyv+q%IgT1km7omrB(jzMWMTZk=4k5iD+=7^@!eJ_deRc z?Z@^7RBOX+)1vGY>$jE1cH1NEHn!rtwD&usz*IhWT*L?GjdL7)-eho&qnrcCJa(We zuZB!yneDZM?d|p-YrOr{nq+^phS`^`%JwqLwE9?Yt)kWn>z7&1x@9^hV^y_OE7WcX z94QL?<1}I=c*Huyad4T#QGad+L;ArH!MGO1EE+;QAZ`<9h@IeQOM<(-2WE1q)5t06 zJhgY&YwZab!Rhu^yB}Ih*#Y)HmdiekdiT5)VDGR}t!WmCdUJ%Gjk>oVs@y@SdNtIb z8?BR8HEWE;1EKO*3#^KGU*4K%)v^{_9j(z;IjfNM(fnj?GPjv+%sFNebE=uwoNERF zFO$rEK+OEcVWWj%>8JIH`aS)yzRnn7)H1`&CT1@4p>YVfct>L*@V1dgXQQT3z;GF9 zdY1lKf2v>9hw9z+W7;O|mwFqo<*KSaR$FRCw53{4ZKpO&+o+A!ZfF;@V4cxh=`C=y z(bKdXt)bRgyP`f+_ozG60FBko;p|R&d3}dIO`ol|)w}AlzCy3BS1^9+uYmX6HhKW< zJFlYMcD`Z;|F+Bs7{ ziu1H(t*w?<6a4S}qH6g!sVmj{cm=D9TH9aMU(;X1f6RZ& zpXT?dF141LS8c48Q0uD=)xK&SwHN+wqDpE-HPc^I-RXbsPw=_H2GsOT_g?W%^IrD8 z^5*h&^X>3u_;UNV`p@_kwX8Y@E%>IUs)e;uT05<&_CfnsTcG!Zy_#VRCTi={F6vAF zV*f~g9=yKz>iAQ9yZv4KvHrdOKmN`Bi+JD4Z~MCWY5xL$S^qYF1OGk$I4}aw{bSX_ z>TdLHwc1f#sJ(KX))-*jIk-(lZCAB+2s_ec5n`KRH& zYy4l)*B}08{*(UI{+0eQ{&@dO|3I~;x&du&q1IJ@_;2`U`LhIfoN)*Iu^?-P7U-haGc8y^@L%`+^6mHS^$qo{ z@wM}P^qugX^l$QS#5IAMrHWdz8mpdDU#Z*G!|FKrf=3NgV_>TYb*&nu7FS>U*ZJ%D z`(p&#`Ahmqe=1r#+vo8~zP;YP-a+2c-m%_gX!lv~dhfrm!c}i$?@YA67i{sbx4LhI z?~kv&e~AB;|GGb1EvC*@ENgJtk&{k+AFfVg!wY9&r)>C+gNR`@?e$f z!8`88VOwKO$H{iVJH5_t}-x}rAGT4Fv{))yh}RKRRLjhTL2qjVn8 zpqqXLG2^vfNxz`e`W*eB_Lp8xyNP?O)1IoswEJow?Y-I>%vVLNr+N!Bwj-X~9xXYc zhG_$|5WOGbpC8fZk*;b@_1{`0y`Vk`GwY0A1K;FEG(G5bzvesw$|!dT5z zCu{rFNUbW`7^1FMYpVOz>gpyn-XEo2_UBS*%&F0ciQ{nOR~M^${XuGf{|Em}e+ukT zMIC{j$y!&fhPGDARO@J?)sygu#u$mo>LYwpKZM_!gL*lm zv@z;`m@i(Wp%|1w8-Mgf{g}Q_pN`i`V5IByZTbwncIv0}!NvlktGUel+k9^hHIJI* z%>ibVIm8@@RiwE&!qkmi=3HYBRtDbah6w#YOVk=^y|qwSs}bzGS-XPK%CA?{JLw^M zlx}IoVc%|85!UHr^&9#;tS9sJpZILHK1O@5g&>|))7EJNu`*27Zfob^)=%p`GNm@as4tk~%r4-L=9x+8BV%c1Ypa13Vdt}RL!~p{*$o_b zsB_W&VHdL7Vs%cp=2=&)>DFaywsp>Giq$p%Sg;4zG{L9Mt(kZ?9Irjr5i8m{Yh~hy zM{Wir+={cVTYl@P^%>atb)eeEu}TlK?wO`J0qy8&t~M*0-OMcD?4nu9oNewf-Frkqi7Ue>iTx1e3J^udP6nPnaihuO8+sjN4uF zCGhF`$PQmwZINfhBO|H}jZZ$Og+n-%omSBH^o1_$mtELdYd^uuXIDkOxzV`-mDVAr zs?!eGeS0ShSoCS)65&H;okC@^JS&Q7O6j1`-yO9CKLS1wLYNQo-?m^^1k;sx>BReWjdWl9P3+yU}I6w@?ryrb? z&N3*yHajU`^avscxcV>00H;w2dDRG_3$dA)NUR~I5;IY+%!8)s1hIlpk*C%tLy$QJ z;!a1PIm<%?5s#fR$fWDyuBP(>*!*hbV5^->Xn_KO`xl48sSk8u8N_a)6Dg9NNRBK) zegs>1fp|r%#xq)>e~!}@imMn{p(E~Jk<3ExR}o9WXUxL4lZmR(a!EvGur3RTHbhO5 z03vsaYyeJZDb)>#+ZAdGU5P#c?5+zPNUx>pP$$VDWO*_j7TkgMS0;)O@4yQEa_&RV z*BdZ4-hbK)hmT~DBu3&g#5k*&Z^#*ph#b=>*?oc=KN zg?d7T(H7O4?o3~yFVIDpLQE&7Ex3V-Oc-O(G2pBA(=+kiVpKamdJI#IDb6I&cj>A0 zN#yt`=w(@;hAkKxm0ARNsy57ZR7EeCJE#O+Gf%;xEkhM0F+t1*dNcUQPN*Qt)8TYo zx*a_Zyv7T9EHj=FS&1D5Y;OTO85~7pAd(tbh$XnnLDjW|z5!fP#xpn^Tk(DpJ%)Zm zN7Eyj5x@oy;M@(&K4t~8kr@MRQ!OBwIrJqkBn?q(6{2k*y3^^!OcZ0GT@HARXUsgH zx{JVK{9@LzZP=x3b3F4KvmRH^Wm+=BP_>m}LYe2NoA2RyRhV!fli!)k>|QoE@LM;h zvl;A1b_ZJg8jQ&^`XXJ0&P|7*N>!;i%1iyE#-du}!St18BAE}U!ROK&=$>fzM0yRq z7j^nh`XJp8KB7~8>H&2Ttg#H_^%6aqsm~k%|FRIcrw3QAqC0@0`G9jqfpM%rji+)^ ztEkG+Caaq z!TV-_1FcLI!yQ%9CR0g;${-`DAgUKt6>S?xy+?cM(+aSNK>99FVmI}LTm+x2hxyco z3_~TDN*qVEIRRBu5?H{&WG!+e8HMj%WLZ)`ZJ(d)4UTXE*?` zV$UyfEtyE}CfAW2Fr(U_2M5Sv)NAq$ITKaqUCi?cM5a(;1M1G@&_fO+%3E*u&m_-JMZn2_91%__~57ZWyH(Ih)GqT z0{)D;6xvx-q&*Oyb|GR)L^WJ{&pC{`ybV6BhKOC#$>W%IHE@iZ!KZqic<3^Vp#^1$ zNGLWx%C02zl_7{7f-50h03}{#LIq~*+FsF0udcY6n+O-|8 zy~^nV1Yj|=zBj>zKE|CdIVFf>=skDCHo+K~t3(*_-l^hb*wgGPc7*-jYHr6_8^CG? zgD*YcG(&B@5cPC-RMtiC7w;t4$M6KszJuC%5P0IIP*pXw3Rrcl(pGKM(DSff=CUPJ z?x*Z*`zDcej68z4L}Sw7!QmyXmh#|Wkv#X=#T7U8*KZ>>;x;9vJ5i;ZU1F{ zF^gFFpuVeXDd^9AXa{DQi_FGmGvt=_pz0Z8zAzt}&G7vJjO2b~Znc4Lq~N?q<{oGb zTAPab#Mo}MH>Mgbjr+y{BND3P+2%;xWe75;GI)B15oCTf81uW4U_3J(8F!4=u;*{% zJzDp~I1VMzUj}bn(AT1pZiS<*eh6qm7;H2g8S*rI-y3;yRilm(4rNbqoIThWYy4+? zH_E~uZ7^0P&6Z}m;YQAxW#l#U{QubP2Dkqdxf)}YfakQf0@2G5U@|SOZq|5fK77BY zm1Y*QE(1qeWxj(|H<*RYp2$GABEPectBtf;!1Fn)y>$o~>1e1eMxf6v(K87?f5eD^ z|BN;o8pDhu#zVt40!$L4=f|Dk=;c`azu4G>e0e86-)wZkCjmxbJ_I^j-s~dWPp2rXj$?)ook)YQ!@)`S}xwvhd#BmOm$ua66myJM+@*=bC34gj} zE;MhW-^VawhjHx0xXpr1KbY&xIaXz$cc(B1k6N3pq41BN$m{E4ypu3P9>crVL#x>m z<5JM5f}@ww0AslTqjK8dpg!pVpWY1*+6b$)G7I3U>&8}NAjYl|MzjM){{nm>&3Iwl zHBK3;;UnqB2KZY`#FjorWn&NKPA^m|lQDk|pwQQiMLehqzo=qXGq)P^f!|qr6L`-jD zQP2p(95}Cs8zG1b=WxvfV;e?%r*R8<9}P8BZuqy$yaemt#M5=7HZ0W>C}Na(-^f5E zwiGdCxshpvAeIb*{*5vB!72&xmWqfT?GXdInZr?!Ofrk&n$yMyJgKVj0E(jh`b#}i zcj2iwjUmt?>84^ySQoCCuTWdIGPk1@?{G#heH9SFA^HON8wtD5fQ_P!0`T{4z$*Ko zDm{saR2*?I!un$V2c(lR7h=o?qIdZX7HzB!uNjTwZ=)nC*xT^HYF01n9b$9}Rv^tP zY{yy}>a{1R=4Jv#?G8OoK`RNB;}x8})|`)OcevRXHPvc!ubF{*?FsI&175ZlarXdX z{8EfoOLGC@;Tg=?E%55I@WQQ_n@tc|%b6chi`qsg{Cqqj;z={x6w%l6=xsY-xAhP! zDk4rqSQk;_wZ_v<sU6Zl8r# z%C>bo$4;|9*@EM@t2>{-K}@q>qb7Zb)mp}EIEpp90oLiaRyTZ;0nGa*Fz|c!Mzl7{ zZh_Xkvx_+2QG*)LY%%J2gKo__&K=+hdhP1% z_Dhj+C1@Iw_?KKF^e!rRo!{71_7@nB3}8T!S|_a)5ZvRwzP{Nx(b;>m!?QaB+Y~jw z7N;LK;;obRdTK4>68?cM^pZQTYfiv@_sziHp3*^;1Iq@b2Nnq$7c?WNYC!vdyWp#1 zq;+yX0SZlK1shLj#3B8X_Q=~cr+4Op^jzutQ|F{kOR1U?lKlHm=I?xeLVvgVeLKPY z9q@ZuVq`*0;*t2w-`5iK-{<2)6C1}?O5XPSMB0C;4>B^+jI48+8-P--1bRIWI>lk; z0E5wcs$TCY?|WYf|4yTd)dY3f6uGMy=w7Kj3-kv}@O<+SP&lMZlcbZvEb%ILh0g^( zaD=l8`{d%B6x8qq*xS?=Hix>z+@+pC>#+b_^Gnw+`L=RJye8xHA zsuqoX#4qHs`6lERda^T%S;y26Msqu)FnS>Wmfp)hrDFJpOb6ispD1|Y!fa%3Nd@^3WrR3Lej-;@D#~N!Htt@^7SDBMv8Rrk%+2OLoBMf4lUx;p0ySck1)C5FO-5@^rVsN=!-$MQg{x_tFdyA*E)IzS${b5Twh3(S% z9QBs(h&RByIcG!mkF3PZkC`Vk`eoEeznX4l%*oKQN@T6dj>;~cT_$^d*4V5T+5Iyc zWu40?npHAG%Xpl2E;CPt=>3+}L9OkZVZP9+k{#`8OglOj)#_%{UK_!(7NHMO6Y0_P z8mcBL%bLVYG8uEfGI9e=C5&VK9Q~{RlU`hnv>zGWC^zA-Tj?zB5!;{d$c6E__!&YC zu>kis|CZ^_Uu4fg!FNMC$p?t()Es&t>a)t!aLP-bCFhaz$tb5G5o>j{Pgz-(Zk{rG zYH6B~6YXuBVPyVE%}x(Yt&u(@H6^WF%I?(0$?a2=~>(O&93fdH0q`k?~bMkbIK=yuFft|`ArJRsFms<@iD zDtNkk9tVC8s2$WVV72Es^e_#imU3tDf>@TX%zNpA+;>XhzEM5+)(p>=V(RgC=(gN# zx-~VLF3X$5Kh8SfU^T%UAEpYE^XYBm zJ*Esjj6K1;1h!C#I!(3!Cicxf=7d0(I>bz|2&=oj(hRgqSd25>xlSSi?C~3K@3ktL(~YKjxb|F|q_)$Ks$Yzf`avt&IBs9J9$|On zZs%|Nw)4Wi`D3_pTgdhS_wT}o21_Eu5y@rw9L3uJ!v zM9L4Le;Eta1}6~0QGN?Q5c;c`{A588OmVL0hcarR9HQivyDP=y!OBOuo@+FUkM^!* z?jZMHo_nq|_atSJD+o%ZI?%sw7EbW%x%^FU&bIzROvU6u0E52%h%A>U(~(yiF9G{JplCUJY&Rh*ZN=O%C~ z`6hgT5G-sL_CbrA14Ruj_7OyJy3ko1Dl`*Y39p3z?SCl8x8mD!?YRByHMR)Un4h6X zp28ev@-q{mdrW{DWIg)Sj5VPKX$GzPMm7wpn4V=py^T1Ras zi%|cN?Wh+(&YsZs>3vK=rX72TdBf&sS91HHQEqeow?3gpg6&HUfW}zMwam$ z`M_V$vD_!;P*ccj)E+V(k$E|No_b67Lu8&w4Wf(ES-=_lF(2u1(4|~~esUmt0(%|= z*vbIfnhZ2`06heI5^j?F=xkD8!l_s~5W1LA)J^#COw7`b>@wy#MuO#9u-Q=S>|nnz z+gK0l;*PPCxN_V@t{-=ms{mc-Kdi|0VP~~^4+8FYW3rw^Hx7{?CA%J4s*BiZ@t9Mg`;CF>_bE4y%fvpJ(iq2zd}l5XAC6dD2fJMAbDuGq zv$%C^C|8Cp$?j(ILandPhP}bvXA?My)40{_ z0?uY~pjnS*FTrENn6d0NI+nRjZ)EZ?)0l%mjc)@xF2Tgphv-IhFw=q_#8jk7W;fN0 z`IowkNHvPP%oJqz18MvpmRgq_LcJh2P}Ql`WIwVYbgg&Ha4T9bW31Ocf}5MKAyd#p zQL$AtT~-IHFA%wh!2ddsd&y(KZ|Bgx=mGHZPwYIdBQ(Vwh1tSsp(<3OWBDlF;<|Ev zj_1Ppw`@6nEt||$U{`RjnO59PrZv}(Da$owez1W|RrU=%jOha(x&e(-IqE+$A2oxl zNJWvYs7mB;sw;Vc+CWyOCF&kMg$ifpPzrOH`V0*BJh0pgIM&eLs0^UC*}!I_p!hL~ zLgYH4AN0FZoB^mR2BJ3qZDv_v)?WLa)epNZZesuY97O#l*k!WTX@Q;lxA6-CRlzhI zCS!>N@*?q#OeD%vW5~DEZ8D11$)WUE>IKxxr7#0K!sp8}v*>r`=I*NcIB zf5IFfnI`mY`V-Zft_+<~2xX&R<(Q&i8g^ioKE%F}DZq0VVn4}l@(6hXwu~m@$!Ziu zjijEDy{V&QJ!%zH&jaykRq`rXoBV(8q2w(iT*Y`?;L8fhd>?4J_Xypv(&Q3?pcV`g#^e2e|I_FR<;7&7 z3Y4s+v6HK>ct=bU|B~8B1Ee0(AgPMfOR6Z1llozA)lNy35~Z4Qgj`3?CpVS@<&((y zIw^&rWZbPJDNk^mhca`DA}c@T`SL`0iabc3DUX+bO1~veswADn-iYhadma%9X}lPZ zT@c^In&KyDi0_FXpozaIOcHJA`5S?~om(y)zyKkhQQWbfOd|2k896b#s?G#tA ztBCukYn?j}^sbZLojr%#XFT8BF&@g3=E?2x;z;*MoE5B=$GG5s#@0Tmd<>l$}0=bIPO&Jc=?kG7%o{t!~LMka2 zk)O$3p<=b1y5r>pxedyPSP^0?o-^145|TDsGq z!DXQA&34Umhqx)vboUC6hzg)1`qkI-0=nJ}o;dep&vo}2&pY=i^!t*>LiQZv?gLxY z^o(^k@{D&+_gr>Q^}KK=qJ=fx`&?gKgR#G&0(yQC8tDc~X{DG_7pmt5N>k;N9F0C! zlJ`mXpvJx|U6YPs+}le&@r`&<7aOD8a@ zXR+($t9VYThy5Dcq%>(dl(5mFElv=5jJ6_85MM%PIu07k>f#CLRF?>8*hTRi3h|>t z6=9MPE))^oVn5w#DAk97qq#m@epFMZ*>J@A=^V?Q;EHo&Q9-_B zYp@nG9X#PxTBlpnEYk&wzdiI2@PLzm#=9o|PR(d6!AKXz4RRDQ#B>kKU zr{_>H6pNL2F8K#p#$a+B7@%_CJu5?9x0tw0WD+8nqSoXHvKJ|Vjc5-pHXOfn@fxh_ zV$w%6AomhIi1Xmm=Z8HLEXrG80ad}avwoC!U~?Mq=A!0&;E9H=7-#ht`ZqmI9|-(299a7dp!;L7 z=e8YCsuAWWC=C_?rQTxR0CIH#2v=LPx_JSNKqaFjuJ?m`(DiQk>l0Axa=_+ufOMV$ z&Uh2(sSO;GHNODUy9(rRE6~YHMk$kqUa=BT!!Wa{`3LysGouhtv=KlbpPDO7%8Eg+ z?*Q#@X}-mEQAR1Cshgn%ih@!oO0NY(zpUO8+8qO$r{!9V+Ex3k_Qx?=bJVR+LuF~( zwNm;CEx-O)%cVyEi}?+7@jUQP7SFzg*3AbZe$E(Y1j4cn&HsQn?ge@r1uf(wXldF3 z!O7C{>esb!{l3-)>Xt3~XyD>waHr~eDJX{|=njLRTP&`3ghnw+Ux++F0Iu>)Evb3c z4q6#)wN?{HRp_&NK;beK-!IW#YBRO_&}=Q%eyE|^5~zEcLN{1YEu=<5)wK@#tX#Om zX>GVh>SzA{ieXw&^e0R^sg2WU{W-KgA>e;XLcdfOtVTa*HCKS)SdG6IL348vOi&qM z#25Y_F<%cvw=3-TmoW!O|0E!#(|{b$1MAVmc&WdF6`KJG&!rF01+XL4^i+L>Ue`FR zFEXVIp&ig3YrD|nJK7KJi}npVrIXlm+FXm$bTv!mv?R4DR8SMNvanBXZHrb#E2H1l zK0(cy&)BTDFs|!Yjbg?$_(hbp#N22-z^s^PCc-~czymbJzRWXLE+~RGLC^CXYMnV& zHt^Ny<}m1B7egDXo1wr=e|+8349-axDNQT0PvmJQ8X5ZXRpOVJAH%k{f@Zlf*~tP73Zz_Itj*C&Cq zsfqcJA2|FdqXKNV85~;-__jwt>L-F*=mmah8Q7{V;AL9>|ID#5>z+ZKyH4MVd#;4$ z^#RaBmq8f8#z(L((YglSB@*6W53FJvjKcr8mwm=AjALmd6>6yt&~eqm+)LB*n^%m! zrfPIEbBvAPTSBbw=47isUgM#9s%-th(agFCM764Y$!cJSg4@gw8@UbMY^k?20`wrG zpg4jSF3H*IQ0lLZ1>fCTD001V|^3n$iN5{{igO>Tc*v? zTHxx!T7;Gdn#NLEbGY|SfufLW$5^CINpUdCX zx6qdxiq1m5I=+_BmJWtCw1ID=kHDu7p(B0k&G0JtwlcJ)ZGEkMoqg?n<$d{ly7xbT zvyZ*?e5Ut|Z?vzt|Cw*NzmR_gw7$=w#EZgHCaM*n^ws@URn31|ouUraBDELLum$MP zw4RtZr!WQ|^>O+aeI&HUy%A?dKrOc%BR35i34@HLOY;EglN8|9$xYi@M; ze+HxmkO>}~OFj5o2=EFKJjrzHwOQ1Xz}R%dY|R6&=?BldXhfJP@D9@$2dsV~-ZwP2 zVRpB}_sxyzm>rYh!F|EM492;e5R+38k85MK=!o^8F<9yeW+}@yAAlz)U}sum?fT#v z)`8i-1blyvJpk)mFRYKH?OOJ6@ccEb&d}Ajgl29e-YtdBeuFgyyx&al1D){MU*Jwl zfk!1R2OP`>FgKO)ls1U^FQCM41}1+4j%`*Hc*4)7WK9F37=gK64(nT2a}CypEm+?= zffX!ly37tx2);2rcwQSYE@Pn+IE*%M*q1#GYw%gr&(FYOxS@*s8!C+d zC;r9p3tBLme2pJ(`#^j~u5g3cik&i(iE%_P{lpSyuX6{#50(Jc z+A{p&)=#MJW?+{_eY=6pU|+@+M4~m&8LYs(+h~o#o{g#2E%cedu7eub+uq(T1?(jZ z8AMZC!f$zPf|?=`dbI+?9cL7NFYbT)TMA)^X9qHe7!PgCa_q3Y48_|oatARjYmH zp;x|xOlySmyGqsYcKv9_PD9qAWv8ImDSw+1`kUc$v2Z z_x)zngm=&qrgOwxF9YK2c5)h8jNfaTg>3rZAo?vSm;wO_-`y~)X)>zTF%K)Ig8FxCmXKlEZb#)RLXNCZY;-Lwnt*g;<(54W?%F0Qm=Dg z;h=qkTB6)Ngv)x8D`k%x+$%2IALp;f@9f%~rv}Ei?Jw~+xsdDP0^O!oaUbxwcIbtlzG8S5;S$7L6)X`^hF?(F?8CoUPsZ#Zt? zGg3w7NgLWwO0vj7cL2BeZd%uYI=&d+Up{{EORm|yPiyC+A3x!yyD_-_!q~@VsbH^5 z(R?>(*omGhK~_E)%HIin5kHTMxUSc5bEj{b0eXa9NUN27JT zi}R=B0eqOgDn<=0B&i^o-)(0vL6_i8$#FTswQ3=$;jCQi%Bj3M%WYDJTfC=a(Hn2j zOE1d>I~?`vptW|KUFaP^Tbt@NkhkEWZO*`p^^F$^hZqT=cr}XWV4m{j+3We);zipw zC}#aoqEm5CC*$evje6RbdoT$-Z=xN94}1oW>dn?eV+(Tc7gPDoLY?bNooG<%V$h&7 z#X?V{Mxj?!GhvH}fsC!FbeZ!PEWBJ0hf#dG=14%*zx zRSM^czpn?9M0NdJ1EB4`E z+z;9Li`m7yA50hTZ<7o2dpC4%6U6Hp^E55pZn9x%XW)SB#&s)$0nRk(=6N#**M1k0 zM%HpQ{=9Pcjq=8OHKvaKdfvn`+SKWK9bsBXKkCC%!#HybjBzYUHw)oR@8GW83}w5R zZ92dbZ)KbHsC>)m@gl~MplN5?n!_aPe5y~8rZfP^c36q#5J6@@2(owzec21%Hi*($Zrai-17LXL`TS~Hco?F&+&p3OO$JKj zFvhE)5Zl+7Dm;rb@rL%{8F^cMQFSDdGM$8$i1Ju2})h>p!{&g!HqVMY>sllQN3YDM1fn`hWx5UjIFeE35p>I^*;_VxkR`j&q1!@O4OI`+97 zK6tNgZ`$+z5YJ?-K1TvpDFo|oUyW}H3h!2Q(F*l5PS{GdP5s1(9;QRe(@!%tCo$Ge zQZK46RE_#tHK|YVq*kJ@E>o*jEp+_F)<|C|nLhL2RoCFJJOU}v0UzXGh=}{3@+XmB znhJq$A=|6)Z&pL_Yt~3cb18(?-|uViWuldTpf;*S=(qjheGS}u5{&OkwS@V>PR9Gm zJTLspmks4QfMnV+B(oNy)6Dn11jYUWM_I(4*3+VGs6`c!yj%Hn5mf9zc-SV0*hBa+ zm$u%Fvvmt|ypQ2kj={ei$4~n{>}zlM)Qq&zIf-x_X(NYar3Eu{I`i+$`|}tn(c fuwk+HO1GR~)=1v}w|X!uGn4lLUYGy;&td)rHQ+TI literal 0 HcmV?d00001 diff --git a/voxelman/the_tower_gles2/sounds/edited/stepdirt_1.wav.import b/voxelman/the_tower_gles2/sounds/edited/stepdirt_1.wav.import new file mode 100644 index 0000000..645cd43 --- /dev/null +++ b/voxelman/the_tower_gles2/sounds/edited/stepdirt_1.wav.import @@ -0,0 +1,23 @@ +[remap] + +importer="wav" +type="AudioStreamSample" +path="res://.import/stepdirt_1.wav-477ef04dfa836bd223c0f17f39122ed4.sample" + +[deps] + +source_file="res://sounds/edited/stepdirt_1.wav" +dest_files=[ "res://.import/stepdirt_1.wav-477ef04dfa836bd223c0f17f39122ed4.sample" ] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=0