système de sauvegarde, scène 3D de test sur la base astra et passage en forward+
This commit is contained in:
13
common/assets/materials/default_3d.tres
Normal file
13
common/assets/materials/default_3d.tres
Normal file
@@ -0,0 +1,13 @@
|
||||
[gd_resource type="StandardMaterial3D" format=3 uid="uid://dvvi1k5c5iowc"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://dlsx1mofjccib" path="res://common/assets/textures/3d_texture.png" id="1_cc1ni"]
|
||||
|
||||
[resource]
|
||||
diffuse_mode = 3
|
||||
specular_mode = 2
|
||||
albedo_texture = ExtResource("1_cc1ni")
|
||||
roughness = 0.0
|
||||
rim_tint = 0.48
|
||||
stencil_flags = 2
|
||||
stencil_reference = 5
|
||||
stencil_outline_thickness = 0.626
|
||||
9
common/assets/materials/glass_3d.tres
Normal file
9
common/assets/materials/glass_3d.tres
Normal file
@@ -0,0 +1,9 @@
|
||||
[gd_resource type="StandardMaterial3D" format=3 uid="uid://b5vlcdry8vtgi"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://dlsx1mofjccib" path="res://common/assets/textures/3d_texture.png" id="1_buts1"]
|
||||
|
||||
[resource]
|
||||
transparency = 1
|
||||
depth_draw_mode = 1
|
||||
albedo_color = Color(1, 1, 1, 0.79607844)
|
||||
albedo_texture = ExtResource("1_buts1")
|
||||
BIN
common/assets/textures/3d_texture.png
Normal file
BIN
common/assets/textures/3d_texture.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.1 KiB |
41
common/assets/textures/3d_texture.png.import
Normal file
41
common/assets/textures/3d_texture.png.import
Normal file
@@ -0,0 +1,41 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://dlsx1mofjccib"
|
||||
path.s3tc="res://.godot/imported/3d_texture.png-5d7cb2d23d37985e4dc0c0bd241d8e43.s3tc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://common/assets/textures/3d_texture.png"
|
||||
dest_files=["res://.godot/imported/3d_texture.png-5d7cb2d23d37985e4dc0c0bd241d8e43.s3tc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=true
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=0
|
||||
BIN
common/assets/textures/dither_texture.jpg
Normal file
BIN
common/assets/textures/dither_texture.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 170 KiB |
41
common/assets/textures/dither_texture.jpg.import
Normal file
41
common/assets/textures/dither_texture.jpg.import
Normal file
@@ -0,0 +1,41 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://dc8gajse5ti5t"
|
||||
path.s3tc="res://.godot/imported/dither_texture.jpg-29df728b3fc6c30c4db6300481aaf214.s3tc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://common/assets/textures/dither_texture.jpg"
|
||||
dest_files=["res://.godot/imported/dither_texture.jpg-29df728b3fc6c30c4db6300481aaf214.s3tc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=true
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=0
|
||||
@@ -3,7 +3,7 @@ extends Node
|
||||
const MIN_VOLUME = -60.
|
||||
const MAX_VOLUME = 24.
|
||||
|
||||
@onready var settings : SettingsData = GameInfo.game_data.settings
|
||||
@onready var settings : SettingsData = GameInfo.settings_data
|
||||
|
||||
@export var default_fade_time = 1.0
|
||||
|
||||
|
||||
@@ -3,14 +3,18 @@ class_name GameData
|
||||
|
||||
signal current_region_data_updated(p : RegionData)
|
||||
|
||||
@export var settings : SettingsData = SettingsData.new()
|
||||
|
||||
@export var current_run : RunData = null
|
||||
|
||||
@export var current_region_data : RegionData = null
|
||||
|
||||
@export var player_data : PlayerData = PlayerData.new()
|
||||
|
||||
@export var max_mutations_by_plant : int = 2
|
||||
|
||||
@export var dialogs_done : Array[String] = []
|
||||
|
||||
@export var actual_scene : Scene = null
|
||||
|
||||
func start_run():
|
||||
player_data.inventory.clear()
|
||||
current_run = RunData.new()
|
||||
@@ -29,3 +33,4 @@ func reset_all():
|
||||
func start_region(region_param : RegionParameter):
|
||||
current_region_data = RegionData.new(region_param)
|
||||
current_region_data_updated.emit(current_region_data)
|
||||
GameInfo.save_game_data()
|
||||
|
||||
@@ -92,6 +92,7 @@ func choose_next_run_point(run_point : RunPoint) -> RunPoint:
|
||||
if current_run_point:
|
||||
visited_run_points.append(current_run_point)
|
||||
current_run_point = run_point
|
||||
GameInfo.game_data.start_region(run_point.region_parameter)
|
||||
next_run_points = generate_next_run_points(current_run_point)
|
||||
return current_run_point
|
||||
|
||||
|
||||
@@ -30,8 +30,8 @@ func card_info() -> CardInfo:
|
||||
info.type_icon = TYPE_ICON
|
||||
|
||||
info.stats.append_array([
|
||||
CardStatInfo.new(tr("%d_GARDEN_POINTS") % region_parameter.objective, OBJECTIVE_ICON),
|
||||
CardStatInfo.new(tr("%d_CHARGES_AVAILABLE") % region_parameter.charges, CHARGE_ICON),
|
||||
CardStatInfo.new(str(region_parameter.objective), OBJECTIVE_ICON),
|
||||
CardStatInfo.new(str(region_parameter.charges), CHARGE_ICON),
|
||||
])
|
||||
|
||||
return info
|
||||
@@ -1,34 +1,73 @@
|
||||
extends Node
|
||||
|
||||
const SAVE_GAME_LOCATION = "res://stw_demo_save.tres"
|
||||
const SAVE_SETTINGS_LOCATION = "res://stw_settings.tres"
|
||||
|
||||
var game_loaded = false
|
||||
|
||||
signal game_data_updated(g : GameData)
|
||||
|
||||
var game_data : GameData :
|
||||
set(v):
|
||||
game_data = v
|
||||
game_data_updated.emit(v)
|
||||
set(v):
|
||||
game_data = v
|
||||
game_data_updated.emit(v)
|
||||
|
||||
var settings_data : SettingsData
|
||||
|
||||
func load_game_data() -> GameData:
|
||||
if ResourceLoader.exists(SAVE_GAME_LOCATION):
|
||||
game_loaded = true
|
||||
game_data = ResourceLoader.load(SAVE_GAME_LOCATION).duplicate_deep()
|
||||
else :
|
||||
game_data = GameData.new()
|
||||
save_game_data()
|
||||
|
||||
return game_data
|
||||
|
||||
func save_game_data():
|
||||
if game_data:
|
||||
ResourceSaver.save(game_data, SAVE_GAME_LOCATION)
|
||||
|
||||
func load_settings_data() -> SettingsData:
|
||||
if ResourceLoader.exists(SAVE_SETTINGS_LOCATION):
|
||||
print("settings exists")
|
||||
settings_data = ResourceLoader.load(SAVE_SETTINGS_LOCATION).duplicate_deep()
|
||||
else :
|
||||
settings_data = SettingsData.new()
|
||||
save_settings()
|
||||
|
||||
return settings_data
|
||||
|
||||
func save_settings():
|
||||
if settings_data:
|
||||
ResourceSaver.save(settings_data, SAVE_SETTINGS_LOCATION)
|
||||
|
||||
func restart_game_data():
|
||||
game_data = GameData.new()
|
||||
save_game_data()
|
||||
|
||||
func _init():
|
||||
if not game_data:
|
||||
game_data = GameData.new()
|
||||
update_language_settings(game_data.settings)
|
||||
update_video_settings(game_data.settings)
|
||||
game_data.settings.language_changed.connect(_on_settings_language_changed)
|
||||
game_data.settings.video_changed.connect(_on_settings_video_changed)
|
||||
load_game_data()
|
||||
load_settings_data()
|
||||
update_language_settings(settings_data)
|
||||
update_video_settings(settings_data)
|
||||
settings_data.language_changed.connect(_on_settings_language_changed)
|
||||
settings_data.video_changed.connect(_on_settings_video_changed)
|
||||
|
||||
|
||||
func _on_settings_video_changed(s : SettingsData):
|
||||
update_video_settings(s)
|
||||
update_video_settings(s)
|
||||
|
||||
func _on_settings_language_changed(s : SettingsData):
|
||||
update_language_settings(s)
|
||||
update_language_settings(s)
|
||||
|
||||
func update_language_settings(s : SettingsData):
|
||||
TranslationServer.set_locale(s.language)
|
||||
TranslationServer.set_locale(s.language)
|
||||
|
||||
func update_video_settings(s : SettingsData):
|
||||
DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_FULLSCREEN if s.full_screen else DisplayServer.WINDOW_MODE_WINDOWED)
|
||||
DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_FULLSCREEN if s.full_screen else DisplayServer.WINDOW_MODE_WINDOWED)
|
||||
|
||||
func update_input(action : String, old_event : InputEvent, event : InputEvent):
|
||||
InputMap.action_erase_event(action, old_event)
|
||||
InputMap.action_add_event(action, event)
|
||||
|
||||
InputMap.action_erase_event(action, old_event)
|
||||
InputMap.action_add_event(action, event)
|
||||
|
||||
|
||||
1
common/icons/coin.svg
Normal file
1
common/icons/coin.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="#ffffff" class="icon icon-tabler icons-tabler-filled icon-tabler-coin"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M17 3.34a10 10 0 1 1 -15 8.66l.005 -.324a10 10 0 0 1 14.995 -8.336zm-5 2.66a1 1 0 0 0 -1 1a3 3 0 1 0 0 6v2a1.024 1.024 0 0 1 -.866 -.398l-.068 -.101a1 1 0 0 0 -1.732 .998a3 3 0 0 0 2.505 1.5h.161a1 1 0 0 0 .883 .994l.117 .007a1 1 0 0 0 1 -1l.176 -.005a3 3 0 0 0 -.176 -5.995v-2c.358 -.012 .671 .14 .866 .398l.068 .101a1 1 0 0 0 1.732 -.998a3 3 0 0 0 -2.505 -1.501h-.161a1 1 0 0 0 -1 -1zm1 7a1 1 0 0 1 0 2v-2zm-2 -4v2a1 1 0 0 1 0 -2z" /></svg>
|
||||
|
After Width: | Height: | Size: 662 B |
43
common/icons/coin.svg.import
Normal file
43
common/icons/coin.svg.import
Normal file
@@ -0,0 +1,43 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://cs5jk1312wauu"
|
||||
path="res://.godot/imported/coin.svg-08623932cd6c1ab8a19bb6ae049240d0.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://common/icons/coin.svg"
|
||||
dest_files=["res://.godot/imported/coin.svg-08623932cd6c1ab8a19bb6ae049240d0.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
svg/scale=2.0
|
||||
editor/scale_with_editor_scale=false
|
||||
editor/convert_colors_with_editor_theme=false
|
||||
@@ -7,7 +7,6 @@ signal scene_node_ready(scene : Scene)
|
||||
|
||||
var loading_scene = false
|
||||
var generating_node = false
|
||||
var actual_scene : Scene = null
|
||||
var next_scene_node : Node
|
||||
@onready var current_scene_node : Node = get_tree().root.get_children().back()
|
||||
|
||||
@@ -30,7 +29,7 @@ func change_scene(scene_id : String, with_loading = true):
|
||||
if not scene:
|
||||
printerr("Scene %s not found" % scene_id)
|
||||
return
|
||||
actual_scene = scene
|
||||
GameInfo.game_data.actual_scene = scene
|
||||
loading_scene = true
|
||||
var scene_path_to_load = scene.scene_path
|
||||
ResourceLoader.load_threaded_request(scene_path_to_load)
|
||||
@@ -70,11 +69,11 @@ func change_scene(scene_id : String, with_loading = true):
|
||||
func _process(_delta):
|
||||
if loading_scene:
|
||||
var progress = []
|
||||
var load_status := ResourceLoader.load_threaded_get_status(actual_scene.scene_path, progress)
|
||||
var load_status := ResourceLoader.load_threaded_get_status(GameInfo.game_data.actual_scene.scene_path, progress)
|
||||
LoadingScreen.loading_value = progress[0]
|
||||
if load_status == ResourceLoader.THREAD_LOAD_LOADED:
|
||||
loading_scene = false
|
||||
scene_loaded.emit(actual_scene)
|
||||
scene_loaded.emit(GameInfo.game_data.actual_scene)
|
||||
if load_status == ResourceLoader.THREAD_LOAD_FAILED or load_status == ResourceLoader.THREAD_LOAD_INVALID_RESOURCE:
|
||||
printerr()
|
||||
elif generating_node:
|
||||
@@ -85,4 +84,4 @@ func _process(_delta):
|
||||
scene_node_ready.emit()
|
||||
elif next_scene_node.is_node_ready():
|
||||
generating_node = false
|
||||
scene_node_ready.emit(actual_scene)
|
||||
scene_node_ready.emit(GameInfo.game_data.actual_scene)
|
||||
|
||||
@@ -7,7 +7,7 @@ const VOWEL = ["a","e","i","o","u","y"]
|
||||
const CONSONANTS = ["b", "c", "d", "f", "g", "h", "j", "k", "l", "m", "n", "p", "q", "r", "s", "t", "v", "w", "x", "z"]
|
||||
|
||||
|
||||
static func generate_random_name(random_seed = randi()) -> String:
|
||||
static func generate_random_word(random_seed = randi()) -> String:
|
||||
var word_len = randf_range(4,8)
|
||||
var word = ''
|
||||
var last_letter_is_vowel = false
|
||||
@@ -21,18 +21,24 @@ static func generate_random_name(random_seed = randi()) -> String:
|
||||
last_letter_is_vowel = not last_letter_is_vowel
|
||||
return word.capitalize()
|
||||
|
||||
static func mutate_name(word : String) -> String:
|
||||
return word
|
||||
# TODO
|
||||
static func mutate_word(word : String) -> String:
|
||||
var rand_int = randi()
|
||||
|
||||
if len(word) > MIN_WORD_LEN and rand_int % 3 == 0:
|
||||
return shorten_word(word)
|
||||
elif len(word) < MAX_WORD_LEN and rand_int % 3 == 1:
|
||||
return elongate_word(word)
|
||||
|
||||
return replace_character(word)
|
||||
|
||||
|
||||
func shorten_name(word : String):
|
||||
static func shorten_word(word : String):
|
||||
if randi()%2 == 0:
|
||||
return word.left(len(word) - 1).capitalize()
|
||||
else :
|
||||
return word.right(len(word) - 1).capitalize()
|
||||
|
||||
func elongate_name(word : String):
|
||||
static func elongate_word(word : String):
|
||||
if randi()%2 == 0:
|
||||
var letter = CONSONANTS.pick_random() if word.left(1) in VOWEL else VOWEL.pick_random()
|
||||
return (letter + word).capitalize()
|
||||
@@ -40,6 +46,14 @@ func elongate_name(word : String):
|
||||
var letter = CONSONANTS.pick_random() if word.right(1) in VOWEL else VOWEL.pick_random()
|
||||
return (word + letter).capitalize()
|
||||
|
||||
func replace_character(word : String):
|
||||
# TODO
|
||||
static func replace_character(word : String):
|
||||
var character_id = randi_range(0, len(word))
|
||||
var character = word[character_id]
|
||||
|
||||
if character in VOWEL:
|
||||
character = VOWEL.pick_random()
|
||||
else:
|
||||
character = CONSONANTS.pick_random()
|
||||
|
||||
word[character_id] = character
|
||||
return word
|
||||
|
||||
@@ -1,272 +1,85 @@
|
||||
shader_type spatial;
|
||||
render_mode unshaded, blend_mix, depth_draw_never, depth_test_disabled;
|
||||
render_mode unshaded, depth_draw_opaque, depth_prepass_alpha;
|
||||
|
||||
/*
|
||||
AUTHOR: Hannah "EMBYR" Crawford
|
||||
ENGINE_VERSION: 4.0.3
|
||||
|
||||
HOW TO USE:
|
||||
1. Create a MeshInstance3D node and place it in your scene.
|
||||
2. Set it's size to 2x2.
|
||||
3. Enable the "Flip Faces" option.
|
||||
4. Create a new shader material with this shader.
|
||||
5. Assign the material to the MeshInstance3D
|
||||
|
||||
LIMITATIONS:
|
||||
Does not work well with TAA enabled.
|
||||
|
||||
MOBILE_NOTES:
|
||||
The mobile renderer does not have access to the normal_roughness texture
|
||||
so we must rely on techniques to reconstruct this information from the
|
||||
depth buffer.
|
||||
|
||||
If you require support on mobile please uncomment the SUPPORT_MOBILE line
|
||||
below. I have done my best to match the appearance between the two modes
|
||||
however, mobile does not take into account smooth-shaded faces.
|
||||
|
||||
The high-quality reconstruction method used on mobile is rather heavy on
|
||||
texture samples. If you would like to use the lower-quality recontruction
|
||||
method for better performance, please uncomment the NAIVE_NORMAL_RECONSTRUCTION
|
||||
line below.
|
||||
*/
|
||||
//#define SUPPORT_MOBILE
|
||||
//#define NAIVE_NORMAL_RECONSTRUCTION
|
||||
// Inspired by https://godotshaders.com/shader/3d-pixel-art-outline-highlight-post-processing-shader/
|
||||
|
||||
group_uniforms outline;
|
||||
uniform vec4 outlineColor: source_color = vec4(0.0, 0.0, 0.0, 0.78);
|
||||
uniform float depth_threshold = 0.025;
|
||||
uniform float normal_threshold : hint_range(0.0, 1.5) = 0.5;
|
||||
uniform float normal_smoothing : hint_range(0.0, 1.0) = 0.25;
|
||||
uniform sampler2D DEPTH_TEXTURE : hint_depth_texture, filter_linear_mipmap;
|
||||
uniform sampler2D SCREEN_TEXTURE : hint_screen_texture, filter_linear_mipmap;
|
||||
uniform sampler2D NORMAL_TEXTURE : hint_normal_roughness_texture, filter_nearest;
|
||||
|
||||
group_uniforms thickness;
|
||||
uniform float max_thickness: hint_range(0.0, 5.0) = 1.3;
|
||||
uniform float min_thickness = 0.5;
|
||||
uniform float max_distance = 75.0;
|
||||
uniform float min_distance = 2.0;
|
||||
|
||||
group_uniforms grazing_prevention;
|
||||
uniform float grazing_fresnel_power = 5.0;
|
||||
uniform float grazing_angle_mask_power = 1.0;
|
||||
uniform float grazing_angle_modulation_factor = 50.0;
|
||||
uniform vec3 shadow_color : source_color = vec3(0.0);
|
||||
uniform float shadow_thickness = 2.0;
|
||||
|
||||
uniform sampler2D DEPTH_TEXTURE : hint_depth_texture, filter_linear, repeat_disable;
|
||||
|
||||
#ifndef SUPPORT_MOBILE
|
||||
uniform sampler2D NORMR_TEXTURE : hint_normal_roughness_texture, filter_linear, repeat_disable;
|
||||
#else
|
||||
varying flat mat4 model_view_matrix;
|
||||
#endif// !SUPPORT_MOBILE
|
||||
|
||||
struct UVNeighbors {
|
||||
vec2 center;
|
||||
vec2 left; vec2 right; vec2 up; vec2 down;
|
||||
vec2 top_left; vec2 top_right; vec2 bottom_left; vec2 bottom_right;
|
||||
};
|
||||
|
||||
struct NeighborDepthSamples {
|
||||
float c_d;
|
||||
float l_d; float r_d; float u_d; float d_d;
|
||||
float tl_d; float tr_d; float bl_d; float br_d;
|
||||
};
|
||||
|
||||
UVNeighbors getNeighbors(vec2 center, float width, float aspect) {
|
||||
vec2 h_offset = vec2(width * aspect * 0.001, 0.0);
|
||||
vec2 v_offset = vec2(0.0, width * 0.001);
|
||||
UVNeighbors n;
|
||||
n.center = center;
|
||||
n.left = center - h_offset;
|
||||
n.right = center + h_offset;
|
||||
n.up = center - v_offset;
|
||||
n.down = center + v_offset;
|
||||
n.top_left = center - (h_offset - v_offset);
|
||||
n.top_right = center + (h_offset - v_offset);
|
||||
n.bottom_left = center - (h_offset + v_offset);
|
||||
n.bottom_right = center + (h_offset + v_offset);
|
||||
return n;
|
||||
vec2 getDepth(vec2 screen_uv, sampler2D depth_texture, mat4 inv_projection_matrix){
|
||||
float raw_depth = texture(depth_texture, screen_uv)[0];
|
||||
vec3 normalized_device_coordinates = vec3(screen_uv * 2.0 - 1.0, raw_depth);
|
||||
vec4 view_space = inv_projection_matrix * vec4(normalized_device_coordinates, 1.0);
|
||||
view_space.xyz /= view_space.w;
|
||||
return vec2(-view_space.z, raw_depth);
|
||||
}
|
||||
|
||||
float getMinimumDepth(NeighborDepthSamples ds){
|
||||
return min(ds.c_d, min(ds.l_d, min(ds.r_d, min(ds.u_d, min(ds.d_d, min(ds.tl_d, min(ds.tr_d, min(ds.bl_d, ds.br_d))))))));
|
||||
}
|
||||
|
||||
float getLinearDepth(float depth, vec2 uv, mat4 inv_proj) {
|
||||
vec3 ndc = vec3(uv * 2.0 - 1.0, depth);
|
||||
vec4 view = inv_proj * vec4(ndc, 1.0);
|
||||
view.xyz /= view.w;
|
||||
return -view.z;
|
||||
}
|
||||
|
||||
NeighborDepthSamples getLinearDepthSamples(UVNeighbors uvs, sampler2D depth_tex, mat4 invProjMat) {
|
||||
NeighborDepthSamples result;
|
||||
result.c_d = getLinearDepth(texture(depth_tex, uvs.center).r, uvs.center, invProjMat);
|
||||
result.l_d = getLinearDepth(texture(depth_tex, uvs.left).r , uvs.left , invProjMat);
|
||||
result.r_d = getLinearDepth(texture(depth_tex, uvs.right).r , uvs.right , invProjMat);
|
||||
result.u_d = getLinearDepth(texture(depth_tex, uvs.up).r , uvs.up , invProjMat);
|
||||
result.d_d = getLinearDepth(texture(depth_tex, uvs.down).r , uvs.down , invProjMat);
|
||||
result.tl_d = getLinearDepth(texture(depth_tex, uvs.top_left).r, uvs.top_left, invProjMat);
|
||||
result.tr_d = getLinearDepth(texture(depth_tex, uvs.top_right).r, uvs.top_right, invProjMat);
|
||||
result.bl_d = getLinearDepth(texture(depth_tex, uvs.bottom_left).r, uvs.bottom_left, invProjMat);
|
||||
result.br_d = getLinearDepth(texture(depth_tex, uvs.bottom_right).r, uvs.bottom_right, invProjMat);
|
||||
return result;
|
||||
}
|
||||
|
||||
float remap(float v, float from1, float to1, float from2, float to2) {
|
||||
return (v - from1) / (to1 - from1) * (to2 - from2) + from2;
|
||||
}
|
||||
|
||||
float fresnel(float amount, vec3 normal, vec3 view) {
|
||||
return pow((1.0 - clamp(dot(normalize(normal), normalize(view)), 0.0, 1.0 )), amount);
|
||||
}
|
||||
|
||||
float getGrazingAngleModulation(vec3 pixel_normal, vec3 view) {
|
||||
float x = clamp(((fresnel(grazing_fresnel_power, pixel_normal, view) - 1.0) / grazing_angle_mask_power) + 1.0, 0.0, 1.0);
|
||||
return (x + grazing_angle_modulation_factor) + 1.0;
|
||||
}
|
||||
|
||||
float detectEdgesDepth(NeighborDepthSamples depth_samples, vec3 pixel_normal, vec3 view) {
|
||||
float n_total =
|
||||
depth_samples.l_d +
|
||||
depth_samples.r_d +
|
||||
depth_samples.u_d +
|
||||
depth_samples.d_d +
|
||||
depth_samples.tl_d +
|
||||
depth_samples.tr_d +
|
||||
depth_samples.bl_d +
|
||||
depth_samples.br_d;
|
||||
|
||||
float t = depth_threshold * getGrazingAngleModulation(pixel_normal, view);
|
||||
return step(t, n_total - (depth_samples.c_d * 8.0));
|
||||
}
|
||||
|
||||
// Reconstruction helpers
|
||||
// Source: https://www.reddit.com/r/godot/comments/v70p2k/improved_normal_from_depth/
|
||||
#ifdef SUPPORT_MOBILE
|
||||
vec3 reconstructWorldPosition(float depth, mat4 model_view, mat4 inv_proj, vec2 screen_uv, mat4 world, mat4 inv_cam){
|
||||
vec4 pos = inverse(model_view) * inv_proj * vec4((screen_uv * 2.0 - 1.0), depth * 2.0 - 1.0, 1.0);
|
||||
pos.xyz /= (pos.w + 0.0001 * (1.-abs(sign(pos.w))));
|
||||
return (pos * inv_cam).xyz + world[3].xyz;
|
||||
}
|
||||
|
||||
#ifndef NAIVE_NORMAL_RECONSTRUCTION
|
||||
vec3 reconstructWorldNormal(sampler2D depth_tex, mat4 model_view, mat4 inv_proj, vec2 screen_uv, mat4 world, mat4 inv_cam, vec2 viewport_size) {
|
||||
vec2 e = vec2(1.0 / viewport_size);
|
||||
float c0 = texture(depth_tex, screen_uv ).r;
|
||||
float l2 = texture(depth_tex, screen_uv - vec2(2,0) * e).r;
|
||||
float l1 = texture(depth_tex, screen_uv - vec2(1,0) * e).r;
|
||||
float r1 = texture(depth_tex, screen_uv + vec2(1,0) * e).r;
|
||||
float r2 = texture(depth_tex, screen_uv + vec2(2,0) * e).r;
|
||||
float b2 = texture(depth_tex, screen_uv - vec2(0,2) * e).r;
|
||||
float b1 = texture(depth_tex, screen_uv - vec2(0,1) * e).r;
|
||||
float t1 = texture(depth_tex, screen_uv + vec2(0,1) * e).r;
|
||||
float t2 = texture(depth_tex, screen_uv + vec2(0,2) * e).r;
|
||||
|
||||
float dl = abs(l1 * l2 / (2.0 * l2 - l1) - c0);
|
||||
float dr = abs(r1 * r2 / (2.0 * r2 - r1) - c0);
|
||||
float db = abs(b1 * b2 / (2.0 * b2 - b1) - c0);
|
||||
float dt = abs(t1 * t2 / (2.0 * t2 - t1) - c0);
|
||||
|
||||
vec3 ce = reconstructWorldPosition(c0, model_view, inv_proj, screen_uv, world, inv_cam);
|
||||
|
||||
vec3 dpdx = (dl<dr) ? ce-reconstructWorldPosition(l1, model_view, inv_proj, screen_uv - vec2(1,0) * e, world, inv_cam) :
|
||||
-ce+reconstructWorldPosition(r1, model_view, inv_proj, screen_uv + vec2(1,0) * e, world, inv_cam) ;
|
||||
vec3 dpdy = (db<dt) ? ce-reconstructWorldPosition(b1, model_view, inv_proj, screen_uv - vec2(0,1) * e, world, inv_cam) :
|
||||
-ce+reconstructWorldPosition(t1, model_view, inv_proj, screen_uv + vec2(0,1) * e, world, inv_cam) ;
|
||||
|
||||
return normalize(cross(dpdx,dpdy));
|
||||
}
|
||||
#else
|
||||
vec3 reconstructWorldNormal(sampler2D depth_tex, mat4 model_view, mat4 inv_proj, vec2 screen_uv, mat4 world, mat4 inv_cam, vec2 viewport_size) {
|
||||
vec3 pos = reconstructWorldPosition(texture(depth_tex, screen_uv).x, model_view, inv_proj, screen_uv, world, inv_cam);
|
||||
return normalize(cross(dFdx(pos), dFdy(pos)));
|
||||
}
|
||||
#endif//!NAIVE_NORMAL_RECONSTRUCTION
|
||||
|
||||
float detectEdgesNormalReconstructed(UVNeighbors uvs, sampler2D depth_tex, mat4 model_view, mat4 inv_proj, vec2 screen_uv, mat4 world, mat4 inv_cam, vec2 viewport_size){
|
||||
vec3 n_u = reconstructWorldNormal(depth_tex, model_view, inv_proj, uvs.up, world, inv_cam, viewport_size);
|
||||
vec3 n_d = reconstructWorldNormal(depth_tex, model_view, inv_proj, uvs.down, world, inv_cam, viewport_size);
|
||||
vec3 n_l = reconstructWorldNormal(depth_tex, model_view, inv_proj, uvs.left, world, inv_cam, viewport_size);
|
||||
vec3 n_r = reconstructWorldNormal(depth_tex, model_view, inv_proj, uvs.right, world, inv_cam, viewport_size);
|
||||
vec3 n_tl = reconstructWorldNormal(depth_tex, model_view, inv_proj, uvs.top_left, world, inv_cam, viewport_size);
|
||||
vec3 n_tr = reconstructWorldNormal(depth_tex, model_view, inv_proj, uvs.top_right, world, inv_cam, viewport_size);
|
||||
vec3 n_bl = reconstructWorldNormal(depth_tex, model_view, inv_proj, uvs.bottom_left, world, inv_cam, viewport_size);
|
||||
vec3 n_br = reconstructWorldNormal(depth_tex, model_view, inv_proj, uvs.bottom_right, world, inv_cam, viewport_size);
|
||||
|
||||
vec3 normalFiniteDifference0 = n_tr - n_bl;
|
||||
vec3 normalFiniteDifference1 = n_tl - n_br;
|
||||
vec3 normalFiniteDifference2 = n_l - n_r;
|
||||
vec3 normalFiniteDifference3 = n_u - n_d;
|
||||
|
||||
float edgeNormal = sqrt(
|
||||
dot(normalFiniteDifference0, normalFiniteDifference0) +
|
||||
dot(normalFiniteDifference1, normalFiniteDifference1) +
|
||||
dot(normalFiniteDifference2, normalFiniteDifference2) +
|
||||
dot(normalFiniteDifference3, normalFiniteDifference3)
|
||||
) * 0.5;
|
||||
|
||||
return smoothstep(normal_threshold - normal_smoothing, normal_threshold + normal_smoothing, edgeNormal);
|
||||
}
|
||||
#else
|
||||
float detectEdgesNormal(UVNeighbors uvs, sampler2D normTex, vec3 camDirWorld){
|
||||
vec3 n_u = texture(normTex, uvs.up).xyz;
|
||||
vec3 n_d = texture(normTex, uvs.down).xyz;
|
||||
vec3 n_l = texture(normTex, uvs.left).xyz;
|
||||
vec3 n_r = texture(normTex, uvs.right).xyz;
|
||||
vec3 n_tl = texture(normTex, uvs.top_left).xyz;
|
||||
vec3 n_tr = texture(normTex, uvs.top_right).xyz;
|
||||
vec3 n_bl = texture(normTex, uvs.bottom_left).xyz;
|
||||
vec3 n_br = texture(normTex, uvs.bottom_right).xyz;
|
||||
|
||||
vec3 normalFiniteDifference0 = n_tr - n_bl;
|
||||
vec3 normalFiniteDifference1 = n_tl - n_br;
|
||||
vec3 normalFiniteDifference2 = n_l - n_r;
|
||||
vec3 normalFiniteDifference3 = n_u - n_d;
|
||||
|
||||
float edgeNormal = sqrt(
|
||||
dot(normalFiniteDifference0, normalFiniteDifference0) +
|
||||
dot(normalFiniteDifference1, normalFiniteDifference1) +
|
||||
dot(normalFiniteDifference2, normalFiniteDifference2) +
|
||||
dot(normalFiniteDifference3, normalFiniteDifference3)
|
||||
);
|
||||
|
||||
return smoothstep(normal_threshold - normal_smoothing, normal_threshold + normal_smoothing, edgeNormal);
|
||||
}
|
||||
#endif//SUPPORT_MOBILE
|
||||
|
||||
void vertex() {
|
||||
POSITION = vec4(VERTEX, 1.0);
|
||||
|
||||
#ifdef SUPPORT_MOBILE
|
||||
model_view_matrix = INV_VIEW_MATRIX * mat4(VIEW_MATRIX[0],VIEW_MATRIX[1],VIEW_MATRIX[2],VIEW_MATRIX[3]);;
|
||||
#endif
|
||||
}
|
||||
|
||||
void fragment() {
|
||||
float aspect = float(VIEWPORT_SIZE.y) / float(VIEWPORT_SIZE.x);
|
||||
vec2 e = vec2(1./VIEWPORT_SIZE.xy)*1.0;
|
||||
|
||||
float depth_diff = 0.0;
|
||||
float neg_depth_diff = .5;
|
||||
|
||||
UVNeighbors n = getNeighbors(SCREEN_UV, max_thickness, aspect);
|
||||
NeighborDepthSamples depth_samples = getLinearDepthSamples(n, DEPTH_TEXTURE, INV_PROJECTION_MATRIX);
|
||||
vec2 depth_data = getDepth(SCREEN_UV, DEPTH_TEXTURE, INV_PROJECTION_MATRIX);
|
||||
float depth = depth_data.x;
|
||||
vec3 color = texture(SCREEN_TEXTURE, SCREEN_UV).rgb;
|
||||
vec3 c = vec3(0.0);
|
||||
|
||||
float min_d = getMinimumDepth(depth_samples);
|
||||
float thickness = clamp(remap(min_d, min_distance, max_distance, max_thickness, min_thickness), min_thickness, max_thickness);
|
||||
float fade_a = clamp(remap(min_d, min_distance, max_distance, 1.0, 0.0), 0.0, 1.0);
|
||||
vec2 min_depth_data = depth_data;
|
||||
float min_depth = 9999999.9;
|
||||
|
||||
n = getNeighbors(SCREEN_UV, thickness, aspect);
|
||||
depth_samples = getLinearDepthSamples(n, DEPTH_TEXTURE, INV_PROJECTION_MATRIX);
|
||||
|
||||
vec3 normal = texture(NORMAL_TEXTURE, SCREEN_UV).rgb * 2.0 - 1.0;
|
||||
|
||||
#ifndef SUPPORT_MOBILE
|
||||
vec3 pixel_normal = texture(NORMR_TEXTURE, SCREEN_UV).xyz;
|
||||
#else
|
||||
vec3 pixel_normal = reconstructWorldNormal(DEPTH_TEXTURE, model_view_matrix, INV_PROJECTION_MATRIX, SCREEN_UV, MODEL_MATRIX, INV_VIEW_MATRIX, VIEWPORT_SIZE.xy);
|
||||
#endif
|
||||
|
||||
float depthEdges = detectEdgesDepth(depth_samples, pixel_normal, VIEW);
|
||||
|
||||
#ifndef SUPPORT_MOBILE
|
||||
float normEdges = min(detectEdgesNormal(n, NORMR_TEXTURE, CAMERA_DIRECTION_WORLD), 1.0);
|
||||
#else
|
||||
float normEdges = min(detectEdgesNormalReconstructed(n, DEPTH_TEXTURE, model_view_matrix, INV_PROJECTION_MATRIX, SCREEN_UV, MODEL_MATRIX, INV_VIEW_MATRIX, VIEWPORT_SIZE.xy), 1.0);
|
||||
#endif
|
||||
|
||||
ALBEDO.rgb = outlineColor.rgb;
|
||||
ALPHA = max(depthEdges, normEdges) * outlineColor.a * fade_a;
|
||||
for (float x = -shadow_thickness; x <= shadow_thickness;x += 1.0){
|
||||
for (float y = -shadow_thickness; y <= shadow_thickness; y += 1.0){
|
||||
if ((x == 0.0 && y == 0.0) || (shadow_thickness*shadow_thickness < (x*x + y*y))){
|
||||
continue;
|
||||
}
|
||||
|
||||
vec2 du_data = getDepth(SCREEN_UV+1.0*vec2(x, y)*e, DEPTH_TEXTURE, INV_PROJECTION_MATRIX);
|
||||
vec2 dd_data = getDepth(SCREEN_UV+0.5*vec2(x, y)*e, DEPTH_TEXTURE, INV_PROJECTION_MATRIX);
|
||||
|
||||
float du = du_data.x;
|
||||
float dd = dd_data.x;
|
||||
|
||||
float dd_diff = clamp(abs((depth - dd) - (dd - du)), 0.0, 1.0);
|
||||
|
||||
float val = clamp(abs(depth - du), 0., 1.)/(x*x + y*y)*dd_diff*dd_diff*5000.0;
|
||||
|
||||
val = clamp(val, 0.0, 1.0);
|
||||
|
||||
depth_diff += val;
|
||||
|
||||
if (du < min_depth){
|
||||
min_depth = du;
|
||||
min_depth_data = du_data;
|
||||
c = texture(SCREEN_TEXTURE, SCREEN_UV+vec2(x, y)*e).rgb;
|
||||
|
||||
c *= clamp(0.5+ 0.5*dot(normalize(vec2(x, y)), (vec2(0.0, 1.0))), 0.0, 1.0);
|
||||
|
||||
}
|
||||
|
||||
vec3 nu = texture(NORMAL_TEXTURE, SCREEN_UV+vec2(x, y)*e).rgb * 2.0 - 1.0;
|
||||
|
||||
depth_diff += (1.0-abs(dot(nu, normal)))/max(min(dd, depth), 2.0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
depth_diff = smoothstep(0.2, 0.3, depth_diff);
|
||||
|
||||
vec3 final = c*shadow_color;
|
||||
ALBEDO = final;
|
||||
|
||||
float alpha_mask = depth_diff;
|
||||
DEPTH = min_depth_data.y*alpha_mask + depth_data.y*(1.0-alpha_mask);
|
||||
ALPHA = clamp((alpha_mask) * 5., 0., 1.);
|
||||
|
||||
}
|
||||
56
common/vfx/materials/shaders/3d_outline_2.gdshader
Normal file
56
common/vfx/materials/shaders/3d_outline_2.gdshader
Normal file
@@ -0,0 +1,56 @@
|
||||
shader_type spatial;
|
||||
render_mode blend_premul_alpha, unshaded, ambient_light_disabled;
|
||||
|
||||
uniform sampler2D depth_texture : hint_depth_texture;
|
||||
uniform int step_count : hint_range(3, 15, 2) = 3; // 2 samples per step
|
||||
uniform float thickness : hint_range(1.0, 16.0, 0.1) = 3.0;
|
||||
uniform vec3 edge_color : source_color = vec3(0.);
|
||||
uniform float fade_start : hint_range(1.0, 1000.0, 0.1) = 100.0;
|
||||
uniform float fade_length : hint_range(1.0, 1000.0, 0.1) = 200.0;
|
||||
|
||||
void fragment() {
|
||||
// Setup step parameters
|
||||
vec2 step_length = 1.0 / VIEWPORT_SIZE * thickness;
|
||||
float step_angle = TAU / float(step_count);
|
||||
// Per-pixel jitter to reduce patterning
|
||||
float start_angle = fract(sin(dot(SCREEN_UV, vec2(12.9898, 78.233))) * 43758.5453) * TAU;
|
||||
vec2 dir = vec2(cos(start_angle), sin(start_angle));
|
||||
// step rotation matrix
|
||||
mat2 rot = mat2(
|
||||
vec2(cos(step_angle), -sin(step_angle)),
|
||||
vec2(sin(step_angle), cos(step_angle)));
|
||||
vec3 avg_dx = vec3(0.0);
|
||||
vec3 avg_dy = vec3(0.0);
|
||||
// save closest pixel to uniformly fade line.
|
||||
float min_z = 1e6;
|
||||
// Sample and average derivatives for all pairs
|
||||
for (int i = 0; i < step_count; i++) {
|
||||
vec2 uv1 = SCREEN_UV + dir * step_length;
|
||||
vec2 uv2 = SCREEN_UV - dir * step_length;
|
||||
float d1 = texture(depth_texture, uv1).r;
|
||||
float d2 = texture(depth_texture, uv2).r;
|
||||
vec4 up1 = INV_PROJECTION_MATRIX * vec4(uv1 * 2.0 - 1.0, d1, 1.0);
|
||||
vec4 up2 = INV_PROJECTION_MATRIX * vec4(uv2 * 2.0 - 1.0, d2, 1.0);
|
||||
vec3 p1 = up1.xyz / up1.w;
|
||||
vec3 p2 = up2.xyz / up2.w;
|
||||
min_z = min(min_z, min(-p1.z, -p2.z));
|
||||
vec3 diff = p1 - p2;
|
||||
avg_dx += diff * dir.x;
|
||||
avg_dy += diff * dir.y;
|
||||
|
||||
dir = rot * dir; // rotate direction for next step
|
||||
}
|
||||
// fade outline width with distance
|
||||
float distance_fade = 1e-4 + smoothstep(fade_start + fade_length, fade_start, min_z);
|
||||
|
||||
// Edge mask
|
||||
float edge = 1.0 - smoothstep(0.1, 0.15, dot(normalize(cross(avg_dy, avg_dx)), VIEW));
|
||||
|
||||
// Small vignette at screen edges
|
||||
edge *= smoothstep(0.00, 0.015 * thickness,
|
||||
1.0 - max(abs(SCREEN_UV.x - 0.5), abs(SCREEN_UV.y - 0.5)) * 2.0);
|
||||
|
||||
// blend_premul_alpha avoids need to sample screentexture.
|
||||
ALBEDO = edge_color * edge;
|
||||
ALPHA = edge * distance_fade;
|
||||
}
|
||||
1
common/vfx/materials/shaders/3d_outline_2.gdshader.uid
Normal file
1
common/vfx/materials/shaders/3d_outline_2.gdshader.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://n6r7u234l2iy
|
||||
@@ -1,62 +1,56 @@
|
||||
shader_type canvas_item;
|
||||
shader_type spatial;
|
||||
render_mode blend_premul_alpha, unshaded, ambient_light_disabled;
|
||||
|
||||
uniform vec4 color : source_color = vec4(1.0);
|
||||
uniform float width : hint_range(0, 10) = 1.0;
|
||||
uniform int pattern : hint_range(0, 2) = 0; // diamond, circle, square
|
||||
uniform bool inside = false;
|
||||
uniform bool add_margins = true; // only useful when inside is false
|
||||
|
||||
void vertex() {
|
||||
if (add_margins) {
|
||||
VERTEX += (UV * 2.0 - 1.0) * width;
|
||||
}
|
||||
}
|
||||
|
||||
bool hasContraryNeighbour(vec2 uv, vec2 texture_pixel_size, sampler2D texture) {
|
||||
for (float i = -ceil(width); i <= ceil(width); i++) {
|
||||
float x = abs(i) > width ? width * sign(i) : i;
|
||||
float offset;
|
||||
|
||||
if (pattern == 0) {
|
||||
offset = width - abs(x);
|
||||
} else if (pattern == 1) {
|
||||
offset = floor(sqrt(pow(width + 0.5, 2) - x * x));
|
||||
} else if (pattern == 2) {
|
||||
offset = width;
|
||||
}
|
||||
|
||||
for (float j = -ceil(offset); j <= ceil(offset); j++) {
|
||||
float y = abs(j) > offset ? offset * sign(j) : j;
|
||||
vec2 xy = uv + texture_pixel_size * vec2(x, y);
|
||||
|
||||
if ((xy != clamp(xy, vec2(0.0), vec2(1.0)) || texture(texture, xy).a <= 0.0) == inside) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
uniform sampler2D depth_texture : hint_depth_texture;
|
||||
uniform int step_count : hint_range(3, 15, 2) = 3; // 2 samples per step
|
||||
uniform float thickness : hint_range(1.0, 16.0, 0.1) = 3.0;
|
||||
uniform vec3 edge_color : source_color = vec3(0.);
|
||||
uniform float fade_start : hint_range(1.0, 1000.0, 0.1) = 100.0;
|
||||
uniform float fade_length : hint_range(1.0, 1000.0, 0.1) = 200.0;
|
||||
|
||||
void fragment() {
|
||||
vec2 uv = UV;
|
||||
|
||||
if (add_margins) {
|
||||
vec2 texture_pixel_size = vec2(1.0) / (vec2(1.0) / TEXTURE_PIXEL_SIZE + vec2(width * 2.0));
|
||||
|
||||
uv = (uv - texture_pixel_size * width) * TEXTURE_PIXEL_SIZE / texture_pixel_size;
|
||||
|
||||
if (uv != clamp(uv, vec2(0.0), vec2(1.0))) {
|
||||
COLOR.a = 0.0;
|
||||
} else {
|
||||
COLOR = texture(TEXTURE, uv);
|
||||
}
|
||||
} else {
|
||||
COLOR = texture(TEXTURE, uv);
|
||||
}
|
||||
|
||||
if ((COLOR.a > 0.0) == inside && hasContraryNeighbour(uv, TEXTURE_PIXEL_SIZE, TEXTURE)) {
|
||||
COLOR.rgb = inside ? mix(COLOR.rgb, color.rgb, color.a) : color.rgb;
|
||||
COLOR.a += (1.0 - COLOR.a) * color.a;
|
||||
// Setup step parameters
|
||||
vec2 step_length = 1.0 / VIEWPORT_SIZE * thickness;
|
||||
float step_angle = TAU / float(step_count);
|
||||
// Per-pixel jitter to reduce patterning
|
||||
float start_angle = fract(sin(dot(SCREEN_UV, vec2(12.9898, 78.233))) * 43758.5453) * TAU;
|
||||
vec2 dir = vec2(cos(start_angle), sin(start_angle));
|
||||
// step rotation matrix
|
||||
mat2 rot = mat2(
|
||||
vec2(cos(step_angle), -sin(step_angle)),
|
||||
vec2(sin(step_angle), cos(step_angle)));
|
||||
vec3 avg_dx = vec3(0.0);
|
||||
vec3 avg_dy = vec3(0.0);
|
||||
// save closest pixel to uniformly fade line.
|
||||
float min_z = 1e6;
|
||||
// Sample and average derivatives for all pairs
|
||||
for (int i = 0; i < step_count; i++) {
|
||||
vec2 uv1 = SCREEN_UV + dir * step_length;
|
||||
vec2 uv2 = SCREEN_UV - dir * step_length;
|
||||
float d1 = texture(depth_texture, uv1).r;
|
||||
float d2 = texture(depth_texture, uv2).r;
|
||||
vec4 up1 = INV_PROJECTION_MATRIX * vec4(uv1 * 2.0 - 1.0, d1, 1.0);
|
||||
vec4 up2 = INV_PROJECTION_MATRIX * vec4(uv2 * 2.0 - 1.0, d2, 1.0);
|
||||
vec3 p1 = up1.xyz / up1.w;
|
||||
vec3 p2 = up2.xyz / up2.w;
|
||||
min_z = min(min_z, min(-p1.z, -p2.z));
|
||||
vec3 diff = p1 - p2;
|
||||
avg_dx += diff * dir.x;
|
||||
avg_dy += diff * dir.y;
|
||||
|
||||
dir = rot * dir; // rotate direction for next step
|
||||
}
|
||||
// fade outline width with distance
|
||||
float distance_fade = 1e-4 + smoothstep(fade_start + fade_length, fade_start, min_z);
|
||||
|
||||
// Edge mask
|
||||
float edge = 1.0 - smoothstep(0.1, 0.15, dot(normalize(cross(avg_dy, avg_dx)), VIEW));
|
||||
|
||||
// Small vignette at screen edges
|
||||
edge *= smoothstep(0.00, 0.015 * thickness,
|
||||
1.0 - max(abs(SCREEN_UV.x - 0.5), abs(SCREEN_UV.y - 0.5)) * 2.0);
|
||||
|
||||
// blend_premul_alpha avoids need to sample screentexture.
|
||||
ALBEDO = edge_color * edge;
|
||||
ALPHA = edge * distance_fade;
|
||||
}
|
||||
19
common/vfx/materials/shaders/pixelisation.gdshader
Normal file
19
common/vfx/materials/shaders/pixelisation.gdshader
Normal file
@@ -0,0 +1,19 @@
|
||||
shader_type spatial;
|
||||
|
||||
render_mode unshaded, fog_disabled;
|
||||
|
||||
uniform sampler2D screen_texture : hint_screen_texture;
|
||||
uniform float pixel_size : hint_range(0.0, 100., 2.0) = 8.0;
|
||||
|
||||
void fragment() {
|
||||
vec2 tex_size = vec2(textureSize(screen_texture, 0));
|
||||
vec2 pixel_count = tex_size / pixel_size;
|
||||
vec2 pixelated_uv = floor(SCREEN_UV * pixel_count) / pixel_count;
|
||||
vec4 color = texture(screen_texture, pixelated_uv);
|
||||
ALBEDO = color.rgb;
|
||||
}
|
||||
|
||||
//void light() {
|
||||
// // Called for every pixel for every light affecting the material.
|
||||
// // Uncomment to replace the default light processing function with this one.
|
||||
//}
|
||||
1
common/vfx/materials/shaders/pixelisation.gdshader.uid
Normal file
1
common/vfx/materials/shaders/pixelisation.gdshader.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://c3gjvpai3w7cu
|
||||
@@ -1,4 +1,4 @@
|
||||
[gd_resource type="Resource" script_class="DialogicStyle" load_steps=21 format=3 uid="uid://cujoao6hdwng6"]
|
||||
[gd_resource type="Resource" script_class="DialogicStyle" format=3 uid="uid://cujoao6hdwng6"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://cqpb3ie51rwl5" path="res://addons/dialogic/Modules/DefaultLayoutParts/Base_Default/default_layout_base.tscn" id="1_bc2c1"]
|
||||
[ext_resource type="Script" uid="uid://bwg6yncmh2cml" path="res://addons/dialogic/Resources/dialogic_style_layer.gd" id="2_gjyq6"]
|
||||
|
||||
@@ -3,7 +3,7 @@ class_name ItemObjectData
|
||||
|
||||
@export var item : Item
|
||||
|
||||
func _init(e : ItemObject):
|
||||
func _init(e : ItemObject = ItemObject.new()):
|
||||
position = e.global_position
|
||||
item = e.item
|
||||
|
||||
|
||||
@@ -121,6 +121,8 @@ func mature():
|
||||
func die():
|
||||
for m in data.mutations:
|
||||
m._start_dead_effect(self)
|
||||
for i in range(data.get_random_seed_income()):
|
||||
produce_seed()
|
||||
disappear()
|
||||
|
||||
func disappear():
|
||||
@@ -132,52 +134,36 @@ func save() -> EntityData:
|
||||
|
||||
func card_info() -> CardInfo:
|
||||
var info = CardInfo.new(
|
||||
pointer_text()
|
||||
data.plant_name,
|
||||
data.archetype.archetype_name
|
||||
)
|
||||
|
||||
var state = data.get_state()
|
||||
|
||||
info.important_stat_icon = PLANT_POINT_ICON
|
||||
info.important_stat_text = "%d" % calculate_plant_score()
|
||||
info.texture = null #TODO
|
||||
info.type_icon = PLANT_TYPE_ICON
|
||||
|
||||
var state_text = tr("MATURE")
|
||||
if state != PlantData.State.MATURE:
|
||||
state_text = tr("GROWING")
|
||||
|
||||
info.stats.append(CardStatInfo.new(
|
||||
tr("DAY_%d") % data.day,
|
||||
LIFETIME_ICON
|
||||
))
|
||||
|
||||
info.stats.append(CardStatInfo.new(
|
||||
state_text,
|
||||
PLANT_TYPE_ICON
|
||||
))
|
||||
|
||||
if state != PlantData.State.MATURE:
|
||||
info.stats.append(CardStatInfo.new(
|
||||
tr("MATURE_ON_DAY_%d") % data.get_growing_time(),
|
||||
GROWING_ICON
|
||||
))
|
||||
|
||||
info.stats.append(CardStatInfo.new(
|
||||
tr("%d_SCORE_WHEN_MATURE") % data.get_score(PlantData.State.MATURE),
|
||||
PLANT_POINT_ICON
|
||||
))
|
||||
|
||||
info.stats.append(CardStatInfo.new(
|
||||
tr("DIE_ON_DAY_%d") % (data.get_lifetime()),
|
||||
DEATH_ICON
|
||||
))
|
||||
|
||||
info.stats.append_array([
|
||||
CardStatInfo.new(
|
||||
str(data.day),
|
||||
LIFETIME_ICON
|
||||
),
|
||||
CardStatInfo.new(
|
||||
str(data.get_growing_time()),
|
||||
GROWING_ICON
|
||||
),
|
||||
CardStatInfo.new(
|
||||
str(data.get_lifetime()),
|
||||
DEATH_ICON
|
||||
),
|
||||
])
|
||||
|
||||
if len(data.mutations) != 0:
|
||||
var rarest : int = data.mutations.map(
|
||||
func(m : PlantMutation) : return m.get_rarity()
|
||||
).max()
|
||||
info.bg_color = PlantMutation.get_rarity_color(rarest)
|
||||
for m in data.mutations:
|
||||
info.sections.append(m.card_section())
|
||||
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
extends Resource
|
||||
class_name PlantArchetype
|
||||
|
||||
@export var archetype_name = Random.generate_random_name()
|
||||
@export var archetype_name = Random.generate_random_word()
|
||||
@export var texture_builder = TextureBuilder.new()
|
||||
@export var plant_area_radius = 20
|
||||
@export var plant_influence_radius = 100
|
||||
@export var growing_time= 2
|
||||
@export var lifetime = 5
|
||||
@export var lifetime = 8
|
||||
@export var base_score = 1
|
||||
@export var seed_number = 2
|
||||
@export var seed_random_loose = 1
|
||||
@@ -16,4 +16,12 @@ class_name PlantArchetype
|
||||
PrecociousMutation.new(),
|
||||
QualityMutation.new(),
|
||||
QuickMutation.new()
|
||||
]
|
||||
]
|
||||
|
||||
static func get_all() -> Array[PlantArchetype]:
|
||||
return [
|
||||
PlantArchetype.new()
|
||||
]
|
||||
|
||||
static func get_random() -> PlantArchetype:
|
||||
return get_all().pick_random()
|
||||
|
||||
@@ -19,9 +19,9 @@ enum State {PLANTED, GROWING, MATURE, DEAD}
|
||||
@export var roots = 0 # +1 lifetime
|
||||
|
||||
func _init(
|
||||
_position : Vector2,
|
||||
_archetype : PlantArchetype,
|
||||
_plant_name : String = Random.generate_random_name(),
|
||||
_position : Vector2 = Vector2.ZERO,
|
||||
_archetype : PlantArchetype = PlantArchetype.get_random(),
|
||||
_plant_name : String = Random.generate_random_word(),
|
||||
_mutations : Array[PlantMutation] = [],
|
||||
_day : int = 0,
|
||||
_random_seed = randi()
|
||||
@@ -90,7 +90,7 @@ func get_seed_texture():
|
||||
return archetype.texture_builder.build_seed_texture(random_seed)
|
||||
|
||||
func get_seed_number(state = get_state()):
|
||||
var seed_number = archetype.seed_number if state == State.MATURE else 0
|
||||
var seed_number = archetype.seed_number if (state == State.MATURE or state == State.DEAD) else 0
|
||||
|
||||
for m in mutations:
|
||||
seed_number = m.mutate_seed_number(self, seed_number)
|
||||
|
||||
@@ -3,6 +3,8 @@ class_name PlantMutation
|
||||
|
||||
@export var level : int = 1
|
||||
|
||||
var name : String : get = get_mutation_name
|
||||
|
||||
func _init(_level : int = 1):
|
||||
level = _level
|
||||
|
||||
@@ -65,8 +67,7 @@ func card_section() -> CardSectionInfo:
|
||||
"[b]%s[/b] %s" % [tr(PlantMutation.get_rarity_text(get_rarity())), get_mutation_description()]
|
||||
)
|
||||
|
||||
section.title_color = PlantMutation.get_rarity_color(get_rarity())
|
||||
section.title_colored = true
|
||||
section.color = PlantMutation.get_rarity_color(get_rarity())
|
||||
section.title_icon = get_icon()
|
||||
|
||||
return section
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
extends PlantMutation
|
||||
class_name AncientMutation
|
||||
|
||||
const DEFAULT_DAY_FACTOR = 5
|
||||
const DEFAULT_DAY_FACTOR = 3
|
||||
|
||||
func get_icon() -> Texture:
|
||||
return preload("res://common/icons/wood.svg")
|
||||
|
||||
@@ -13,5 +13,5 @@ func get_mutation_name() -> String:
|
||||
func get_mutation_description() -> String:
|
||||
return tr("QUICK_EFFECT_TEXT_LEVEL_%d") % level
|
||||
|
||||
func mutate_grow_time(_data : PlantData, grow_time : int) -> int:
|
||||
func mutate_growing_time(_data : PlantData, grow_time : int) -> int:
|
||||
return max(grow_time - level, 0)
|
||||
@@ -97,6 +97,7 @@ func is_full():
|
||||
return true
|
||||
|
||||
func clear():
|
||||
print("clearing inventory")
|
||||
for i in range(len(items)):
|
||||
items[i] = null
|
||||
updated.emit(self)
|
||||
|
||||
@@ -6,11 +6,11 @@ const ACTION_ICON = preload("res://common/icons/swipe-down.svg")
|
||||
const ENERGY_ICON = preload("res://common/icons/bolt.svg")
|
||||
const ONE_TIME_ICON = preload("res://common/icons/circle-number-1.svg")
|
||||
|
||||
var name: String : get = get_item_name
|
||||
var description: String : get = get_description
|
||||
var icon: Texture2D : get = get_icon
|
||||
var usage_zone_radius: int = 5 : get = get_usage_zone_radius
|
||||
var energy_usage : int = 1 : get = get_energy_used
|
||||
@export var name: String : get = get_item_name
|
||||
@export var description: String : get = get_description
|
||||
@export var icon: Texture2D : get = get_icon
|
||||
@export var usage_zone_radius: int = 5 : get = get_usage_zone_radius
|
||||
@export var energy_usage : int = 1 : get = get_energy_used
|
||||
|
||||
func get_item_name() -> String:
|
||||
return name
|
||||
@@ -51,19 +51,11 @@ func card_info() -> CardInfo:
|
||||
|
||||
info.stats.append(
|
||||
CardStatInfo.new(
|
||||
tr("COST_%d_ENERGY") % energy_usage,
|
||||
str(energy_usage),
|
||||
ENERGY_ICON
|
||||
)
|
||||
)
|
||||
|
||||
if is_one_time_use():
|
||||
info.stats.append(
|
||||
CardStatInfo.new(
|
||||
tr("ONE_TIME_USE"),
|
||||
ONE_TIME_ICON
|
||||
)
|
||||
)
|
||||
|
||||
var effect_section = CardSectionInfo.new(
|
||||
tr("EFFECT"),
|
||||
get_description()
|
||||
|
||||
@@ -13,8 +13,8 @@ const SCORE_ICON = preload("res://common/icons/growth.svg")
|
||||
@export var random_seed : int
|
||||
|
||||
func _init(
|
||||
_plant_name : String,
|
||||
_plant_archetype : PlantArchetype,
|
||||
_plant_name : String = "",
|
||||
_plant_archetype : PlantArchetype = PlantArchetype.get_random(),
|
||||
_plant_mutations : Array[PlantMutation] = [],
|
||||
):
|
||||
plant_name = _plant_name
|
||||
@@ -27,23 +27,27 @@ static func generate_from_parent(plant_data : PlantData) -> Seed:
|
||||
return Seed.new(
|
||||
plant_data.plant_name,
|
||||
plant_data.archetype,
|
||||
mutate(plant_data.mutations)
|
||||
mutate_mutations(plant_data)
|
||||
)
|
||||
else :
|
||||
# TODO
|
||||
return Seed.new(
|
||||
plant_data.plant_name,
|
||||
plant_data.archetype,
|
||||
mutate(plant_data.mutations)
|
||||
plant_data.mutations.duplicate_deep()
|
||||
)
|
||||
|
||||
static func generate_random() -> Seed:
|
||||
return Seed.new(
|
||||
Random.generate_random_name(),
|
||||
PlantArchetype.new(),
|
||||
var new_seed = Seed.new(
|
||||
Random.generate_random_word(),
|
||||
PlantArchetype.get_random(),
|
||||
[]
|
||||
)
|
||||
if randf() > MUTATION_PROBABILITY:
|
||||
new_seed.plant_mutations.append(
|
||||
new_seed.plant_archetype.available_mutations.pick_random().duplicate_deep()
|
||||
)
|
||||
|
||||
return new_seed
|
||||
func get_item_name() -> String:
|
||||
return tr("%s_SEED") % plant_name
|
||||
|
||||
@@ -102,19 +106,11 @@ func card_info() -> CardInfo:
|
||||
|
||||
info.stats.append(
|
||||
CardStatInfo.new(
|
||||
tr("COST_%d_ENERGY") % energy_usage,
|
||||
str(energy_usage),
|
||||
ENERGY_ICON
|
||||
)
|
||||
)
|
||||
|
||||
if is_one_time_use():
|
||||
info.stats.append(
|
||||
CardStatInfo.new(
|
||||
tr("ONE_TIME_USE"),
|
||||
ONE_TIME_ICON
|
||||
)
|
||||
)
|
||||
|
||||
var effect_section = CardSectionInfo.new(
|
||||
tr("EFFECT"),
|
||||
get_description()
|
||||
@@ -127,10 +123,6 @@ func card_info() -> CardInfo:
|
||||
info.sections.append(effect_section)
|
||||
|
||||
if len(plant_mutations) != 0:
|
||||
var rarest : int = plant_mutations.map(
|
||||
func(m : PlantMutation) : return m.get_rarity()
|
||||
).max()
|
||||
info.bg_color = PlantMutation.get_rarity_color(rarest)
|
||||
for m in plant_mutations:
|
||||
info.sections.append(m.card_section())
|
||||
|
||||
@@ -149,69 +141,67 @@ func get_particles() -> Array[Particles.Parameters]:
|
||||
|
||||
return param
|
||||
|
||||
static func mutate(parent_mutation : Array[PlantMutation] = []) -> Array[PlantMutation]:
|
||||
static func mutate_mutations(parent : PlantData) -> Array[PlantMutation]:
|
||||
|
||||
# TODO
|
||||
# var possible_mutations_change : Array[MutationPossibility] = [
|
||||
# AddMutation.new()
|
||||
# ]
|
||||
var mutation_possibility : Array[MutationPossibility] = [
|
||||
AddMutation.new()
|
||||
]
|
||||
|
||||
# if (
|
||||
# len(parent_mutation) >= 2
|
||||
# ):
|
||||
# possible_mutations_change = [
|
||||
# UpgradeMutation.new(),
|
||||
# RemoveMutation.new(),
|
||||
# ]
|
||||
# elif len(parent_mutation) > 0:
|
||||
# possible_mutations_change = [
|
||||
# AddMutation.new(),
|
||||
# UpgradeMutation.new(),
|
||||
# RemoveMutation.new(),
|
||||
# ]
|
||||
if (
|
||||
len(parent.mutations) >= GameInfo.game_data.max_mutations_by_plant
|
||||
):
|
||||
mutation_possibility = [
|
||||
UpgradeMutation.new(),
|
||||
RemoveMutation.new(),
|
||||
]
|
||||
elif len(parent.mutations) > 0:
|
||||
mutation_possibility = [
|
||||
AddMutation.new(),
|
||||
UpgradeMutation.new(),
|
||||
RemoveMutation.new(),
|
||||
]
|
||||
|
||||
# var chosen_mutation = possible_mutations_change.pick_random()
|
||||
var chosen_mutation_possibility = mutation_possibility.pick_random()
|
||||
|
||||
return parent_mutation
|
||||
return chosen_mutation_possibility.mutate(parent)
|
||||
|
||||
class MutationPossibility:
|
||||
func mutate(_parent : PlantData)-> Array[PlantMutation]:
|
||||
return []
|
||||
|
||||
# class MutationPossibility:
|
||||
# func mutate(_parent_mutation : Array[PlantMutation] = [])-> Array[PlantMutation]:
|
||||
# return []
|
||||
class AddMutation extends MutationPossibility:
|
||||
func mutate(parent : PlantData)-> Array[PlantMutation]:
|
||||
var new_mutations = parent.mutations.duplicate_deep()
|
||||
var possible_new_mutations = parent.archetype.available_mutations.duplicate_deep()
|
||||
|
||||
# class AddMutation extends MutationPossibility:
|
||||
# func mutate(parent_mutation : Array[PlantMutation] = [])-> Array[PlantMutation]:
|
||||
# var new_mutations = parent_mutation.duplicate_deep()
|
||||
# var mut = PlantMutation.random_mutation(parent_mutation)
|
||||
possible_new_mutations = possible_new_mutations.filter(
|
||||
func (m : PlantMutation):
|
||||
return parent.mutations.find_custom(func(m2: PlantMutation): return m2.name == m.name) == -1
|
||||
)
|
||||
|
||||
if len(possible_new_mutations):
|
||||
new_mutations.append(possible_new_mutations.pick_random())
|
||||
|
||||
# if mut:
|
||||
# var existing_mut_id = new_mutations.find_custom(func(m:PlantMutation): return m.get_mutation_name() == mut.get_mutation_name())
|
||||
|
||||
# if existing_mut_id >= 0:
|
||||
# new_mutations[existing_mut_id].level += 1
|
||||
# else :
|
||||
# new_mutations.append(mut)
|
||||
return new_mutations
|
||||
|
||||
# return new_mutations
|
||||
class UpgradeMutation extends MutationPossibility:
|
||||
func mutate(
|
||||
parent : PlantData
|
||||
) -> Array[PlantMutation]:
|
||||
var new_mutations = parent.mutations.duplicate_deep()
|
||||
|
||||
# class UpgradeMutation extends MutationPossibility:
|
||||
# func mutate(
|
||||
# parent_mutation : Array[PlantMutation] = []
|
||||
# ) -> Array[PlantMutation]:
|
||||
# var new_mutations = parent_mutation.duplicate_deep()
|
||||
new_mutations.pick_random().level += 1
|
||||
|
||||
# new_mutations.pick_random().level += 1
|
||||
return new_mutations
|
||||
|
||||
# return new_mutations
|
||||
class RemoveMutation extends MutationPossibility:
|
||||
func mutate(parent : PlantData)-> Array[PlantMutation]:
|
||||
var new_mutations = parent.mutations.duplicate_deep()
|
||||
|
||||
# class RemoveMutation extends MutationPossibility:
|
||||
# func mutate(parent_mutation : Array[PlantMutation] = [])-> Array[PlantMutation]:
|
||||
# var new_mutations :Array[PlantMutation] = parent_mutation.duplicate_deep()
|
||||
var mut_to_remove = new_mutations.pick_random()
|
||||
if mut_to_remove.level > 1:
|
||||
mut_to_remove.level -= 1
|
||||
else:
|
||||
new_mutations.remove_at(new_mutations.find(mut_to_remove))
|
||||
|
||||
# var mut_to_remove = new_mutations.pick_random()
|
||||
# if mut_to_remove.level > 1:
|
||||
# mut_to_remove.level -= 1
|
||||
# else:
|
||||
# new_mutations.remove_at(new_mutations.find(mut_to_remove))
|
||||
|
||||
# return new_mutations
|
||||
return new_mutations
|
||||
|
||||
@@ -182,6 +182,7 @@ func use_item(item : Item):
|
||||
data.energy -= item.energy_usage
|
||||
if item.is_one_time_use():
|
||||
data.inventory.remove_item(item)
|
||||
region.save()
|
||||
|
||||
func upgrade_max_energy(amount = 1):
|
||||
data.max_energy += amount
|
||||
|
||||
67
entities/player_3d/player_3D.tscn
Normal file
67
entities/player_3d/player_3D.tscn
Normal file
@@ -0,0 +1,67 @@
|
||||
[gd_scene format=3 uid="uid://da7a74dg30q1l"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://3rrym6yv7xyp" path="res://entities/player_3d/scripts/player_3d.gd" id="1_pvvbh"]
|
||||
[ext_resource type="Material" uid="uid://cr7bp4fhh1ipr" path="res://entities/player_3d/resources/materials/post_process_quad.tres" id="2_fcmrk"]
|
||||
[ext_resource type="Theme" uid="uid://bgcmd213j6gk1" path="res://gui/ressources/hud.tres" id="2_qi48i"]
|
||||
[ext_resource type="PackedScene" uid="uid://clicjf8ts51h8" path="res://gui/game/inventory_gui/inventory_gui.tscn" id="3_ea0v7"]
|
||||
[ext_resource type="Texture2D" uid="uid://ba8vh5h3r6pr2" path="res://common/icons/focus.svg" id="4_sbfo8"]
|
||||
|
||||
[sub_resource type="QuadMesh" id="QuadMesh_o44vi"]
|
||||
size = Vector2(2, 2)
|
||||
|
||||
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_eodxe"]
|
||||
radius = 0.46868896
|
||||
height = 1.7342377
|
||||
|
||||
[node name="Player3D" type="CharacterBody3D" unique_id=549819967 node_paths=PackedStringArray("pointer_texture_rect")]
|
||||
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 0, 0, 0)
|
||||
script = ExtResource("1_pvvbh")
|
||||
pointer_texture_rect = NodePath("CanvasLayer/PointerTexture")
|
||||
|
||||
[node name="Camera3D" type="Camera3D" parent="." unique_id=2091917091]
|
||||
unique_name_in_owner = true
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.19785136, 0)
|
||||
near = 0.003
|
||||
|
||||
[node name="MeshInstance3D" type="MeshInstance3D" parent="Camera3D" unique_id=818458454]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.2)
|
||||
mesh = SubResource("QuadMesh_o44vi")
|
||||
surface_material_override/0 = ExtResource("2_fcmrk")
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="." unique_id=456230433]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.253273, 0)
|
||||
shape = SubResource("CapsuleShape3D_eodxe")
|
||||
|
||||
[node name="CanvasLayer" type="CanvasLayer" parent="." unique_id=1210282091]
|
||||
|
||||
[node name="MarginContainer" type="MarginContainer" parent="CanvasLayer" unique_id=355504485]
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
theme = ExtResource("2_qi48i")
|
||||
|
||||
[node name="Inventory" parent="CanvasLayer/MarginContainer" unique_id=820746652 instance=ExtResource("3_ea0v7")]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 4
|
||||
size_flags_vertical = 8
|
||||
|
||||
[node name="PointerTexture" type="TextureRect" parent="CanvasLayer" unique_id=99628184]
|
||||
unique_name_in_owner = true
|
||||
custom_minimum_size = Vector2(30, 30)
|
||||
anchors_preset = 8
|
||||
anchor_left = 0.5
|
||||
anchor_top = 0.5
|
||||
anchor_right = 0.5
|
||||
anchor_bottom = 0.5
|
||||
offset_left = -2.5
|
||||
offset_top = -2.5
|
||||
offset_right = 2.5
|
||||
offset_bottom = 2.5
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
size_flags_horizontal = 4
|
||||
size_flags_vertical = 4
|
||||
texture = ExtResource("4_sbfo8")
|
||||
expand_mode = 1
|
||||
@@ -0,0 +1,12 @@
|
||||
[gd_resource type="ShaderMaterial" format=3 uid="uid://cr7bp4fhh1ipr"]
|
||||
|
||||
[ext_resource type="Shader" uid="uid://n6r7u234l2iy" path="res://common/vfx/materials/shaders/3d_outline_2.gdshader" id="1_tvsbc"]
|
||||
|
||||
[resource]
|
||||
render_priority = 0
|
||||
shader = ExtResource("1_tvsbc")
|
||||
shader_parameter/step_count = 3
|
||||
shader_parameter/thickness = 2.0000000149012003
|
||||
shader_parameter/edge_color = Color(0.0627451, 0.05882353, 0.16862746, 1)
|
||||
shader_parameter/fade_start = 100.0
|
||||
shader_parameter/fade_length = 200.0
|
||||
@@ -5,7 +5,7 @@ const POINTER_ACTION_TEXTURE = preload("res://common/icons/hand-stop.svg")
|
||||
|
||||
@export var pointer_texture_rect : TextureRect
|
||||
|
||||
const SPEED = 2.0
|
||||
const SPEED = 4.0
|
||||
const MOUSE_SENSIVITY = 0.002
|
||||
const RAY_LENGTH = 10.
|
||||
|
||||
@@ -25,11 +25,10 @@ func _input(event):
|
||||
func _physics_process(delta):
|
||||
if query_mouse:
|
||||
update_mouse_hovered_cockpit_actions()
|
||||
if pointer_texture_rect :
|
||||
pointer_texture_rect.texture = (
|
||||
POINTER_ACTION_TEXTURE if cockpit_action_hovered != null
|
||||
else POINTER_TEXTURE
|
||||
)
|
||||
%PointerTexture.texture = (
|
||||
POINTER_ACTION_TEXTURE if cockpit_action_hovered != null
|
||||
else POINTER_TEXTURE
|
||||
)
|
||||
query_mouse = false
|
||||
|
||||
# Add the gravity.
|
||||
@@ -1,16 +1,17 @@
|
||||
[gd_scene load_steps=19 format=3 uid="uid://753270jjxmfg"]
|
||||
[gd_scene format=3 uid="uid://753270jjxmfg"]
|
||||
|
||||
[ext_resource type="Theme" uid="uid://bgcmd213j6gk1" path="res://gui/ressources/hud.tres" id="1_m317d"]
|
||||
[ext_resource type="Script" uid="uid://b7f10wuounfan" path="res://gui/game/card/scripts/card.gd" id="2_kpm7h"]
|
||||
[ext_resource type="FontFile" uid="uid://qt80w6o01q5s" path="res://gui/ressources/fonts/TitanOne-Regular.ttf" id="2_plgbn"]
|
||||
[ext_resource type="Script" uid="uid://dj2pv1hiwjfv0" path="res://gui/game/card/scripts/card_info.gd" id="3_7wc8v"]
|
||||
[ext_resource type="Texture2D" uid="uid://bt3g5bmar0icf" path="res://common/icons/growth.svg" id="3_kpm7h"]
|
||||
[ext_resource type="Texture2D" uid="uid://bd6qddv5ihkjr" path="res://common/icons/bucket.svg" id="3_pmldi"]
|
||||
[ext_resource type="Script" uid="uid://dgbh38j13g5kn" path="res://gui/game/card/scripts/card_section_info.gd" id="5_7wc8v"]
|
||||
[ext_resource type="Texture2D" uid="uid://0hbdgalf04e" path="res://common/icons/wood.svg" id="6_7wc8v"]
|
||||
[ext_resource type="Script" uid="uid://b4tkium34c831" path="res://gui/game/card/scripts/card_stat_info.gd" id="6_pmldi"]
|
||||
[ext_resource type="Texture2D" uid="uid://baaujfw8piywi" path="res://common/icons/dna.svg" id="7_mwhj8"]
|
||||
[ext_resource type="LabelSettings" uid="uid://dqwayi8yjwau2" path="res://gui/ressources/title_label_settings.tres" id="7_pmldi"]
|
||||
[ext_resource type="Theme" uid="uid://5au2k3vf2po3" path="res://gui/ressources/menu.tres" id="9_7wc8v"]
|
||||
[ext_resource type="Texture2D" uid="uid://bsvxhafoxwmw0" path="res://common/icons/cube-3d-sphere.svg" id="10_gibok"]
|
||||
[ext_resource type="Texture2D" uid="uid://deywxmh76nu5w" path="res://common/icons/caret-down.svg" id="11_kpm7h"]
|
||||
[ext_resource type="FontFile" uid="uid://3workc27eb0r" path="res://gui/ressources/fonts/Ubuntu/Ubuntu-B.ttf" id="11_pmldi"]
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_gibok"]
|
||||
bg_color = Color(1, 1, 1, 1)
|
||||
@@ -22,24 +23,26 @@ corner_radius_bottom_left = 20
|
||||
[sub_resource type="Resource" id="Resource_plgbn"]
|
||||
script = ExtResource("3_7wc8v")
|
||||
title = "Hello"
|
||||
type_icon = ExtResource("6_7wc8v")
|
||||
texture = ExtResource("7_mwhj8")
|
||||
important_stat_text = "10"
|
||||
important_stat_icon = ExtResource("3_kpm7h")
|
||||
important_stat_text = "8"
|
||||
important_stat_icon = ExtResource("3_pmldi")
|
||||
metadata/_custom_type_script = "uid://dj2pv1hiwjfv0"
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_vnqhg"]
|
||||
bg_color = Color(1, 1, 1, 1)
|
||||
corner_radius_top_left = 20
|
||||
corner_radius_top_right = 20
|
||||
corner_radius_bottom_right = 20
|
||||
corner_radius_bottom_left = 20
|
||||
|
||||
[sub_resource type="Theme" id="Theme_on5kv"]
|
||||
|
||||
[sub_resource type="LabelSettings" id="LabelSettings_sx78e"]
|
||||
[sub_resource type="LabelSettings" id="LabelSettings_gibok"]
|
||||
line_spacing = -24.965
|
||||
font = ExtResource("2_plgbn")
|
||||
font_size = 20
|
||||
font_color = Color(0.0627451, 0.05882353, 0.16862746, 1)
|
||||
|
||||
[sub_resource type="LabelSettings" id="LabelSettings_vnqhg"]
|
||||
line_spacing = -18.49
|
||||
font = ExtResource("11_pmldi")
|
||||
font_color = Color(0.0627451, 0.05882353, 0.16862746, 1)
|
||||
|
||||
[sub_resource type="LabelSettings" id="LabelSettings_on5kv"]
|
||||
font = ExtResource("2_plgbn")
|
||||
font_size = 40
|
||||
font_color = Color(1, 0.6509804, 0.09019608, 1)
|
||||
|
||||
[sub_resource type="Animation" id="Animation_7wc8v"]
|
||||
resource_name = "expand"
|
||||
@@ -49,10 +52,10 @@ _data = {
|
||||
&"expand": SubResource("Animation_7wc8v")
|
||||
}
|
||||
|
||||
[node name="Card" type="PanelContainer"]
|
||||
custom_minimum_size = Vector2(250, 0)
|
||||
[node name="Card" type="PanelContainer" unique_id=1085885349]
|
||||
custom_minimum_size = Vector2(300, 0)
|
||||
offset_right = 250.0
|
||||
offset_bottom = 229.0
|
||||
offset_bottom = 70.0
|
||||
size_flags_horizontal = 0
|
||||
size_flags_vertical = 0
|
||||
theme = ExtResource("1_m317d")
|
||||
@@ -60,120 +63,84 @@ theme_override_styles/panel = SubResource("StyleBoxFlat_gibok")
|
||||
script = ExtResource("2_kpm7h")
|
||||
info = SubResource("Resource_plgbn")
|
||||
|
||||
[node name="GridContainer" type="GridContainer" parent="."]
|
||||
[node name="MarginContainer" type="MarginContainer" parent="." unique_id=257784765]
|
||||
layout_mode = 2
|
||||
theme = ExtResource("1_m317d")
|
||||
theme_override_constants/h_separation = 0
|
||||
theme_override_constants/v_separation = 0
|
||||
|
||||
[node name="CardUpperPart" type="PanelContainer" parent="GridContainer"]
|
||||
unique_name_in_owner = true
|
||||
self_modulate = Color(0.13725491, 0.39215687, 0.6666667, 1)
|
||||
clip_contents = true
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
theme = ExtResource("1_m317d")
|
||||
theme_override_styles/panel = SubResource("StyleBoxFlat_vnqhg")
|
||||
|
||||
[node name="EntityTexture" type="TextureRect" parent="GridContainer/CardUpperPart"]
|
||||
unique_name_in_owner = true
|
||||
modulate = Color(1, 1, 1, 0.23137255)
|
||||
layout_mode = 2
|
||||
texture = ExtResource("7_mwhj8")
|
||||
expand_mode = 1
|
||||
stretch_mode = 6
|
||||
|
||||
[node name="MarginContainer" type="MarginContainer" parent="GridContainer/CardUpperPart"]
|
||||
layout_mode = 2
|
||||
theme = SubResource("Theme_on5kv")
|
||||
theme_override_constants/margin_left = 25
|
||||
|
||||
[node name="ContentContainer" type="VBoxContainer" parent="GridContainer/CardUpperPart/MarginContainer"]
|
||||
layout_mode = 2
|
||||
theme = ExtResource("1_m317d")
|
||||
theme_override_constants/separation = 10
|
||||
|
||||
[node name="TitleContainer" type="HBoxContainer" parent="GridContainer/CardUpperPart/MarginContainer/ContentContainer"]
|
||||
layout_mode = 2
|
||||
theme = ExtResource("1_m317d")
|
||||
|
||||
[node name="CardTitle" type="Label" parent="GridContainer/CardUpperPart/MarginContainer/ContentContainer/TitleContainer"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
text = "Hello"
|
||||
label_settings = SubResource("LabelSettings_sx78e")
|
||||
|
||||
[node name="CardTypeIcon" type="TextureRect" parent="GridContainer/CardUpperPart/MarginContainer/ContentContainer/TitleContainer"]
|
||||
unique_name_in_owner = true
|
||||
custom_minimum_size = Vector2(30, 30)
|
||||
layout_mode = 2
|
||||
theme = ExtResource("1_m317d")
|
||||
texture = ExtResource("6_7wc8v")
|
||||
expand_mode = 1
|
||||
stretch_mode = 5
|
||||
|
||||
[node name="CardStats" type="MarginContainer" parent="GridContainer/CardUpperPart/MarginContainer/ContentContainer"]
|
||||
unique_name_in_owner = true
|
||||
visible = false
|
||||
layout_mode = 2
|
||||
theme = ExtResource("1_m317d")
|
||||
theme_override_constants/margin_left = 0
|
||||
theme_override_constants/margin_top = 0
|
||||
theme_override_constants/margin_right = 40
|
||||
theme_override_constants/margin_bottom = 0
|
||||
|
||||
[node name="CardStatsContainer" type="VBoxContainer" parent="GridContainer/CardUpperPart/MarginContainer/ContentContainer/CardStats"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
theme = ExtResource("1_m317d")
|
||||
theme_override_constants/separation = 6
|
||||
|
||||
[node name="CardSections" type="MarginContainer" parent="GridContainer"]
|
||||
unique_name_in_owner = true
|
||||
visible = false
|
||||
layout_mode = 2
|
||||
|
||||
[node name="CardSectionsContainer" type="VBoxContainer" parent="GridContainer/CardSections"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
|
||||
[node name="ImportantStat" type="MarginContainer" parent="."]
|
||||
layout_mode = 2
|
||||
theme_override_constants/margin_left = 0
|
||||
theme_override_constants/margin_top = 30
|
||||
theme_override_constants/margin_right = 0
|
||||
theme_override_constants/margin_bottom = 0
|
||||
|
||||
[node name="CenterContainer" type="CenterContainer" parent="ImportantStat"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 0
|
||||
size_flags_vertical = 0
|
||||
use_top_left = true
|
||||
theme = ExtResource("9_7wc8v")
|
||||
theme_override_constants/margin_left = 12
|
||||
theme_override_constants/margin_top = 12
|
||||
theme_override_constants/margin_right = 12
|
||||
theme_override_constants/margin_bottom = 12
|
||||
|
||||
[node name="ImportantStatIcon" type="TextureRect" parent="ImportantStat/CenterContainer"]
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer" unique_id=1964894247]
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 0
|
||||
theme_override_constants/separation = 8
|
||||
|
||||
[node name="HeaderContainer" type="HBoxContainer" parent="MarginContainer/VBoxContainer" unique_id=996864300]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Titles" type="VBoxContainer" parent="MarginContainer/VBoxContainer/HeaderContainer" unique_id=1046118576]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
theme_override_constants/separation = 0
|
||||
alignment = 1
|
||||
|
||||
[node name="Title" type="Label" parent="MarginContainer/VBoxContainer/HeaderContainer/Titles" unique_id=1630293611]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 1
|
||||
text = "Hello"
|
||||
label_settings = SubResource("LabelSettings_gibok")
|
||||
|
||||
[node name="Subtitle" type="Label" parent="MarginContainer/VBoxContainer/HeaderContainer/Titles" unique_id=715832106]
|
||||
unique_name_in_owner = true
|
||||
visible = false
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 3
|
||||
label_settings = SubResource("LabelSettings_vnqhg")
|
||||
|
||||
[node name="ImportantStat" type="HBoxContainer" parent="MarginContainer/VBoxContainer/HeaderContainer" unique_id=637623184]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
theme_override_constants/separation = 0
|
||||
|
||||
[node name="ImportantStatText" type="Label" parent="MarginContainer/VBoxContainer/HeaderContainer/ImportantStat" unique_id=1183919207]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
text = "8"
|
||||
label_settings = SubResource("LabelSettings_on5kv")
|
||||
horizontal_alignment = 1
|
||||
vertical_alignment = 1
|
||||
|
||||
[node name="ImportantStatIcon" type="TextureRect" parent="MarginContainer/VBoxContainer/HeaderContainer/ImportantStat" unique_id=1669153698]
|
||||
unique_name_in_owner = true
|
||||
modulate = Color(1, 0.6509804, 0.09019608, 1)
|
||||
custom_minimum_size = Vector2(60, 60)
|
||||
layout_mode = 2
|
||||
texture = ExtResource("3_kpm7h")
|
||||
expand_mode = 1
|
||||
texture = ExtResource("3_pmldi")
|
||||
expand_mode = 3
|
||||
stretch_mode = 5
|
||||
|
||||
[node name="ImportantStatText" type="Label" parent="ImportantStat/CenterContainer"]
|
||||
[node name="StatsContainer" type="GridContainer" parent="MarginContainer/VBoxContainer" unique_id=608499902]
|
||||
unique_name_in_owner = true
|
||||
visible = false
|
||||
layout_mode = 2
|
||||
text = "10"
|
||||
label_settings = ExtResource("7_pmldi")
|
||||
theme_override_constants/h_separation = 8
|
||||
|
||||
[node name="ArrowDown" type="Control" parent="."]
|
||||
[node name="SectionContainer" type="VBoxContainer" parent="MarginContainer/VBoxContainer" unique_id=421491898]
|
||||
unique_name_in_owner = true
|
||||
visible = false
|
||||
layout_mode = 2
|
||||
theme_override_constants/separation = 8
|
||||
|
||||
[node name="ArrowDown" type="Control" parent="." unique_id=114640296]
|
||||
unique_name_in_owner = true
|
||||
visible = false
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 4
|
||||
size_flags_vertical = 8
|
||||
|
||||
[node name="TextureRect" type="TextureRect" parent="ArrowDown"]
|
||||
[node name="TextureRect" type="TextureRect" parent="ArrowDown" unique_id=795266440]
|
||||
layout_mode = 1
|
||||
anchors_preset = 8
|
||||
anchor_left = 0.5
|
||||
@@ -190,7 +157,5 @@ size_flags_horizontal = 4
|
||||
size_flags_vertical = 8
|
||||
texture = ExtResource("11_kpm7h")
|
||||
|
||||
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
|
||||
libraries = {
|
||||
&"": SubResource("AnimationLibrary_pmldi")
|
||||
}
|
||||
[node name="AnimationPlayer" type="AnimationPlayer" parent="." unique_id=966931682]
|
||||
libraries/ = SubResource("AnimationLibrary_pmldi")
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=9 format=3 uid="uid://bghefrgaujjt6"]
|
||||
[gd_scene format=3 uid="uid://bghefrgaujjt6"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://dcmee2jvohudl" path="res://gui/game/card/scripts/card_section.gd" id="1_41hkv"]
|
||||
[ext_resource type="Theme" uid="uid://bgcmd213j6gk1" path="res://gui/ressources/hud.tres" id="1_t7m3x"]
|
||||
@@ -8,9 +8,15 @@
|
||||
|
||||
[sub_resource type="Theme" id="Theme_vlpjv"]
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_3ktqg"]
|
||||
bg_color = Color(1, 1, 1, 1)
|
||||
corner_radius_top_left = 10
|
||||
corner_radius_top_right = 10
|
||||
corner_radius_bottom_right = 10
|
||||
corner_radius_bottom_left = 10
|
||||
|
||||
[sub_resource type="Resource" id="Resource_ycbno"]
|
||||
script = ExtResource("2_3ktqg")
|
||||
title_colored = true
|
||||
title_text = "Hello"
|
||||
title_icon = ExtResource("2_41hkv")
|
||||
text = "Hello"
|
||||
@@ -19,53 +25,56 @@ text = "Hello"
|
||||
font = ExtResource("3_3ktqg")
|
||||
font_size = 15
|
||||
|
||||
[node name="CardSection" type="VBoxContainer"]
|
||||
offset_right = 176.0
|
||||
offset_bottom = 71.0
|
||||
[node name="CardSection" type="PanelContainer" unique_id=691609187]
|
||||
self_modulate = Color(0.13725491, 0.39215687, 0.6666667, 1)
|
||||
offset_right = 141.0
|
||||
offset_bottom = 30.0
|
||||
theme = SubResource("Theme_vlpjv")
|
||||
theme_override_constants/separation = 6
|
||||
theme_override_styles/panel = SubResource("StyleBoxFlat_3ktqg")
|
||||
script = ExtResource("1_41hkv")
|
||||
info = SubResource("Resource_ycbno")
|
||||
|
||||
[node name="CardSectionTitle" type="HBoxContainer" parent="."]
|
||||
[node name="MarginContainer" type="MarginContainer" parent="." unique_id=1904543323]
|
||||
layout_mode = 2
|
||||
theme_override_constants/margin_left = 5
|
||||
theme_override_constants/margin_top = 5
|
||||
theme_override_constants/margin_right = 5
|
||||
theme_override_constants/margin_bottom = 5
|
||||
|
||||
[node name="CardSectionContainer" type="HBoxContainer" parent="MarginContainer" unique_id=1321500002]
|
||||
layout_mode = 2
|
||||
theme_override_constants/separation = 8
|
||||
alignment = 1
|
||||
|
||||
[node name="CardSectionTitle" type="HBoxContainer" parent="MarginContainer/CardSectionContainer" unique_id=2055951870]
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 0
|
||||
theme = ExtResource("1_t7m3x")
|
||||
theme_override_constants/separation = 6
|
||||
alignment = 1
|
||||
|
||||
[node name="TitleIcon" type="TextureRect" parent="CardSectionTitle"]
|
||||
[node name="TitleIcon" type="TextureRect" parent="MarginContainer/CardSectionContainer/CardSectionTitle" unique_id=1697232009]
|
||||
unique_name_in_owner = true
|
||||
modulate = Color(0.14509805, 0.75686276, 0.2784314, 1)
|
||||
custom_minimum_size = Vector2(20, 20)
|
||||
layout_mode = 2
|
||||
texture = ExtResource("2_41hkv")
|
||||
expand_mode = 1
|
||||
stretch_mode = 5
|
||||
|
||||
[node name="TitleText" type="Label" parent="CardSectionTitle"]
|
||||
[node name="TitleText" type="Label" parent="MarginContainer/CardSectionContainer/CardSectionTitle" unique_id=1260458359]
|
||||
unique_name_in_owner = true
|
||||
modulate = Color(0.14509805, 0.75686276, 0.2784314, 1)
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
theme = ExtResource("1_t7m3x")
|
||||
text = "Hello"
|
||||
label_settings = SubResource("LabelSettings_ycbno")
|
||||
autowrap_mode = 2
|
||||
|
||||
[node name="CardSectionTextContainer" type="MarginContainer" parent="."]
|
||||
layout_mode = 2
|
||||
theme = ExtResource("1_t7m3x")
|
||||
theme_override_constants/margin_left = 25
|
||||
theme_override_constants/margin_top = 0
|
||||
theme_override_constants/margin_right = 0
|
||||
theme_override_constants/margin_bottom = 0
|
||||
|
||||
[node name="Text" type="RichTextLabel" parent="CardSectionTextContainer"]
|
||||
[node name="Text" type="RichTextLabel" parent="MarginContainer/CardSectionContainer" unique_id=2102977326]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
theme = ExtResource("1_t7m3x")
|
||||
theme_override_colors/default_color = Color(0.0627451, 0.05882353, 0.16862746, 1)
|
||||
bbcode_enabled = true
|
||||
text = "Hello"
|
||||
text = "Lorem ipsum dolor sit amet"
|
||||
fit_content = true
|
||||
scroll_active = false
|
||||
vertical_alignment = 1
|
||||
|
||||
@@ -1,37 +1,60 @@
|
||||
[gd_scene load_steps=6 format=3 uid="uid://cpen6hj0rbw8x"]
|
||||
[gd_scene format=3 uid="uid://cpen6hj0rbw8x"]
|
||||
|
||||
[ext_resource type="Theme" uid="uid://bgcmd213j6gk1" path="res://gui/ressources/hud.tres" id="1_6abif"]
|
||||
[ext_resource type="FontFile" uid="uid://qt80w6o01q5s" path="res://gui/ressources/fonts/TitanOne-Regular.ttf" id="2_1d453"]
|
||||
[ext_resource type="Script" uid="uid://c8xxhu28xm4hy" path="res://gui/game/card/scripts/card_stat.gd" id="2_30iht"]
|
||||
[ext_resource type="Texture2D" uid="uid://baaujfw8piywi" path="res://common/icons/dna.svg" id="3_30iht"]
|
||||
[ext_resource type="Script" uid="uid://b4tkium34c831" path="res://gui/game/card/scripts/card_stat_info.gd" id="3_c3wpw"]
|
||||
|
||||
[sub_resource type="Resource" id="Resource_n0n76"]
|
||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_c3wpw"]
|
||||
bg_color = Color(0.5882353, 0.7019608, 0.85882354, 1)
|
||||
corner_radius_top_left = 10
|
||||
corner_radius_top_right = 10
|
||||
corner_radius_bottom_right = 10
|
||||
corner_radius_bottom_left = 10
|
||||
|
||||
[sub_resource type="Resource" id="Resource_c3wpw"]
|
||||
script = ExtResource("3_c3wpw")
|
||||
text = "5"
|
||||
icon = ExtResource("3_30iht")
|
||||
|
||||
[node name="CardStat" type="HBoxContainer"]
|
||||
offset_right = 222.0
|
||||
offset_bottom = 30.0
|
||||
theme = ExtResource("1_6abif")
|
||||
theme_override_constants/separation = 6
|
||||
[sub_resource type="LabelSettings" id="LabelSettings_n0n76"]
|
||||
font = ExtResource("2_1d453")
|
||||
font_size = 21
|
||||
|
||||
[node name="CardStat" type="PanelContainer" unique_id=951233065]
|
||||
custom_minimum_size = Vector2(0, 35)
|
||||
offset_right = 37.0
|
||||
offset_bottom = 35.0
|
||||
size_flags_horizontal = 3
|
||||
theme_override_styles/panel = SubResource("StyleBoxFlat_c3wpw")
|
||||
script = ExtResource("2_30iht")
|
||||
info = SubResource("Resource_n0n76")
|
||||
info = SubResource("Resource_c3wpw")
|
||||
|
||||
[node name="TextureRect" type="TextureRect" parent="."]
|
||||
[node name="MarginContainer" type="MarginContainer" parent="." unique_id=924241224]
|
||||
layout_mode = 2
|
||||
theme_override_constants/margin_left = 5
|
||||
theme_override_constants/margin_top = 5
|
||||
theme_override_constants/margin_right = 5
|
||||
theme_override_constants/margin_bottom = 5
|
||||
|
||||
[node name="HBoxContainer" type="HBoxContainer" parent="MarginContainer" unique_id=1028022027]
|
||||
modulate = Color(0.13725491, 0.39215687, 0.6666667, 1)
|
||||
layout_mode = 2
|
||||
theme_override_constants/separation = 0
|
||||
alignment = 1
|
||||
|
||||
[node name="RichTextLabel" type="Label" parent="MarginContainer/HBoxContainer" unique_id=486669629]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
theme = ExtResource("1_6abif")
|
||||
text = "5"
|
||||
label_settings = SubResource("LabelSettings_n0n76")
|
||||
|
||||
[node name="TextureRect" type="TextureRect" parent="MarginContainer/HBoxContainer" unique_id=1792367878]
|
||||
unique_name_in_owner = true
|
||||
custom_minimum_size = Vector2(20, 20)
|
||||
layout_mode = 2
|
||||
texture = ExtResource("3_30iht")
|
||||
expand_mode = 1
|
||||
stretch_mode = 5
|
||||
|
||||
[node name="RichTextLabel" type="RichTextLabel" parent="."]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 4
|
||||
theme = ExtResource("1_6abif")
|
||||
bbcode_enabled = true
|
||||
text = "[b]10[/b] A very long text that will eventually break"
|
||||
fit_content = true
|
||||
scroll_active = false
|
||||
autowrap_mode = 2
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=21 format=3 uid="uid://3ss8pvhsackj"]
|
||||
[gd_scene format=3 uid="uid://3ss8pvhsackj"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://753270jjxmfg" path="res://gui/game/card/card.tscn" id="1_we78f"]
|
||||
[ext_resource type="Shader" uid="uid://bqjwmomh851lc" path="res://common/vfx/materials/shaders/skew.gdshader" id="1_x54se"]
|
||||
@@ -15,20 +15,20 @@
|
||||
|
||||
[sub_resource type="Resource" id="Resource_l3vvu"]
|
||||
script = ExtResource("4_7xkgc")
|
||||
title_text = "Very nice section"
|
||||
title_text = "Hi"
|
||||
title_icon = ExtResource("5_lj1tr")
|
||||
text = "It's a very nice section with a very nice text"
|
||||
metadata/_custom_type_script = "uid://dgbh38j13g5kn"
|
||||
|
||||
[sub_resource type="Resource" id="Resource_biqg7"]
|
||||
script = ExtResource("5_1et8x")
|
||||
text = "Dna"
|
||||
text = "5"
|
||||
icon = ExtResource("7_vabmf")
|
||||
metadata/_custom_type_script = "uid://b4tkium34c831"
|
||||
|
||||
[sub_resource type="Resource" id="Resource_gskac"]
|
||||
script = ExtResource("5_1et8x")
|
||||
text = "Growth"
|
||||
text = "4"
|
||||
icon = ExtResource("8_1vjtn")
|
||||
metadata/_custom_type_script = "uid://b4tkium34c831"
|
||||
|
||||
@@ -46,8 +46,8 @@ metadata/_custom_type_script = "uid://dj2pv1hiwjfv0"
|
||||
shader = ExtResource("1_x54se")
|
||||
shader_parameter/fov = 90.0
|
||||
shader_parameter/cull_back = true
|
||||
shader_parameter/y_rot = -6.6836714e-05
|
||||
shader_parameter/x_rot = -7.941689e-05
|
||||
shader_parameter/y_rot = -1.4576089e-33
|
||||
shader_parameter/x_rot = 9.688164e-35
|
||||
shader_parameter/inset = 0.0
|
||||
|
||||
[sub_resource type="Animation" id="Animation_1et8x"]
|
||||
@@ -63,7 +63,7 @@ _data = {
|
||||
&"appear": SubResource("Animation_7xkgc")
|
||||
}
|
||||
|
||||
[node name="CardVisualiser" type="MarginContainer"]
|
||||
[node name="CardVisualiser" type="MarginContainer" unique_id=1151339649]
|
||||
anchors_preset = 8
|
||||
anchor_left = 0.5
|
||||
anchor_top = 0.5
|
||||
@@ -72,7 +72,7 @@ anchor_bottom = 0.5
|
||||
offset_left = -125.0
|
||||
offset_top = -30.0
|
||||
offset_right = 125.0
|
||||
offset_bottom = 30.0
|
||||
offset_bottom = 131.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
scale = Vector2(1.0000002, 1.0000002)
|
||||
@@ -86,37 +86,38 @@ theme_override_constants/margin_bottom = -25
|
||||
script = ExtResource("2_ntbk8")
|
||||
card_info = SubResource("Resource_eb1v6")
|
||||
|
||||
[node name="SubViewportContainer" type="SubViewportContainer" parent="."]
|
||||
[node name="SubViewportContainer" type="SubViewportContainer" parent="." unique_id=1594926759]
|
||||
unique_name_in_owner = true
|
||||
material = SubResource("ShaderMaterial_bw03i")
|
||||
layout_mode = 2
|
||||
mouse_filter = 2
|
||||
|
||||
[node name="SubViewport" type="SubViewport" parent="SubViewportContainer"]
|
||||
[node name="SubViewport" type="SubViewport" parent="SubViewportContainer" unique_id=2008659915]
|
||||
unique_name_in_owner = true
|
||||
transparent_bg = true
|
||||
handle_input_locally = false
|
||||
size = Vector2i(300, 110)
|
||||
size = Vector2i(300, 211)
|
||||
size_2d_override_stretch = true
|
||||
render_target_update_mode = 4
|
||||
|
||||
[node name="CardContainer" type="MarginContainer" parent="SubViewportContainer/SubViewport"]
|
||||
[node name="CardContainer" type="MarginContainer" parent="SubViewportContainer/SubViewport" unique_id=1240228608]
|
||||
unique_name_in_owner = true
|
||||
offset_right = 300.0
|
||||
offset_bottom = 110.0
|
||||
offset_bottom = 211.0
|
||||
mouse_filter = 2
|
||||
theme_override_constants/margin_left = 25
|
||||
theme_override_constants/margin_top = 25
|
||||
theme_override_constants/margin_right = 25
|
||||
theme_override_constants/margin_bottom = 25
|
||||
|
||||
[node name="Card" parent="SubViewportContainer/SubViewport/CardContainer" instance=ExtResource("1_we78f")]
|
||||
[node name="Card" parent="SubViewportContainer/SubViewport/CardContainer" unique_id=1169470018 instance=ExtResource("1_we78f")]
|
||||
unique_name_in_owner = true
|
||||
custom_minimum_size = Vector2(250, 0)
|
||||
layout_mode = 2
|
||||
mouse_filter = 2
|
||||
down_arrow = true
|
||||
info = SubResource("Resource_eb1v6")
|
||||
|
||||
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
|
||||
[node name="AnimationPlayer" type="AnimationPlayer" parent="." unique_id=459254440]
|
||||
unique_name_in_owner = true
|
||||
libraries = {
|
||||
&"": SubResource("AnimationLibrary_r0jrf")
|
||||
}
|
||||
libraries/ = SubResource("AnimationLibrary_r0jrf")
|
||||
|
||||
@@ -4,54 +4,57 @@ class_name Card
|
||||
|
||||
const CARD_STAT_SCENE : PackedScene = preload("res://gui/game/card/card_stat.tscn")
|
||||
const CARD_SECTION_SCENE : PackedScene = preload("res://gui/game/card/card_section.tscn")
|
||||
|
||||
@export var small_mode : bool = false
|
||||
@export var down_arrow : bool = false
|
||||
|
||||
@export var info : CardInfo = CardInfo.new("Default Card Name")
|
||||
|
||||
@export_tool_button("Update", "Callable") var update_action = update
|
||||
@export_tool_button("Reset Size", "Callable") var reset_size_action = func(): reset_size()
|
||||
|
||||
func _ready():
|
||||
update()
|
||||
# func _ready():
|
||||
# update()
|
||||
|
||||
func update():
|
||||
%CardTitle.text = info.title
|
||||
%CardUpperPart.self_modulate = info.bg_color
|
||||
%CardTypeIcon.texture = info.type_icon
|
||||
%EntityTexture.texture = info.texture
|
||||
pass
|
||||
%Title.text = info.title
|
||||
%Subtitle.visible = info.subtitle != ""
|
||||
%Subtitle.text = info.subtitle
|
||||
|
||||
%ImportantStat.visible = info.important_stat_text != "" or info.important_stat_icon != null
|
||||
%ImportantStatIcon.texture = info.important_stat_icon
|
||||
%ImportantStatText.text = info.important_stat_text
|
||||
|
||||
%ArrowDown.visible = down_arrow
|
||||
|
||||
self_modulate = Color.TRANSPARENT if small_mode else Color.WHITE
|
||||
%CardUpperPart.self_modulate.a = 0.7 if small_mode else 1.0
|
||||
|
||||
update_card_stats()
|
||||
update_card_sections()
|
||||
|
||||
await get_tree().create_timer(0.01).timeout
|
||||
|
||||
reset_size()
|
||||
|
||||
func update_card_stats():
|
||||
for stat in %CardStatsContainer.get_children():
|
||||
for stat in %StatsContainer.get_children():
|
||||
stat.queue_free()
|
||||
|
||||
%StatsContainer.visible = len(info.stats) > 0
|
||||
%StatsContainer.columns = max(1,len(info.stats))
|
||||
|
||||
for stat_info in info.stats:
|
||||
if stat_info:
|
||||
var new_stat : CardStat = CARD_STAT_SCENE.instantiate() as CardStat
|
||||
new_stat.info = stat_info
|
||||
%CardStatsContainer.add_child(new_stat)
|
||||
|
||||
%CardStats.visible = len(info.stats) != 0 && small_mode == false
|
||||
%StatsContainer.add_child(new_stat)
|
||||
|
||||
func update_card_sections():
|
||||
for stat in %CardSectionsContainer.get_children():
|
||||
for stat in %SectionContainer.get_children():
|
||||
stat.queue_free()
|
||||
|
||||
%SectionContainer.visible = len(info.sections) > 0
|
||||
|
||||
for sections_info in info.sections:
|
||||
if sections_info:
|
||||
var new_section : CardSection = CARD_SECTION_SCENE.instantiate() as CardSection
|
||||
new_section.info = sections_info
|
||||
%CardSectionsContainer.add_child(new_section)
|
||||
|
||||
%CardSections.visible = len(%CardSectionsContainer.get_children()) != 0 && small_mode == false
|
||||
%SectionContainer.add_child(new_section)
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@ extends Resource
|
||||
class_name CardInfo
|
||||
|
||||
@export var title : String
|
||||
@export var bg_color : Color = Color("2364aaff")
|
||||
@export var subtitle : String
|
||||
@export var type_icon : Texture = preload("res://common/icons/cube-3d-sphere.svg")
|
||||
@export var texture : Texture
|
||||
|
||||
@@ -14,5 +14,7 @@ class_name CardInfo
|
||||
|
||||
func _init(
|
||||
_title : String = "",
|
||||
_subtitle : String = ""
|
||||
):
|
||||
title = _title
|
||||
title = _title
|
||||
subtitle = _subtitle
|
||||
@@ -1,5 +1,5 @@
|
||||
@tool
|
||||
extends VBoxContainer
|
||||
extends PanelContainer
|
||||
class_name CardSection
|
||||
|
||||
const DEFAULT_ICON_COLOR = Color("96b3dbff")
|
||||
@@ -16,5 +16,4 @@ func update():
|
||||
%Text.text = info.text
|
||||
%TitleIcon.texture = info.title_icon
|
||||
%TitleText.text = info.title_text
|
||||
%TitleIcon.modulate = info.title_color if info.title_colored else DEFAULT_ICON_COLOR
|
||||
%TitleText.modulate = info.title_color if info.title_colored else DEFAULT_TITLE_COLOR
|
||||
self_modulate = info.color
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
extends Resource
|
||||
class_name CardSectionInfo
|
||||
|
||||
@export var title_colored : bool = false
|
||||
@export var title_color : Color = Color("25c147ff")
|
||||
@export var color : Color = Color('2364aaff')
|
||||
@export var title_text : String = ""
|
||||
@export var title_icon : Texture = null
|
||||
@export_multiline var text : String = ""
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
@tool
|
||||
extends HBoxContainer
|
||||
extends PanelContainer
|
||||
class_name CardStat
|
||||
|
||||
var is_ready = false
|
||||
@@ -16,5 +16,7 @@ func _ready():
|
||||
update()
|
||||
|
||||
func update():
|
||||
%RichTextLabel.visible = info.text != ""
|
||||
%RichTextLabel.text = info.text
|
||||
%TextureRect.visible = info.icon != null
|
||||
%TextureRect.texture = info.icon
|
||||
|
||||
@@ -20,14 +20,6 @@ var is_ready = false
|
||||
if is_ready :
|
||||
update()
|
||||
|
||||
@export var small_mode : bool = true :
|
||||
set(v):
|
||||
var old = small_mode
|
||||
small_mode = v
|
||||
if is_ready and old != small_mode :
|
||||
update()
|
||||
|
||||
@export var interactive_small_mode : bool = true
|
||||
@export var interactive_zoom : bool = false
|
||||
|
||||
@export var down_arrow : bool = true :
|
||||
@@ -62,11 +54,9 @@ func _process(_d):
|
||||
|
||||
if is_mouse_over():
|
||||
wanted_rot = center_relative_mouse_position * MAX_ROT
|
||||
if interactive_small_mode: small_mode = false
|
||||
if interactive_zoom: scale = scale.lerp(Vector2.ONE * ZOOM_SCALE, 0.2)
|
||||
else:
|
||||
wanted_rot = Vector2.ZERO
|
||||
if interactive_small_mode: small_mode = true
|
||||
if interactive_zoom: scale = scale.lerp(Vector2.ONE, 0.2)
|
||||
|
||||
real_rot = real_rot.lerp(wanted_rot, 0.1)
|
||||
@@ -92,7 +82,6 @@ func is_mouse_over() -> bool:
|
||||
func update():
|
||||
if card_info:
|
||||
%Card.info = card_info
|
||||
%Card.small_mode = small_mode
|
||||
%Card.down_arrow = down_arrow
|
||||
%Card.update()
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=8 format=3 uid="uid://12nak7amd1uq"]
|
||||
[gd_scene format=3 uid="uid://12nak7amd1uq"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://cqao7n800qy40" path="res://gui/game/scripts/game_gui.gd" id="1_udau0"]
|
||||
[ext_resource type="Theme" uid="uid://bgcmd213j6gk1" path="res://gui/ressources/hud.tres" id="2_nq5i2"]
|
||||
@@ -8,10 +8,10 @@
|
||||
[ext_resource type="Texture2D" uid="uid://bt3g5bmar0icf" path="res://common/icons/growth.svg" id="7_id0t5"]
|
||||
[ext_resource type="PackedScene" uid="uid://clicjf8ts51h8" path="res://gui/game/inventory_gui/inventory_gui.tscn" id="9_id0t5"]
|
||||
|
||||
[node name="GameGui" type="CanvasLayer"]
|
||||
[node name="GameGui" type="CanvasLayer" unique_id=274698556]
|
||||
script = ExtResource("1_udau0")
|
||||
|
||||
[node name="ScoreParticles" type="Control" parent="."]
|
||||
[node name="ScoreParticles" type="Control" parent="." unique_id=842190807]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 3
|
||||
anchors_preset = 15
|
||||
@@ -21,10 +21,10 @@ grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
mouse_filter = 2
|
||||
|
||||
[node name="Announce" parent="." instance=ExtResource("4_h6540")]
|
||||
[node name="Announce" parent="." unique_id=94658910 instance=ExtResource("4_h6540")]
|
||||
unique_name_in_owner = true
|
||||
|
||||
[node name="MarginContainer" type="MarginContainer" parent="."]
|
||||
[node name="MarginContainer" type="MarginContainer" parent="." unique_id=2054297293]
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
@@ -33,15 +33,17 @@ grow_vertical = 2
|
||||
mouse_filter = 2
|
||||
theme = ExtResource("2_nq5i2")
|
||||
|
||||
[node name="EnergyInfo" parent="MarginContainer" instance=ExtResource("4_2wykm")]
|
||||
[node name="EnergyInfo" parent="MarginContainer" unique_id=1742208693 instance=ExtResource("4_2wykm")]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
mouse_filter = 2
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer"]
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer" unique_id=1862106420]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 4
|
||||
mouse_filter = 2
|
||||
|
||||
[node name="ChargeCount" type="Label" parent="MarginContainer/VBoxContainer"]
|
||||
[node name="ChargeCount" type="Label" parent="MarginContainer/VBoxContainer" unique_id=587242538]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 4
|
||||
@@ -51,25 +53,27 @@ label_settings = ExtResource("4_ujg5r")
|
||||
horizontal_alignment = 1
|
||||
vertical_alignment = 1
|
||||
|
||||
[node name="QuotaProgressBar" type="ProgressBar" parent="MarginContainer/VBoxContainer"]
|
||||
[node name="QuotaProgressBar" type="ProgressBar" parent="MarginContainer/VBoxContainer" unique_id=1464968400]
|
||||
unique_name_in_owner = true
|
||||
custom_minimum_size = Vector2(400, 50)
|
||||
layout_mode = 2
|
||||
mouse_filter = 2
|
||||
theme = ExtResource("2_nq5i2")
|
||||
rounded = true
|
||||
show_percentage = false
|
||||
|
||||
[node name="HBoxContainer" type="HBoxContainer" parent="MarginContainer/VBoxContainer/QuotaProgressBar"]
|
||||
[node name="HBoxContainer" type="HBoxContainer" parent="MarginContainer/VBoxContainer/QuotaProgressBar" unique_id=1897590382]
|
||||
layout_mode = 1
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
mouse_filter = 2
|
||||
theme_override_constants/separation = 2
|
||||
alignment = 1
|
||||
|
||||
[node name="ObjectiveProgressText" type="Label" parent="MarginContainer/VBoxContainer/QuotaProgressBar/HBoxContainer"]
|
||||
[node name="ObjectiveProgressText" type="Label" parent="MarginContainer/VBoxContainer/QuotaProgressBar/HBoxContainer" unique_id=1326076389]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
text = "X"
|
||||
@@ -77,14 +81,15 @@ label_settings = ExtResource("4_ujg5r")
|
||||
horizontal_alignment = 1
|
||||
vertical_alignment = 1
|
||||
|
||||
[node name="ObjectiveIcon" type="TextureRect" parent="MarginContainer/VBoxContainer/QuotaProgressBar/HBoxContainer"]
|
||||
[node name="ObjectiveIcon" type="TextureRect" parent="MarginContainer/VBoxContainer/QuotaProgressBar/HBoxContainer" unique_id=857464776]
|
||||
custom_minimum_size = Vector2(30, 30)
|
||||
layout_mode = 2
|
||||
mouse_filter = 2
|
||||
texture = ExtResource("7_id0t5")
|
||||
expand_mode = 1
|
||||
stretch_mode = 5
|
||||
|
||||
[node name="Inventory" parent="MarginContainer" instance=ExtResource("9_id0t5")]
|
||||
[node name="Inventory" parent="MarginContainer" unique_id=1407862321 instance=ExtResource("9_id0t5")]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 4
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=9 format=3 uid="uid://yk78ubpu5ghq"]
|
||||
[gd_scene format=3 uid="uid://yk78ubpu5ghq"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://2qomrdxbvxqa" path="res://gui/game/pass_day/scripts/pass_day.gd" id="1_0pm4g"]
|
||||
[ext_resource type="Shader" uid="uid://cuni3ggtw2uuy" path="res://common/vfx/materials/shaders/blur.gdshader" id="1_v570a"]
|
||||
@@ -10,24 +10,17 @@
|
||||
|
||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_27lg1"]
|
||||
shader = ExtResource("1_v570a")
|
||||
shader_parameter/strength = 10.0
|
||||
shader_parameter/mix_percentage = 0.8
|
||||
shader_parameter/strength = 0.0
|
||||
shader_parameter/mix_percentage = 0.0
|
||||
|
||||
[node name="PassDay" type="Control"]
|
||||
z_index = 100
|
||||
layout_mode = 3
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
[node name="PassDay" type="CanvasLayer" unique_id=335255544]
|
||||
layer = 3
|
||||
script = ExtResource("1_0pm4g")
|
||||
|
||||
[node name="Blur" type="ColorRect" parent="."]
|
||||
[node name="Blur" type="ColorRect" parent="." unique_id=546890405]
|
||||
unique_name_in_owner = true
|
||||
physics_interpolation_mode = 0
|
||||
material = SubResource("ShaderMaterial_27lg1")
|
||||
layout_mode = 1
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
@@ -35,12 +28,10 @@ grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
mouse_filter = 2
|
||||
script = ExtResource("2_bhfpo")
|
||||
blur_strength = 10.0
|
||||
blur_mix_percentage = 0.8
|
||||
|
||||
[node name="PassDayInfo" type="VBoxContainer" parent="."]
|
||||
[node name="PassDayInfo" type="VBoxContainer" parent="." unique_id=833110506]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 1
|
||||
visible = false
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
@@ -49,17 +40,17 @@ grow_vertical = 2
|
||||
theme = ExtResource("4_0pm4g")
|
||||
alignment = 1
|
||||
|
||||
[node name="PassDayInfoAnimationPlayer" type="Node" parent="PassDayInfo"]
|
||||
[node name="PassDayInfoAnimationPlayer" type="Node" parent="PassDayInfo" unique_id=857480517]
|
||||
unique_name_in_owner = true
|
||||
script = ExtResource("5_dqmg8")
|
||||
metadata/_custom_type_script = "uid://0dhj8sdpil7q"
|
||||
|
||||
[node name="EnergyPassDayInfo" parent="PassDayInfo" instance=ExtResource("2_feyaf")]
|
||||
[node name="EnergyPassDayInfo" parent="PassDayInfo" unique_id=2044341204 instance=ExtResource("2_feyaf")]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
|
||||
[node name="ChargeCount" type="Label" parent="PassDayInfo"]
|
||||
[node name="ChargeCount" type="Label" parent="PassDayInfo" unique_id=1326590358]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 4
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
@tool
|
||||
extends Control
|
||||
extends CanvasLayer
|
||||
class_name PassDay
|
||||
|
||||
const BLUR_STRENGTH = 10
|
||||
@@ -26,6 +26,7 @@ var is_animation_disappeared := false
|
||||
func _ready():
|
||||
hide()
|
||||
setup_energy_values()
|
||||
%Blur.show()
|
||||
%PassDayInfo.hide()
|
||||
|
||||
func _process(delta):
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=16 format=3 uid="uid://csiacsndm62ll"]
|
||||
[gd_scene format=3 uid="uid://csiacsndm62ll"]
|
||||
|
||||
[ext_resource type="Theme" uid="uid://bgcmd213j6gk1" path="res://gui/ressources/hud.tres" id="1_51ks3"]
|
||||
[ext_resource type="Script" uid="uid://crt2d4m5ba25i" path="res://gui/game/pause/scripts/pause.gd" id="1_he4ox"]
|
||||
@@ -81,13 +81,13 @@ _data = {
|
||||
&"pause": SubResource("Animation_apjlw")
|
||||
}
|
||||
|
||||
[node name="Pause" type="CanvasLayer"]
|
||||
[node name="Pause" type="CanvasLayer" unique_id=2045727851]
|
||||
process_mode = 3
|
||||
layer = 100
|
||||
visible = false
|
||||
script = ExtResource("1_he4ox")
|
||||
|
||||
[node name="Container" type="Control" parent="."]
|
||||
[node name="Container" type="Control" parent="." unique_id=69447299]
|
||||
layout_mode = 3
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
@@ -95,7 +95,7 @@ anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
|
||||
[node name="ColorRect" type="ColorRect" parent="Container"]
|
||||
[node name="ColorRect" type="ColorRect" parent="Container" unique_id=862826206]
|
||||
material = SubResource("ShaderMaterial_58dya")
|
||||
layout_mode = 1
|
||||
anchors_preset = 15
|
||||
@@ -105,7 +105,7 @@ grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
color = Color(0.0352941, 0.0196078, 0.12549, 0.705882)
|
||||
|
||||
[node name="MarginContainer" type="MarginContainer" parent="Container"]
|
||||
[node name="MarginContainer" type="MarginContainer" parent="Container" unique_id=243001225]
|
||||
layout_mode = 1
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
@@ -114,57 +114,55 @@ grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
theme = ExtResource("1_51ks3")
|
||||
|
||||
[node name="Pause" type="VBoxContainer" parent="Container/MarginContainer"]
|
||||
[node name="Pause" type="VBoxContainer" parent="Container/MarginContainer" unique_id=1262577626]
|
||||
layout_mode = 2
|
||||
theme = ExtResource("1_51ks3")
|
||||
theme_override_constants/separation = 20
|
||||
alignment = 1
|
||||
|
||||
[node name="PauseTitle" type="Label" parent="Container/MarginContainer/Pause"]
|
||||
[node name="PauseTitle" type="Label" parent="Container/MarginContainer/Pause" unique_id=1390949032]
|
||||
layout_mode = 2
|
||||
text = "PAUSE"
|
||||
label_settings = SubResource("LabelSettings_apjlw")
|
||||
horizontal_alignment = 1
|
||||
|
||||
[node name="HBoxContainer" type="VBoxContainer" parent="Container/MarginContainer/Pause"]
|
||||
[node name="HBoxContainer" type="VBoxContainer" parent="Container/MarginContainer/Pause" unique_id=616663351]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 4
|
||||
alignment = 1
|
||||
|
||||
[node name="Resume" type="Button" parent="Container/MarginContainer/Pause/HBoxContainer"]
|
||||
[node name="Resume" type="Button" parent="Container/MarginContainer/Pause/HBoxContainer" unique_id=163836777]
|
||||
layout_mode = 2
|
||||
theme = ExtResource("1_51ks3")
|
||||
text = "RESUME_GAME"
|
||||
icon = ExtResource("5_apjlw")
|
||||
|
||||
[node name="Settings" type="Button" parent="Container/MarginContainer/Pause/HBoxContainer"]
|
||||
[node name="Settings" type="Button" parent="Container/MarginContainer/Pause/HBoxContainer" unique_id=1532435179]
|
||||
layout_mode = 2
|
||||
text = "SETTINGS"
|
||||
icon = ExtResource("6_yj6f1")
|
||||
|
||||
[node name="Controls" type="Button" parent="Container/MarginContainer/Pause/HBoxContainer"]
|
||||
[node name="Controls" type="Button" parent="Container/MarginContainer/Pause/HBoxContainer" unique_id=138156239]
|
||||
layout_mode = 2
|
||||
text = "CONTROLS"
|
||||
icon = ExtResource("7_7c7ks")
|
||||
|
||||
[node name="Quit" type="Button" parent="Container/MarginContainer/Pause/HBoxContainer"]
|
||||
[node name="Quit" type="Button" parent="Container/MarginContainer/Pause/HBoxContainer" unique_id=1740895928]
|
||||
layout_mode = 2
|
||||
text = "QUIT"
|
||||
icon = ExtResource("7_yj6f1")
|
||||
|
||||
[node name="Settings" parent="." instance=ExtResource("4_58dya")]
|
||||
[node name="Settings" parent="." unique_id=758381952 instance=ExtResource("4_58dya")]
|
||||
unique_name_in_owner = true
|
||||
mouse_filter = 2
|
||||
|
||||
[node name="Controls" parent="." instance=ExtResource("11_urlqn")]
|
||||
[node name="Controls" parent="." unique_id=358658336 instance=ExtResource("11_urlqn")]
|
||||
unique_name_in_owner = true
|
||||
mouse_filter = 2
|
||||
|
||||
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
|
||||
[node name="AnimationPlayer" type="AnimationPlayer" parent="." unique_id=1779993260]
|
||||
unique_name_in_owner = true
|
||||
libraries = {
|
||||
&"": SubResource("AnimationLibrary_yj6f1")
|
||||
}
|
||||
libraries/ = SubResource("AnimationLibrary_yj6f1")
|
||||
|
||||
[connection signal="pressed" from="Container/MarginContainer/Pause/HBoxContainer/Resume" to="." method="_on_resume_pressed"]
|
||||
[connection signal="pressed" from="Container/MarginContainer/Pause/HBoxContainer/Settings" to="." method="_on_settings_pressed"]
|
||||
|
||||
@@ -14,8 +14,11 @@ func set_pause(p):
|
||||
%Controls.close_controls()
|
||||
if p :
|
||||
Input.mouse_mode = Input.MOUSE_MODE_VISIBLE
|
||||
elif SceneManager.actual_scene.mouse_captured:
|
||||
elif GameInfo.game_data.actual_scene.mouse_captured:
|
||||
Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
|
||||
|
||||
if not p:
|
||||
GameInfo.save_settings()
|
||||
|
||||
func _input(_event):
|
||||
if Input.is_action_just_pressed("pause"):
|
||||
|
||||
@@ -13,7 +13,7 @@ func _ready():
|
||||
GameInfo.game_data.current_region_data.plant_changing_score.connect(_on_plant_changing_score)
|
||||
GameInfo.game_data.player_data.updated.connect(_on_player_updated)
|
||||
GameInfo.game_data.current_region_data.pass_day_ended.connect(_on_region_pass_day_ended)
|
||||
|
||||
|
||||
score_mirror = GameInfo.game_data.current_region_data.get_score()
|
||||
|
||||
charge_update(GameInfo.game_data.current_region_data)
|
||||
@@ -51,6 +51,8 @@ func score_update(with_animation = true):
|
||||
else: %QuotaProgressBar.value = objective_progression_percent
|
||||
|
||||
func _on_plant_changing_score(plant_data: PlantData, amount : int):
|
||||
if GameInfo.game_data.current_region_data.in_passing_day_animation:
|
||||
await GameInfo.game_data.current_region_data.pass_day_ended
|
||||
if amount <= 0:
|
||||
score_mirror += amount
|
||||
else :
|
||||
@@ -64,15 +66,13 @@ func _on_plant_changing_score(plant_data: PlantData, amount : int):
|
||||
0.8
|
||||
)
|
||||
|
||||
await get_tree().create_timer(0.3 / max(1,i)).timeout
|
||||
await get_tree().create_timer(0.5 / max(1.,i)).timeout
|
||||
|
||||
func spawn_score_particle(
|
||||
from_position,
|
||||
to_position,
|
||||
duration
|
||||
):
|
||||
if GameInfo.game_data.current_region_data.in_passing_day_animation:
|
||||
await GameInfo.game_data.current_region_data.pass_day_ended
|
||||
var sprite_particle = Sprite2D.new()
|
||||
sprite_particle.texture = SCORE_ICON
|
||||
%ScoreParticles.add_child(sprite_particle)
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
extends Control
|
||||
class_name GuiSettings
|
||||
|
||||
@onready var settings : SettingsData = GameInfo.game_data.settings
|
||||
@onready var settings : SettingsData = GameInfo.settings_data
|
||||
|
||||
@export_tool_button("Open", "Callable") var open_action = open_settings
|
||||
@export_tool_button("Close", "Callable") var close_action = close_settings
|
||||
@@ -19,6 +19,7 @@ func open_settings():
|
||||
%SettingsWindow.open_window()
|
||||
|
||||
func close_settings():
|
||||
GameInfo.save_settings()
|
||||
%SettingsWindow.close_window()
|
||||
|
||||
func setup_languages():
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=23 format=3 uid="uid://0yr6b2jtuttm"]
|
||||
[gd_scene format=3 uid="uid://0yr6b2jtuttm"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://vhumsfntpqcl" path="res://gui/pointer/scripts/pointer.gd" id="1_1pe2k"]
|
||||
[ext_resource type="Texture2D" uid="uid://bspffyprdywgc" path="res://gui/pointer/assets/cursors/pointer.svg" id="2_q4bvb"]
|
||||
@@ -55,15 +55,15 @@ stats = Array[ExtResource("10_d4v46")]([SubResource("Resource_biqg7"), SubResour
|
||||
sections = Array[ExtResource("9_s1ym6")]([SubResource("Resource_l3vvu")])
|
||||
metadata/_custom_type_script = "uid://dj2pv1hiwjfv0"
|
||||
|
||||
[node name="Pointer" type="Node"]
|
||||
[node name="Pointer" type="Node" unique_id=778512969]
|
||||
process_mode = 3
|
||||
script = ExtResource("1_1pe2k")
|
||||
default_cursor = ExtResource("2_q4bvb")
|
||||
|
||||
[node name="InspectorCanvasLayer" type="CanvasLayer" parent="."]
|
||||
[node name="InspectorCanvasLayer" type="CanvasLayer" parent="." unique_id=561032710]
|
||||
layer = 128
|
||||
|
||||
[node name="Inspector" type="Control" parent="InspectorCanvasLayer"]
|
||||
[node name="Inspector" type="Control" parent="InspectorCanvasLayer" unique_id=881903764]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 3
|
||||
anchors_preset = 0
|
||||
@@ -71,7 +71,7 @@ offset_right = 40.0
|
||||
offset_bottom = 40.0
|
||||
mouse_filter = 2
|
||||
|
||||
[node name="Container" type="VBoxContainer" parent="InspectorCanvasLayer/Inspector"]
|
||||
[node name="Container" type="VBoxContainer" parent="InspectorCanvasLayer/Inspector" unique_id=319962477]
|
||||
layout_mode = 0
|
||||
offset_left = 28.0
|
||||
offset_right = 134.0
|
||||
@@ -80,25 +80,25 @@ size_flags_horizontal = 0
|
||||
size_flags_vertical = 0
|
||||
mouse_filter = 2
|
||||
|
||||
[node name="Action" type="HBoxContainer" parent="InspectorCanvasLayer/Inspector/Container"]
|
||||
[node name="Action" type="HBoxContainer" parent="InspectorCanvasLayer/Inspector/Container" unique_id=175707332]
|
||||
unique_name_in_owner = true
|
||||
custom_minimum_size = Vector2(0, 20)
|
||||
layout_mode = 2
|
||||
|
||||
[node name="MouseImage" type="TextureRect" parent="InspectorCanvasLayer/Inspector/Container/Action"]
|
||||
[node name="MouseImage" type="TextureRect" parent="InspectorCanvasLayer/Inspector/Container/Action" unique_id=530309967]
|
||||
layout_mode = 2
|
||||
texture = ExtResource("3_pshoq")
|
||||
expand_mode = 2
|
||||
stretch_mode = 5
|
||||
|
||||
[node name="ActionEnergyImage" type="TextureRect" parent="InspectorCanvasLayer/Inspector/Container/Action"]
|
||||
[node name="ActionEnergyImage" type="TextureRect" parent="InspectorCanvasLayer/Inspector/Container/Action" unique_id=1684096069]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
texture = ExtResource("4_b4uwv")
|
||||
expand_mode = 2
|
||||
stretch_mode = 5
|
||||
|
||||
[node name="ActionText" type="RichTextLabel" parent="InspectorCanvasLayer/Inspector/Container/Action"]
|
||||
[node name="ActionText" type="RichTextLabel" parent="InspectorCanvasLayer/Inspector/Container/Action" unique_id=1137643470]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
bbcode_enabled = true
|
||||
@@ -107,17 +107,17 @@ fit_content = true
|
||||
scroll_active = false
|
||||
autowrap_mode = 0
|
||||
|
||||
[node name="ActionZone" type="Sprite2D" parent="InspectorCanvasLayer/Inspector"]
|
||||
[node name="ActionZone" type="Sprite2D" parent="InspectorCanvasLayer/Inspector" unique_id=327004224]
|
||||
unique_name_in_owner = true
|
||||
z_index = 4096
|
||||
script = ExtResource("5_b4uwv")
|
||||
opacity = 0.4
|
||||
metadata/_custom_type_script = "uid://c60a1bjcuj4hd"
|
||||
|
||||
[node name="CardCanvasLayer" type="CanvasLayer" parent="."]
|
||||
[node name="CardCanvasLayer" type="CanvasLayer" parent="." unique_id=391042380]
|
||||
layer = 2
|
||||
|
||||
[node name="CardPosition" type="Control" parent="CardCanvasLayer"]
|
||||
[node name="CardPosition" type="Control" parent="CardCanvasLayer" unique_id=466738082]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 3
|
||||
anchors_preset = 8
|
||||
@@ -129,16 +129,16 @@ grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
mouse_filter = 2
|
||||
|
||||
[node name="MarginContainer" type="MarginContainer" parent="CardCanvasLayer/CardPosition"]
|
||||
[node name="MarginContainer" type="MarginContainer" parent="CardCanvasLayer/CardPosition" unique_id=934152903]
|
||||
layout_mode = 1
|
||||
anchors_preset = 7
|
||||
anchor_left = 0.5
|
||||
anchor_top = 1.0
|
||||
anchor_right = 0.5
|
||||
anchor_bottom = 1.0
|
||||
offset_left = -175.0
|
||||
offset_top = -60.0
|
||||
offset_right = 175.0
|
||||
offset_left = -125.0
|
||||
offset_top = -251.0
|
||||
offset_right = 125.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 0
|
||||
mouse_filter = 2
|
||||
@@ -147,18 +147,17 @@ theme_override_constants/margin_top = 0
|
||||
theme_override_constants/margin_right = 0
|
||||
theme_override_constants/margin_bottom = 0
|
||||
|
||||
[node name="CardVisualiser" parent="CardCanvasLayer/CardPosition/MarginContainer" instance=ExtResource("6_7j4mj")]
|
||||
[node name="CardVisualiser" parent="CardCanvasLayer/CardPosition/MarginContainer" unique_id=1668451028 instance=ExtResource("6_7j4mj")]
|
||||
unique_name_in_owner = true
|
||||
modulate = Color(1, 1, 1, 0.5003133)
|
||||
material = SubResource("ShaderMaterial_6eft6")
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 4
|
||||
size_flags_vertical = 8
|
||||
mouse_filter = 0
|
||||
card_info = SubResource("Resource_mbe2a")
|
||||
|
||||
[node name="Audio" type="Node" parent="."]
|
||||
[node name="Audio" type="Node" parent="." unique_id=1338225026]
|
||||
|
||||
[node name="Click" type="AudioStreamPlayer" parent="Audio"]
|
||||
[node name="Click" type="AudioStreamPlayer" parent="Audio" unique_id=1212536250]
|
||||
stream = ExtResource("3_kj0cm")
|
||||
volume_db = -15.0
|
||||
|
||||
@@ -72,7 +72,7 @@ func _process(delta):
|
||||
|
||||
can_use_item = could_use_item and have_energy_to_use_item
|
||||
|
||||
if current_selected_item and SceneManager.actual_scene.scene_id == "REGION":
|
||||
if current_selected_item and GameInfo.game_data.actual_scene.scene_id == "REGION":
|
||||
%ActionZone.radius = current_selected_item.usage_zone_radius
|
||||
%ActionZone.color = ZONE_ACTIVATED_COLOR if can_use_item else ZONE_DEACTIVATED_COLOR
|
||||
else:
|
||||
@@ -124,8 +124,8 @@ func update_card():
|
||||
%CardPosition.position = inspected.global_position + inspected.size / 2 + CARD_UP_PADDING * Vector2.UP
|
||||
elif inspected is Node3D:
|
||||
%CardPosition.position = get_viewport().get_camera_3d().unproject_position(inspected.global_position) + CARD_UP_PADDING * Vector2.UP
|
||||
if %CardVisualiser.is_mouse_over():
|
||||
time_last_inspected = 0.
|
||||
# if %CardVisualiser.is_mouse_over():
|
||||
# time_last_inspected = 0.
|
||||
|
||||
|
||||
func update_inspector():
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[gd_resource type="Theme" load_steps=36 format=3 uid="uid://bgcmd213j6gk1"]
|
||||
[gd_resource type="Theme" format=3 uid="uid://bgcmd213j6gk1"]
|
||||
|
||||
[ext_resource type="FontFile" uid="uid://qt80w6o01q5s" path="res://gui/ressources/fonts/TitanOne-Regular.ttf" id="1_g7s0b"]
|
||||
[ext_resource type="Texture2D" uid="uid://bqcsma3tkbefi" path="res://common/icons/square-rounded-check.svg" id="2_36amo"]
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[gd_resource type="Theme" load_steps=36 format=3 uid="uid://5au2k3vf2po3"]
|
||||
[gd_resource type="Theme" format=3 uid="uid://5au2k3vf2po3"]
|
||||
|
||||
[ext_resource type="FontFile" uid="uid://qt80w6o01q5s" path="res://gui/ressources/fonts/TitanOne-Regular.ttf" id="1_6ccgi"]
|
||||
[ext_resource type="Texture2D" uid="uid://bqcsma3tkbefi" path="res://common/icons/square-rounded-check.svg" id="2_26s3p"]
|
||||
|
||||
@@ -8,13 +8,17 @@
|
||||
|
||||
config_version=5
|
||||
|
||||
[animation]
|
||||
|
||||
compatibility/default_parent_skeleton_in_mesh_instance_3d=true
|
||||
|
||||
[application]
|
||||
|
||||
config/name="Seeding The Wasteland"
|
||||
config/description="Seeding planets is a survival, managment and cosy game in which you play a little gardener robot."
|
||||
config/version="proto-4.0"
|
||||
run/main_scene="uid://c5bruelvqbm1k"
|
||||
config/features=PackedStringArray("4.5", "Forward Plus")
|
||||
config/features=PackedStringArray("4.6", "Forward Plus")
|
||||
config/icon="uid://df0y0s666ui4h"
|
||||
|
||||
[audio]
|
||||
@@ -217,5 +221,4 @@ locale/test="fr"
|
||||
|
||||
[rendering]
|
||||
|
||||
renderer/rendering_method="gl_compatibility"
|
||||
environment/defaults/default_clear_color=Color(0.0617213, 0.0605653, 0.169189, 1)
|
||||
|
||||
BIN
stages/3d_scenes/astra_base/assets/3d/astra_base.blend1
Normal file
BIN
stages/3d_scenes/astra_base/assets/3d/astra_base.blend1
Normal file
Binary file not shown.
BIN
stages/3d_scenes/astra_base/assets/3d/astra_base_incubator.blend
Normal file
BIN
stages/3d_scenes/astra_base/assets/3d/astra_base_incubator.blend
Normal file
Binary file not shown.
@@ -0,0 +1,73 @@
|
||||
[remap]
|
||||
|
||||
importer="scene"
|
||||
importer_version=1
|
||||
type="PackedScene"
|
||||
uid="uid://bfnk3whwddyix"
|
||||
path="res://.godot/imported/astra_base_incubator.blend-6529a598bc9a273b27087490b0f731f0.scn"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://stages/3d_scenes/astra_base/assets/3d/astra_base_incubator.blend"
|
||||
dest_files=["res://.godot/imported/astra_base_incubator.blend-6529a598bc9a273b27087490b0f731f0.scn"]
|
||||
|
||||
[params]
|
||||
|
||||
nodes/root_type=""
|
||||
nodes/root_name=""
|
||||
nodes/root_script=null
|
||||
nodes/apply_root_scale=true
|
||||
nodes/root_scale=1.0
|
||||
nodes/import_as_skeleton_bones=false
|
||||
nodes/use_name_suffixes=true
|
||||
nodes/use_node_type_suffixes=true
|
||||
meshes/ensure_tangents=true
|
||||
meshes/generate_lods=true
|
||||
meshes/create_shadow_meshes=true
|
||||
meshes/light_baking=1
|
||||
meshes/lightmap_texel_size=0.2
|
||||
meshes/force_disable_compression=false
|
||||
skins/use_named_skins=true
|
||||
animation/import=true
|
||||
animation/fps=30
|
||||
animation/trimming=false
|
||||
animation/remove_immutable_tracks=true
|
||||
animation/import_rest_as_RESET=false
|
||||
import_script/path=""
|
||||
materials/extract=0
|
||||
materials/extract_format=0
|
||||
materials/extract_path=""
|
||||
_subresources={
|
||||
"materials": {
|
||||
"Default3D": {
|
||||
"use_external/enabled": true,
|
||||
"use_external/fallback_path": "res://common/assets/materials/default_3d.tres",
|
||||
"use_external/path": "uid://dvvi1k5c5iowc"
|
||||
},
|
||||
"Glass": {
|
||||
"use_external/enabled": true,
|
||||
"use_external/fallback_path": "res://common/assets/materials/glass_3d.tres",
|
||||
"use_external/path": "uid://b5vlcdry8vtgi"
|
||||
}
|
||||
}
|
||||
}
|
||||
blender/nodes/visible=0
|
||||
blender/nodes/active_collection_only=false
|
||||
blender/nodes/punctual_lights=true
|
||||
blender/nodes/cameras=true
|
||||
blender/nodes/custom_properties=true
|
||||
blender/nodes/modifiers=1
|
||||
blender/meshes/colors=false
|
||||
blender/meshes/uvs=true
|
||||
blender/meshes/normals=true
|
||||
blender/meshes/export_geometry_nodes_instances=false
|
||||
blender/meshes/gpu_instances=false
|
||||
blender/meshes/tangents=true
|
||||
blender/meshes/skins=2
|
||||
blender/meshes/export_bones_deforming_mesh_only=false
|
||||
blender/materials/unpack_enabled=true
|
||||
blender/materials/export_materials=1
|
||||
blender/animation/limit_playback=true
|
||||
blender/animation/always_sample=true
|
||||
blender/animation/group_tracks=true
|
||||
gltf/naming_version=2
|
||||
Binary file not shown.
BIN
stages/3d_scenes/astra_base/assets/3d/astra_base_room.blend
Normal file
BIN
stages/3d_scenes/astra_base/assets/3d/astra_base_room.blend
Normal file
Binary file not shown.
@@ -0,0 +1,68 @@
|
||||
[remap]
|
||||
|
||||
importer="scene"
|
||||
importer_version=1
|
||||
type="PackedScene"
|
||||
uid="uid://hafopdwoe7p8"
|
||||
path="res://.godot/imported/astra_base_room.blend-e8ab8a61d93434b309e9d3fca47c9d50.scn"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://stages/3d_scenes/astra_base/assets/3d/astra_base_room.blend"
|
||||
dest_files=["res://.godot/imported/astra_base_room.blend-e8ab8a61d93434b309e9d3fca47c9d50.scn"]
|
||||
|
||||
[params]
|
||||
|
||||
nodes/root_type=""
|
||||
nodes/root_name=""
|
||||
nodes/root_script=null
|
||||
nodes/apply_root_scale=true
|
||||
nodes/root_scale=1.0
|
||||
nodes/import_as_skeleton_bones=false
|
||||
nodes/use_name_suffixes=true
|
||||
nodes/use_node_type_suffixes=true
|
||||
meshes/ensure_tangents=true
|
||||
meshes/generate_lods=true
|
||||
meshes/create_shadow_meshes=true
|
||||
meshes/light_baking=1
|
||||
meshes/lightmap_texel_size=0.2
|
||||
meshes/force_disable_compression=false
|
||||
skins/use_named_skins=true
|
||||
animation/import=true
|
||||
animation/fps=30
|
||||
animation/trimming=false
|
||||
animation/remove_immutable_tracks=true
|
||||
animation/import_rest_as_RESET=false
|
||||
import_script/path=""
|
||||
materials/extract=0
|
||||
materials/extract_format=0
|
||||
materials/extract_path=""
|
||||
_subresources={
|
||||
"materials": {
|
||||
"Default3D": {
|
||||
"use_external/enabled": true,
|
||||
"use_external/fallback_path": "res://common/assets/materials/default_3d.tres",
|
||||
"use_external/path": "uid://dvvi1k5c5iowc"
|
||||
}
|
||||
}
|
||||
}
|
||||
blender/nodes/visible=0
|
||||
blender/nodes/active_collection_only=false
|
||||
blender/nodes/punctual_lights=true
|
||||
blender/nodes/cameras=true
|
||||
blender/nodes/custom_properties=true
|
||||
blender/nodes/modifiers=1
|
||||
blender/meshes/colors=false
|
||||
blender/meshes/uvs=true
|
||||
blender/meshes/normals=true
|
||||
blender/meshes/export_geometry_nodes_instances=false
|
||||
blender/meshes/gpu_instances=false
|
||||
blender/meshes/tangents=true
|
||||
blender/meshes/skins=2
|
||||
blender/meshes/export_bones_deforming_mesh_only=false
|
||||
blender/materials/unpack_enabled=true
|
||||
blender/materials/export_materials=1
|
||||
blender/animation/limit_playback=true
|
||||
blender/animation/always_sample=true
|
||||
blender/animation/group_tracks=true
|
||||
gltf/naming_version=2
|
||||
BIN
stages/3d_scenes/astra_base/assets/3d/astra_base_room.blend1
Normal file
BIN
stages/3d_scenes/astra_base/assets/3d/astra_base_room.blend1
Normal file
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,73 @@
|
||||
[remap]
|
||||
|
||||
importer="scene"
|
||||
importer_version=1
|
||||
type="PackedScene"
|
||||
uid="uid://bv3iqfleriqbe"
|
||||
path="res://.godot/imported/astra_base_used_incubator.blend-ce7f2d77698b8fe621d72e61a19ebcb4.scn"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://stages/3d_scenes/astra_base/assets/3d/astra_base_used_incubator.blend"
|
||||
dest_files=["res://.godot/imported/astra_base_used_incubator.blend-ce7f2d77698b8fe621d72e61a19ebcb4.scn"]
|
||||
|
||||
[params]
|
||||
|
||||
nodes/root_type=""
|
||||
nodes/root_name=""
|
||||
nodes/root_script=null
|
||||
nodes/apply_root_scale=true
|
||||
nodes/root_scale=1.0
|
||||
nodes/import_as_skeleton_bones=false
|
||||
nodes/use_name_suffixes=true
|
||||
nodes/use_node_type_suffixes=true
|
||||
meshes/ensure_tangents=true
|
||||
meshes/generate_lods=true
|
||||
meshes/create_shadow_meshes=true
|
||||
meshes/light_baking=1
|
||||
meshes/lightmap_texel_size=0.2
|
||||
meshes/force_disable_compression=false
|
||||
skins/use_named_skins=true
|
||||
animation/import=true
|
||||
animation/fps=30
|
||||
animation/trimming=false
|
||||
animation/remove_immutable_tracks=true
|
||||
animation/import_rest_as_RESET=false
|
||||
import_script/path=""
|
||||
materials/extract=0
|
||||
materials/extract_format=0
|
||||
materials/extract_path=""
|
||||
_subresources={
|
||||
"materials": {
|
||||
"Default3D": {
|
||||
"use_external/enabled": true,
|
||||
"use_external/fallback_path": "res://common/assets/materials/default_3d.tres",
|
||||
"use_external/path": "uid://dvvi1k5c5iowc"
|
||||
},
|
||||
"Glass": {
|
||||
"use_external/enabled": true,
|
||||
"use_external/fallback_path": "res://common/assets/materials/glass_3d.tres",
|
||||
"use_external/path": "uid://b5vlcdry8vtgi"
|
||||
}
|
||||
}
|
||||
}
|
||||
blender/nodes/visible=0
|
||||
blender/nodes/active_collection_only=false
|
||||
blender/nodes/punctual_lights=true
|
||||
blender/nodes/cameras=true
|
||||
blender/nodes/custom_properties=true
|
||||
blender/nodes/modifiers=1
|
||||
blender/meshes/colors=false
|
||||
blender/meshes/uvs=true
|
||||
blender/meshes/normals=true
|
||||
blender/meshes/export_geometry_nodes_instances=false
|
||||
blender/meshes/gpu_instances=false
|
||||
blender/meshes/tangents=true
|
||||
blender/meshes/skins=2
|
||||
blender/meshes/export_bones_deforming_mesh_only=false
|
||||
blender/materials/unpack_enabled=true
|
||||
blender/materials/export_materials=1
|
||||
blender/animation/limit_playback=true
|
||||
blender/animation/always_sample=true
|
||||
blender/animation/group_tracks=true
|
||||
gltf/naming_version=2
|
||||
Binary file not shown.
726
stages/3d_scenes/astra_base/astra_base.tscn
Normal file
726
stages/3d_scenes/astra_base/astra_base.tscn
Normal file
@@ -0,0 +1,726 @@
|
||||
[gd_scene format=3 uid="uid://dxjkkxwxrswkr"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://bmj4m3j305sl0" path="res://stages/3d_scenes/astra_base/scripts/astra_base.gd" id="1_kdvug"]
|
||||
[ext_resource type="PackedScene" uid="uid://drwcx10b34d2s" path="res://stages/3d_scenes/astra_base/room_part.tscn" id="2_kdvug"]
|
||||
[ext_resource type="PackedScene" uid="uid://bfnk3whwddyix" path="res://stages/3d_scenes/astra_base/assets/3d/astra_base_incubator.blend" id="2_otfhy"]
|
||||
[ext_resource type="PackedScene" uid="uid://da7a74dg30q1l" path="res://entities/player_3d/player_3D.tscn" id="3_4wxm6"]
|
||||
[ext_resource type="Shader" uid="uid://bv2rghn44mrrf" path="res://stages/title_screen/resources/shaders/stars.gdshader" id="4_kdvug"]
|
||||
[ext_resource type="PackedScene" uid="uid://bv3iqfleriqbe" path="res://stages/3d_scenes/astra_base/assets/3d/astra_base_used_incubator.blend" id="6_mwti2"]
|
||||
|
||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_mwti2"]
|
||||
shader = ExtResource("4_kdvug")
|
||||
shader_parameter/sky_color = Color(0.03, 0.05, 0.11, 1)
|
||||
shader_parameter/star_base_color = Color(0.8, 1, 0.3, 1)
|
||||
shader_parameter/star_hue_offset = 0.6
|
||||
shader_parameter/star_intensity = 0.08
|
||||
shader_parameter/star_twinkle_speed = 0.8
|
||||
shader_parameter/star_twinkle_intensity = 0.2
|
||||
shader_parameter/layer_scale = 20.0
|
||||
shader_parameter/layer_scale_step = 10.0
|
||||
shader_parameter/layers_count = 3
|
||||
|
||||
[sub_resource type="Sky" id="Sky_65b6a"]
|
||||
sky_material = SubResource("ShaderMaterial_mwti2")
|
||||
|
||||
[sub_resource type="Environment" id="Environment_lhhy6"]
|
||||
background_mode = 2
|
||||
sky = SubResource("Sky_65b6a")
|
||||
sky_custom_fov = 61.7
|
||||
ambient_light_source = 3
|
||||
ambient_light_color = Color(1, 1, 1, 1)
|
||||
ambient_light_sky_contribution = 0.85
|
||||
ambient_light_energy = 2.0
|
||||
reflected_light_source = 2
|
||||
tonemap_mode = 2
|
||||
tonemap_exposure = 0.7
|
||||
tonemap_white = 1.84
|
||||
glow_enabled = true
|
||||
glow_intensity = 0.22
|
||||
glow_bloom = 0.22
|
||||
glow_hdr_threshold = 0.79
|
||||
glow_hdr_scale = 0.0
|
||||
glow_hdr_luminance_cap = 5.63
|
||||
fog_enabled = true
|
||||
fog_mode = 1
|
||||
fog_light_color = Color(0.13725491, 0.39215687, 0.6666667, 1)
|
||||
fog_density = 0.1831
|
||||
fog_aerial_perspective = 0.113
|
||||
fog_sky_affect = 0.0
|
||||
volumetric_fog_sky_affect = 0.0
|
||||
adjustment_enabled = true
|
||||
adjustment_saturation = 1.3
|
||||
|
||||
[node name="AstraBase" type="Node3D" unique_id=1360388667]
|
||||
script = ExtResource("1_kdvug")
|
||||
|
||||
[node name="RoomParts" type="Node3D" parent="." unique_id=1805561541]
|
||||
|
||||
[node name="RoomPart" parent="RoomParts" unique_id=1431580053 instance=ExtResource("2_kdvug")]
|
||||
|
||||
[node name="RoomPart2" parent="RoomParts" unique_id=1461346188 instance=ExtResource("2_kdvug")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 21.455929, 0, 1.5381136)
|
||||
|
||||
[node name="RoomPart7" parent="RoomParts" unique_id=1493006343 instance=ExtResource("2_kdvug")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 128.736, 0, 1.538)
|
||||
|
||||
[node name="RoomPart8" parent="RoomParts" unique_id=290558237 instance=ExtResource("2_kdvug")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 150.192, 0, 1.538)
|
||||
|
||||
[node name="RoomPart9" parent="RoomParts" unique_id=1061924920 instance=ExtResource("2_kdvug")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 171.648, 0, 1.538)
|
||||
|
||||
[node name="RoomPart10" parent="RoomParts" unique_id=732897879 instance=ExtResource("2_kdvug")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 193.104, 0, 1.538)
|
||||
|
||||
[node name="RoomPart11" parent="RoomParts" unique_id=1408993662 instance=ExtResource("2_kdvug")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 214.42337, 0, 1.538)
|
||||
|
||||
[node name="RoomPart12" parent="RoomParts" unique_id=2088779214 instance=ExtResource("2_kdvug")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 235.87938, 0, 1.538)
|
||||
|
||||
[node name="RoomPart13" parent="RoomParts" unique_id=481413029 instance=ExtResource("2_kdvug")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 257.3354, 0, 1.538)
|
||||
|
||||
[node name="RoomPart14" parent="RoomParts" unique_id=542181452 instance=ExtResource("2_kdvug")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 278.79138, 0, 1.538)
|
||||
|
||||
[node name="RoomPart6" parent="RoomParts" unique_id=1592023636 instance=ExtResource("2_kdvug")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 107.28, 0, 1.538)
|
||||
|
||||
[node name="RoomPart5" parent="RoomParts" unique_id=217680373 instance=ExtResource("2_kdvug")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 85.824, 0, 1.538)
|
||||
|
||||
[node name="RoomPart4" parent="RoomParts" unique_id=463853401 instance=ExtResource("2_kdvug")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 64.368, 0, 1.538)
|
||||
|
||||
[node name="RoomPart3" parent="RoomParts" unique_id=1446613809 instance=ExtResource("2_kdvug")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 42.912, 0, 1.538)
|
||||
|
||||
[node name="RoomPart15" parent="RoomParts" unique_id=1970112525 instance=ExtResource("2_kdvug")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -300.2526, 0, 0)
|
||||
|
||||
[node name="RoomPart16" parent="RoomParts" unique_id=411642966 instance=ExtResource("2_kdvug")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -278.79666, 0, 1.5381136)
|
||||
|
||||
[node name="RoomPart17" parent="RoomParts" unique_id=1086037337 instance=ExtResource("2_kdvug")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -171.5166, 0, 1.538)
|
||||
|
||||
[node name="RoomPart18" parent="RoomParts" unique_id=919988877 instance=ExtResource("2_kdvug")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -150.0606, 0, 1.538)
|
||||
|
||||
[node name="RoomPart19" parent="RoomParts" unique_id=298919659 instance=ExtResource("2_kdvug")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -128.6046, 0, 1.538)
|
||||
|
||||
[node name="RoomPart20" parent="RoomParts" unique_id=1854949916 instance=ExtResource("2_kdvug")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -107.14859, 0, 1.538)
|
||||
|
||||
[node name="RoomPart21" parent="RoomParts" unique_id=1928148077 instance=ExtResource("2_kdvug")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -85.82922, 0, 1.538)
|
||||
|
||||
[node name="RoomPart22" parent="RoomParts" unique_id=860821742 instance=ExtResource("2_kdvug")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -64.373215, 0, 1.538)
|
||||
|
||||
[node name="RoomPart23" parent="RoomParts" unique_id=918320011 instance=ExtResource("2_kdvug")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -42.917206, 0, 1.538)
|
||||
|
||||
[node name="RoomPart24" parent="RoomParts" unique_id=575489253 instance=ExtResource("2_kdvug")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -21.461212, 0, 1.538)
|
||||
|
||||
[node name="RoomPart25" parent="RoomParts" unique_id=878142181 instance=ExtResource("2_kdvug")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -192.9726, 0, 1.538)
|
||||
|
||||
[node name="RoomPart26" parent="RoomParts" unique_id=526806229 instance=ExtResource("2_kdvug")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -214.42859, 0, 1.538)
|
||||
|
||||
[node name="RoomPart27" parent="RoomParts" unique_id=486798354 instance=ExtResource("2_kdvug")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -235.8846, 0, 1.538)
|
||||
|
||||
[node name="RoomPart28" parent="RoomParts" unique_id=1110376513 instance=ExtResource("2_kdvug")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -257.3406, 0, 1.538)
|
||||
|
||||
[node name="WorldEnvironment" type="WorldEnvironment" parent="." unique_id=1392940941]
|
||||
environment = SubResource("Environment_lhhy6")
|
||||
|
||||
[node name="Incubators" type="Node3D" parent="." unique_id=1917987114]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.7427373, 0.31033933, 3.9984822)
|
||||
|
||||
[node name="astra_base_incubator" parent="Incubators" unique_id=162423076 instance=ExtResource("2_otfhy")]
|
||||
|
||||
[node name="astra_base_incubator2" parent="Incubators" unique_id=91837566 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator3" parent="Incubators" unique_id=1708975094 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator4" parent="Incubators" unique_id=1411521343 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator5" parent="Incubators" unique_id=555872696 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator6" parent="Incubators" unique_id=1446127888 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator7" parent="Incubators" unique_id=1902905661 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator8" parent="Incubators" unique_id=739634621 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 21, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator9" parent="Incubators" unique_id=446511127 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 24, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator10" parent="Incubators" unique_id=1529935054 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 27, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator11" parent="Incubators" unique_id=538272527 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator12" parent="Incubators" unique_id=862539797 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 33, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator13" parent="Incubators" unique_id=984063956 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 36, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator14" parent="Incubators" unique_id=1967863597 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 39, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator15" parent="Incubators" unique_id=336214224 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 42, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator16" parent="Incubators" unique_id=8402714 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 45, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator17" parent="Incubators" unique_id=1772736906 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 48, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator18" parent="Incubators" unique_id=1791616776 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 51, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator19" parent="Incubators" unique_id=57232971 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 54, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator20" parent="Incubators" unique_id=217446066 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 57, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator21" parent="Incubators" unique_id=1409868159 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 60, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator22" parent="Incubators" unique_id=1749826876 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 63, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator23" parent="Incubators" unique_id=1493246716 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 66, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator24" parent="Incubators" unique_id=208961839 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 69, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator25" parent="Incubators" unique_id=1602684328 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 72, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator26" parent="Incubators" unique_id=442964538 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 75, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator27" parent="Incubators" unique_id=128169527 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 78, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator28" parent="Incubators" unique_id=287151525 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 81, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator29" parent="Incubators" unique_id=1218757583 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 84, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator30" parent="Incubators" unique_id=1355060500 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 87, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator31" parent="Incubators" unique_id=1440208075 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 90, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator32" parent="Incubators" unique_id=1121036381 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 93, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator33" parent="Incubators" unique_id=1827559968 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 96, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator34" parent="Incubators" unique_id=2050372683 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 99, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator35" parent="Incubators" unique_id=492087165 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 102, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator36" parent="Incubators" unique_id=349273346 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 105, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator37" parent="Incubators" unique_id=1833892136 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 108, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator38" parent="Incubators" unique_id=1653371298 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 111, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator39" parent="Incubators" unique_id=854534562 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 114, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator40" parent="Incubators" unique_id=2072261556 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 117, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator41" parent="Incubators" unique_id=1520800806 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 120, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator42" parent="Incubators" unique_id=842759154 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 123, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator43" parent="Incubators" unique_id=1032943366 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 126, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator44" parent="Incubators" unique_id=723915130 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 129, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator45" parent="Incubators" unique_id=2135953053 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 132, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator46" parent="Incubators" unique_id=413995192 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 135, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator47" parent="Incubators" unique_id=1240779470 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 138, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator48" parent="Incubators" unique_id=1422063903 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 141, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator49" parent="Incubators" unique_id=1947187327 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 144, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator50" parent="Incubators" unique_id=729915185 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 147, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator51" parent="Incubators" unique_id=627762916 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 150, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator52" parent="Incubators" unique_id=1687994743 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 153, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator53" parent="Incubators" unique_id=1622251608 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 156, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator54" parent="Incubators" unique_id=1478196402 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 159, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator55" parent="Incubators" unique_id=1887321263 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 162, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator56" parent="Incubators" unique_id=1043127832 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 165, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator57" parent="Incubators" unique_id=1256348096 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 168, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator58" parent="Incubators" unique_id=1491995016 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 171, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator59" parent="Incubators" unique_id=879875495 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 174, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator60" parent="Incubators" unique_id=2036759620 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 177, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator61" parent="Incubators" unique_id=650907187 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 180, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator62" parent="Incubators" unique_id=1791722993 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 183, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator63" parent="Incubators" unique_id=2110849628 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 186, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator64" parent="Incubators" unique_id=1847135363 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 189, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator65" parent="Incubators" unique_id=156586157 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 192, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator66" parent="Incubators" unique_id=935123842 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 195, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator67" parent="Incubators" unique_id=2071124786 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 198, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator68" parent="Incubators" unique_id=1116843692 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 201, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator69" parent="Incubators" unique_id=924335123 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 204, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator70" parent="Incubators" unique_id=771738075 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 207, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator71" parent="Incubators" unique_id=1458486361 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 210, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator72" parent="Incubators" unique_id=133996851 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 213, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator73" parent="Incubators" unique_id=845786090 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 216, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator74" parent="Incubators" unique_id=825756565 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 219, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator75" parent="Incubators" unique_id=1755937020 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 222, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator76" parent="Incubators" unique_id=734933910 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 225, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator77" parent="Incubators" unique_id=889272803 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 228, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator78" parent="Incubators" unique_id=1266075817 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 231, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator79" parent="Incubators" unique_id=1028567711 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 234, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator80" parent="Incubators" unique_id=158604751 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 237, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator81" parent="Incubators" unique_id=676637203 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 240, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator82" parent="Incubators" unique_id=960943855 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 243, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator83" parent="Incubators" unique_id=2144393250 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 246, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator84" parent="Incubators" unique_id=1453689533 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 249, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator85" parent="Incubators" unique_id=139452311 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 252, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator86" parent="Incubators" unique_id=1419027776 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 255, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator87" parent="Incubators" unique_id=273051564 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 258, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator88" parent="Incubators" unique_id=1943175192 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 261, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator89" parent="Incubators" unique_id=1107539344 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 264, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator90" parent="Incubators" unique_id=1195049345 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 267, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator91" parent="Incubators" unique_id=1336025237 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 270, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator92" parent="Incubators" unique_id=534046096 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 273, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator93" parent="Incubators" unique_id=1509378105 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 276, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator94" parent="Incubators" unique_id=1918908498 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 279, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator95" parent="Incubators" unique_id=1279811453 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 282, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator96" parent="Incubators" unique_id=695878361 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 285, 0, 0)
|
||||
|
||||
[node name="astra_base_incubator97" parent="Incubators" unique_id=1883300734 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 284.99988, 0, -8.2288)
|
||||
|
||||
[node name="astra_base_incubator98" parent="Incubators" unique_id=1508613358 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 281.99988, 0, -8.2288)
|
||||
|
||||
[node name="astra_base_incubator99" parent="Incubators" unique_id=1021186806 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 278.99988, 0, -8.2288)
|
||||
|
||||
[node name="astra_base_incubator100" parent="Incubators" unique_id=1466341852 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 275.99988, 0, -8.2288)
|
||||
|
||||
[node name="astra_base_incubator101" parent="Incubators" unique_id=1038106533 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 272.99988, 0, -8.228798)
|
||||
|
||||
[node name="astra_base_incubator102" parent="Incubators" unique_id=1236084819 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 269.99988, 0, -8.228798)
|
||||
|
||||
[node name="astra_base_incubator103" parent="Incubators" unique_id=593416956 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 266.99988, 0, -8.228798)
|
||||
|
||||
[node name="astra_base_incubator104" parent="Incubators" unique_id=1262836700 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 263.99988, 0, -8.228798)
|
||||
|
||||
[node name="astra_base_incubator105" parent="Incubators" unique_id=225260369 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 260.99988, 0, -8.228798)
|
||||
|
||||
[node name="astra_base_incubator106" parent="Incubators" unique_id=2039699052 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 257.99988, 0, -8.228798)
|
||||
|
||||
[node name="astra_base_incubator107" parent="Incubators" unique_id=1517086097 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 254.99988, 0, -8.228798)
|
||||
|
||||
[node name="astra_base_incubator108" parent="Incubators" unique_id=1854577153 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 251.99988, 0, -8.228796)
|
||||
|
||||
[node name="astra_base_incubator109" parent="Incubators" unique_id=1006203227 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 248.99988, 0, -8.228796)
|
||||
|
||||
[node name="astra_base_incubator110" parent="Incubators" unique_id=405741489 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 245.99988, 0, -8.228796)
|
||||
|
||||
[node name="astra_base_incubator111" parent="Incubators" unique_id=581063617 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 242.99988, 0, -8.228796)
|
||||
|
||||
[node name="astra_base_incubator112" parent="Incubators" unique_id=2005305451 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 239.99988, 0, -8.228796)
|
||||
|
||||
[node name="astra_base_incubator113" parent="Incubators" unique_id=1023772680 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 236.99988, 0, -8.228796)
|
||||
|
||||
[node name="astra_base_incubator114" parent="Incubators" unique_id=1126201223 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 233.99988, 0, -8.228796)
|
||||
|
||||
[node name="astra_base_incubator115" parent="Incubators" unique_id=308411424 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 230.99988, 0, -8.228794)
|
||||
|
||||
[node name="astra_base_incubator116" parent="Incubators" unique_id=1662196407 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 227.99988, 0, -8.228794)
|
||||
|
||||
[node name="astra_base_incubator117" parent="Incubators" unique_id=174623511 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 224.99988, 0, -8.228794)
|
||||
|
||||
[node name="astra_base_incubator118" parent="Incubators" unique_id=70276235 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 221.99988, 0, -8.228794)
|
||||
|
||||
[node name="astra_base_incubator119" parent="Incubators" unique_id=1084601629 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 218.99988, 0, -8.228794)
|
||||
|
||||
[node name="astra_base_incubator120" parent="Incubators" unique_id=134391575 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 215.99988, 0, -8.228794)
|
||||
|
||||
[node name="astra_base_incubator121" parent="Incubators" unique_id=502105563 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 212.99988, 0, -8.228794)
|
||||
|
||||
[node name="astra_base_incubator122" parent="Incubators" unique_id=139222095 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 209.99988, 0, -8.228794)
|
||||
|
||||
[node name="astra_base_incubator123" parent="Incubators" unique_id=1249367938 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 206.99988, 0, -8.228792)
|
||||
|
||||
[node name="astra_base_incubator124" parent="Incubators" unique_id=2124203101 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 203.99988, 0, -8.228792)
|
||||
|
||||
[node name="astra_base_incubator125" parent="Incubators" unique_id=217443950 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 200.99988, 0, -8.228792)
|
||||
|
||||
[node name="astra_base_incubator126" parent="Incubators" unique_id=512987131 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 197.99988, 0, -8.228792)
|
||||
|
||||
[node name="astra_base_incubator127" parent="Incubators" unique_id=954253 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 194.99988, 0, -8.228792)
|
||||
|
||||
[node name="astra_base_incubator128" parent="Incubators" unique_id=303009926 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 191.99988, 0, -8.228792)
|
||||
|
||||
[node name="astra_base_incubator129" parent="Incubators" unique_id=1602084186 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 188.99988, 0, -8.228792)
|
||||
|
||||
[node name="astra_base_incubator130" parent="Incubators" unique_id=1743108180 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 185.99988, 0, -8.22879)
|
||||
|
||||
[node name="astra_base_incubator131" parent="Incubators" unique_id=1891680694 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 182.99988, 0, -8.22879)
|
||||
|
||||
[node name="astra_base_incubator132" parent="Incubators" unique_id=650785341 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 179.99988, 0, -8.22879)
|
||||
|
||||
[node name="astra_base_incubator133" parent="Incubators" unique_id=1534787540 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 176.99988, 0, -8.22879)
|
||||
|
||||
[node name="astra_base_incubator134" parent="Incubators" unique_id=898324455 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 173.99988, 0, -8.22879)
|
||||
|
||||
[node name="astra_base_incubator135" parent="Incubators" unique_id=1226119951 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 170.99988, 0, -8.22879)
|
||||
|
||||
[node name="astra_base_incubator136" parent="Incubators" unique_id=1746830435 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 167.99988, 0, -8.22879)
|
||||
|
||||
[node name="astra_base_incubator137" parent="Incubators" unique_id=235190481 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 164.99988, 0, -8.228788)
|
||||
|
||||
[node name="astra_base_incubator138" parent="Incubators" unique_id=518235321 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 161.99988, 0, -8.228788)
|
||||
|
||||
[node name="astra_base_incubator139" parent="Incubators" unique_id=1664475158 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 158.99988, 0, -8.228788)
|
||||
|
||||
[node name="astra_base_incubator140" parent="Incubators" unique_id=1665340457 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 155.99988, 0, -8.228788)
|
||||
|
||||
[node name="astra_base_incubator141" parent="Incubators" unique_id=410656312 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 152.99988, 0, -8.228788)
|
||||
|
||||
[node name="astra_base_incubator142" parent="Incubators" unique_id=2106186570 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 149.99988, 0, -8.228788)
|
||||
|
||||
[node name="astra_base_incubator143" parent="Incubators" unique_id=1631704124 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 146.99988, 0, -8.228788)
|
||||
|
||||
[node name="astra_base_incubator144" parent="Incubators" unique_id=1902142517 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 143.99988, 0, -8.228788)
|
||||
|
||||
[node name="astra_base_incubator145" parent="Incubators" unique_id=358804901 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 140.99988, 0, -8.228786)
|
||||
|
||||
[node name="astra_base_incubator146" parent="Incubators" unique_id=634632305 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 137.99988, 0, -8.228786)
|
||||
|
||||
[node name="astra_base_incubator147" parent="Incubators" unique_id=1793087790 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 134.99988, 0, -8.228786)
|
||||
|
||||
[node name="astra_base_incubator148" parent="Incubators" unique_id=1705721027 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 131.99988, 0, -8.228786)
|
||||
|
||||
[node name="astra_base_incubator149" parent="Incubators" unique_id=224175326 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 128.99988, 0, -8.228786)
|
||||
|
||||
[node name="astra_base_incubator150" parent="Incubators" unique_id=1227020525 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 125.99988, 0, -8.228786)
|
||||
|
||||
[node name="astra_base_incubator151" parent="Incubators" unique_id=1960003296 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 122.99988, 0, -8.228786)
|
||||
|
||||
[node name="astra_base_incubator152" parent="Incubators" unique_id=1428985850 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 119.99988, 0, -8.228785)
|
||||
|
||||
[node name="astra_base_incubator153" parent="Incubators" unique_id=540495468 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 116.99988, 0, -8.228785)
|
||||
|
||||
[node name="astra_base_incubator154" parent="Incubators" unique_id=1484312949 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 113.99988, 0, -8.228785)
|
||||
|
||||
[node name="astra_base_incubator155" parent="Incubators" unique_id=64632500 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 110.99988, 0, -8.228785)
|
||||
|
||||
[node name="astra_base_incubator156" parent="Incubators" unique_id=131846712 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 107.99988, 0, -8.228785)
|
||||
|
||||
[node name="astra_base_incubator157" parent="Incubators" unique_id=762014289 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 104.99988, 0, -8.228785)
|
||||
|
||||
[node name="astra_base_incubator158" parent="Incubators" unique_id=489024142 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 101.99988, 0, -8.228785)
|
||||
|
||||
[node name="astra_base_incubator159" parent="Incubators" unique_id=1160226769 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 98.99988, 0, -8.228783)
|
||||
|
||||
[node name="astra_base_incubator160" parent="Incubators" unique_id=1643710080 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 95.99988, 0, -8.228783)
|
||||
|
||||
[node name="astra_base_incubator161" parent="Incubators" unique_id=715873859 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 92.99988, 0, -8.228783)
|
||||
|
||||
[node name="astra_base_incubator162" parent="Incubators" unique_id=84805076 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 89.99988, 0, -8.228783)
|
||||
|
||||
[node name="astra_base_incubator163" parent="Incubators" unique_id=2041286011 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 86.99988, 0, -8.228783)
|
||||
|
||||
[node name="astra_base_incubator164" parent="Incubators" unique_id=618654734 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 83.99988, 0, -8.228783)
|
||||
|
||||
[node name="astra_base_incubator165" parent="Incubators" unique_id=365748842 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 80.99988, 0, -8.228783)
|
||||
|
||||
[node name="astra_base_incubator166" parent="Incubators" unique_id=1809103631 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 77.99988, 0, -8.228781)
|
||||
|
||||
[node name="astra_base_incubator167" parent="Incubators" unique_id=1857703688 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 74.99988, 0, -8.228781)
|
||||
|
||||
[node name="astra_base_incubator168" parent="Incubators" unique_id=256385606 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 71.99988, 0, -8.228781)
|
||||
|
||||
[node name="astra_base_incubator169" parent="Incubators" unique_id=36771445 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 68.99988, 0, -8.228781)
|
||||
|
||||
[node name="astra_base_incubator170" parent="Incubators" unique_id=1953787462 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 65.99988, 0, -8.228781)
|
||||
|
||||
[node name="astra_base_incubator171" parent="Incubators" unique_id=371672071 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 62.999878, 0, -8.228781)
|
||||
|
||||
[node name="astra_base_incubator172" parent="Incubators" unique_id=1484784050 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 59.999878, 0, -8.228781)
|
||||
|
||||
[node name="astra_base_incubator173" parent="Incubators" unique_id=1932501683 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 56.999878, 0, -8.228781)
|
||||
|
||||
[node name="astra_base_incubator174" parent="Incubators" unique_id=1043947399 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 53.999878, 0, -8.228779)
|
||||
|
||||
[node name="astra_base_incubator175" parent="Incubators" unique_id=1236242999 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 50.999878, 0, -8.228779)
|
||||
|
||||
[node name="astra_base_incubator176" parent="Incubators" unique_id=1766461588 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 47.999878, 0, -8.228779)
|
||||
|
||||
[node name="astra_base_incubator177" parent="Incubators" unique_id=1509497703 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 44.999878, 0, -8.228779)
|
||||
|
||||
[node name="astra_base_incubator178" parent="Incubators" unique_id=1456109213 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 41.999878, 0, -8.228779)
|
||||
|
||||
[node name="astra_base_incubator179" parent="Incubators" unique_id=1427160785 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 38.999878, 0, -8.228779)
|
||||
|
||||
[node name="astra_base_incubator180" parent="Incubators" unique_id=745643921 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 35.999878, 0, -8.228779)
|
||||
|
||||
[node name="astra_base_incubator181" parent="Incubators" unique_id=826787596 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 32.999878, 0, -8.228777)
|
||||
|
||||
[node name="astra_base_incubator182" parent="Incubators" unique_id=1726737710 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 29.999878, 0, -8.228777)
|
||||
|
||||
[node name="astra_base_incubator183" parent="Incubators" unique_id=1692056189 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 26.999878, 0, -8.228777)
|
||||
|
||||
[node name="astra_base_incubator184" parent="Incubators" unique_id=1795554869 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 23.999878, 0, -8.228777)
|
||||
|
||||
[node name="astra_base_incubator185" parent="Incubators" unique_id=815032664 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 20.999878, 0, -8.228777)
|
||||
|
||||
[node name="astra_base_incubator186" parent="Incubators" unique_id=402982864 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 17.999878, 0, -8.228777)
|
||||
|
||||
[node name="astra_base_incubator187" parent="Incubators" unique_id=831203948 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 14.999878, 0, -8.228777)
|
||||
|
||||
[node name="astra_base_incubator188" parent="Incubators" unique_id=270303525 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 11.999878, 0, -8.228775)
|
||||
|
||||
[node name="astra_base_incubator189" parent="Incubators" unique_id=1112859019 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 8.999878, 0, -8.228775)
|
||||
|
||||
[node name="astra_base_incubator190" parent="Incubators" unique_id=1245560433 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 5.9998784, 0, -8.228775)
|
||||
|
||||
[node name="astra_base_incubator191" parent="Incubators" unique_id=1585401074 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 2.9998784, 0, -8.228775)
|
||||
|
||||
[node name="astra_base_incubator192" parent="Incubators" unique_id=291875451 instance=ExtResource("2_otfhy")]
|
||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, -0.000121593475, 0, -8.228775)
|
||||
|
||||
[node name="Player3D" parent="." unique_id=549819967 instance=ExtResource("3_4wxm6")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -8.80377, 3.2028942, 0.9461217)
|
||||
|
||||
[node name="astra_base_used_incubator" parent="." unique_id=1790935643 instance=ExtResource("6_mwti2")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -8.510883, 0.918, 4.38)
|
||||
21
stages/3d_scenes/astra_base/room_part.tscn
Normal file
21
stages/3d_scenes/astra_base/room_part.tscn
Normal file
@@ -0,0 +1,21 @@
|
||||
[gd_scene format=3 uid="uid://drwcx10b34d2s"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://hafopdwoe7p8" path="res://stages/3d_scenes/astra_base/assets/3d/astra_base_room.blend" id="1_uccp0"]
|
||||
|
||||
[node name="RoomPart" type="Node3D" unique_id=1431580053]
|
||||
|
||||
[node name="RoomPartModel" parent="." unique_id=398116918 instance=ExtResource("1_uccp0")]
|
||||
|
||||
[node name="OmniLight3D" type="OmniLight3D" parent="." unique_id=217952980]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.4381348, 0.49131417, 7.3276424)
|
||||
light_color = Color(1, 0.64, 0.45999998, 1)
|
||||
light_energy = 16.81
|
||||
shadow_enabled = true
|
||||
omni_range = 14.26521
|
||||
|
||||
[node name="OmniLight3D2" type="OmniLight3D" parent="." unique_id=1660135249]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.4381348, 0.49131417, -6.8897915)
|
||||
light_color = Color(1, 0.64, 0.45999998, 1)
|
||||
light_energy = 16.81
|
||||
shadow_enabled = true
|
||||
omni_range = 14.26521
|
||||
6
stages/3d_scenes/astra_base/scripts/astra_base.gd
Normal file
6
stages/3d_scenes/astra_base/scripts/astra_base.gd
Normal file
@@ -0,0 +1,6 @@
|
||||
extends Node3D
|
||||
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready():
|
||||
Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
|
||||
1
stages/3d_scenes/astra_base/scripts/astra_base.gd.uid
Normal file
1
stages/3d_scenes/astra_base/scripts/astra_base.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://bmj4m3j305sl0
|
||||
Binary file not shown.
Binary file not shown.
@@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=47 format=3 uid="uid://fhnrl3dregsm"]
|
||||
[gd_scene format=3 uid="uid://fhnrl3dregsm"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://b4tpigoloyxu0" path="res://stages/cockpit/scripts/cockpit.gd" id="1_koamw"]
|
||||
[ext_resource type="Shader" uid="uid://bv2rghn44mrrf" path="res://stages/title_screen/resources/shaders/stars.gdshader" id="1_sk3hm"]
|
||||
@@ -15,9 +15,7 @@
|
||||
[ext_resource type="LabelSettings" uid="uid://dqwayi8yjwau2" path="res://gui/ressources/title_label_settings.tres" id="9_i3c17"]
|
||||
[ext_resource type="Theme" uid="uid://5au2k3vf2po3" path="res://gui/ressources/menu.tres" id="10_i3c17"]
|
||||
[ext_resource type="Theme" uid="uid://bgcmd213j6gk1" path="res://gui/ressources/hud.tres" id="10_j2e5k"]
|
||||
[ext_resource type="Texture2D" uid="uid://ba8vh5h3r6pr2" path="res://common/icons/focus.svg" id="11_6o275"]
|
||||
[ext_resource type="PackedScene" uid="uid://clicjf8ts51h8" path="res://gui/game/inventory_gui/inventory_gui.tscn" id="11_eodxe"]
|
||||
[ext_resource type="PackedScene" uid="uid://da7a74dg30q1l" path="res://stages/cockpit/player_3d/player_3D.tscn" id="13_a2cx2"]
|
||||
[ext_resource type="PackedScene" uid="uid://da7a74dg30q1l" path="res://entities/player_3d/player_3D.tscn" id="13_a2cx2"]
|
||||
|
||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_7a1qq"]
|
||||
shader = ExtResource("1_sk3hm")
|
||||
@@ -172,8 +170,8 @@ _data = {
|
||||
&"hover": SubResource("Animation_biiuk")
|
||||
}
|
||||
|
||||
[sub_resource type="FastNoiseLite" id="FastNoiseLite_i3c17"]
|
||||
seed = 1456598324
|
||||
[sub_resource type="FastNoiseLite" id="FastNoiseLite_5t1te"]
|
||||
seed = 811286534
|
||||
frequency = 1.0
|
||||
|
||||
[sub_resource type="Animation" id="Animation_koamw"]
|
||||
@@ -525,48 +523,48 @@ _data = {
|
||||
&"Succeeded": SubResource("Animation_x34yc")
|
||||
}
|
||||
|
||||
[node name="Cockpit" type="Node3D"]
|
||||
[node name="Cockpit" type="Node3D" unique_id=550478796]
|
||||
script = ExtResource("1_koamw")
|
||||
|
||||
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
|
||||
[node name="WorldEnvironment" type="WorldEnvironment" parent="." unique_id=247797427]
|
||||
environment = SubResource("Environment_ers7b")
|
||||
|
||||
[node name="Stickers" type="Node3D" parent="."]
|
||||
[node name="Stickers" type="Node3D" parent="." unique_id=1936951053]
|
||||
|
||||
[node name="Sprite3D2" type="MeshInstance3D" parent="Stickers"]
|
||||
[node name="Sprite3D2" type="MeshInstance3D" parent="Stickers" unique_id=655670002]
|
||||
transform = Transform3D(-1, -8.560637e-08, -1.7728233e-08, 0, 0.20278734, -0.9792228, 8.742278e-08, -0.9792228, -0.20278734, 2.1191812, 0.086021006, 1.3936621)
|
||||
mesh = SubResource("PlaneMesh_omtjc")
|
||||
surface_material_override/0 = SubResource("StandardMaterial3D_i3c17")
|
||||
|
||||
[node name="Sprite3D4" type="MeshInstance3D" parent="Stickers"]
|
||||
[node name="Sprite3D4" type="MeshInstance3D" parent="Stickers" unique_id=782106576]
|
||||
transform = Transform3D(-1, 8.742278e-08, -3.821371e-15, 0, -4.371139e-08, -1, -8.742278e-08, -1, 4.371139e-08, 4.7137933, 0.1327298, 0.21573234)
|
||||
mesh = SubResource("PlaneMesh_omtjc")
|
||||
surface_material_override/0 = SubResource("StandardMaterial3D_x34yc")
|
||||
|
||||
[node name="Sprite3D5" type="MeshInstance3D" parent="Stickers"]
|
||||
[node name="Sprite3D5" type="MeshInstance3D" parent="Stickers" unique_id=1297037771]
|
||||
transform = Transform3D(-1, 8.742278e-08, -3.821371e-15, 0, -4.371139e-08, -1, -8.742278e-08, -1, 4.371139e-08, 4.512491, 0.377854, 0.21573234)
|
||||
mesh = SubResource("PlaneMesh_omtjc")
|
||||
surface_material_override/0 = SubResource("StandardMaterial3D_omtjc")
|
||||
|
||||
[node name="Sprite3D3" type="MeshInstance3D" parent="Stickers"]
|
||||
[node name="Sprite3D3" type="MeshInstance3D" parent="Stickers" unique_id=1715971203]
|
||||
transform = Transform3D(-1, -8.560637e-08, -1.7728233e-08, 0, 0.20278734, -0.9792228, 8.742278e-08, -0.9792228, -0.20278734, 1.8158855, 0.27269027, 1.4397132)
|
||||
mesh = SubResource("PlaneMesh_omtjc")
|
||||
surface_material_override/0 = SubResource("StandardMaterial3D_b2myc")
|
||||
|
||||
[node name="Cockpit" parent="." instance=ExtResource("2_3b5pk")]
|
||||
[node name="Cockpit" parent="." unique_id=1099992110 instance=ExtResource("2_3b5pk")]
|
||||
|
||||
[node name="Screens" type="Node3D" parent="."]
|
||||
[node name="Screens" type="Node3D" parent="." unique_id=1798389898]
|
||||
|
||||
[node name="MissionStatusScreen" type="Sprite3D" parent="Screens"]
|
||||
[node name="MissionStatusScreen" type="Sprite3D" parent="Screens" unique_id=1739773488]
|
||||
transform = Transform3D(-0.09661018, 0, 0.9953223, 0, 1, 0, -0.9953223, 0, -0.09661018, -0.9638628, 0.22434545, 0.9572436)
|
||||
pixel_size = 0.003
|
||||
texture = SubResource("ViewportTexture_x34yc")
|
||||
|
||||
[node name="SubViewport" type="SubViewport" parent="Screens/MissionStatusScreen"]
|
||||
[node name="SubViewport" type="SubViewport" parent="Screens/MissionStatusScreen" unique_id=1917886082]
|
||||
transparent_bg = true
|
||||
size = Vector2i(300, 200)
|
||||
|
||||
[node name="MissionStatusScreenBackground" type="ColorRect" parent="Screens/MissionStatusScreen/SubViewport"]
|
||||
[node name="MissionStatusScreenBackground" type="ColorRect" parent="Screens/MissionStatusScreen/SubViewport" unique_id=994077388]
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
@@ -574,14 +572,14 @@ grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
color = Color(0.9019608, 0.36078432, 0, 0.74509805)
|
||||
|
||||
[node name="MarginContainer" type="MarginContainer" parent="Screens/MissionStatusScreen/SubViewport"]
|
||||
[node name="MarginContainer" type="MarginContainer" parent="Screens/MissionStatusScreen/SubViewport" unique_id=1252302263]
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
|
||||
[node name="MissionInProgressLabel" type="Label" parent="Screens/MissionStatusScreen/SubViewport/MarginContainer"]
|
||||
[node name="MissionInProgressLabel" type="Label" parent="Screens/MissionStatusScreen/SubViewport/MarginContainer" unique_id=1616494187]
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 1
|
||||
text = "MISSION_IN_PROGRESS"
|
||||
@@ -590,7 +588,7 @@ horizontal_alignment = 1
|
||||
vertical_alignment = 1
|
||||
autowrap_mode = 2
|
||||
|
||||
[node name="MissionSuceededLabel" type="Label" parent="Screens/MissionStatusScreen/SubViewport/MarginContainer"]
|
||||
[node name="MissionSuceededLabel" type="Label" parent="Screens/MissionStatusScreen/SubViewport/MarginContainer" unique_id=954472944]
|
||||
visible = false
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 1
|
||||
@@ -600,7 +598,7 @@ horizontal_alignment = 1
|
||||
vertical_alignment = 1
|
||||
autowrap_mode = 2
|
||||
|
||||
[node name="MissionFailedLabel" type="Label" parent="Screens/MissionStatusScreen/SubViewport/MarginContainer"]
|
||||
[node name="MissionFailedLabel" type="Label" parent="Screens/MissionStatusScreen/SubViewport/MarginContainer" unique_id=241999958]
|
||||
visible = false
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 1
|
||||
@@ -610,16 +608,16 @@ horizontal_alignment = 1
|
||||
vertical_alignment = 1
|
||||
autowrap_mode = 2
|
||||
|
||||
[node name="MissionInfoScreen" type="Sprite3D" parent="Screens"]
|
||||
[node name="MissionInfoScreen" type="Sprite3D" parent="Screens" unique_id=558542786]
|
||||
transform = Transform3D(0.06808507, 0, 0.99767953, 0, 1, 0, -0.99767953, 0, 0.06808507, -0.94923043, 0.32125425, -0.8842205)
|
||||
pixel_size = 0.003
|
||||
texture = SubResource("ViewportTexture_omtjc")
|
||||
|
||||
[node name="SubViewport" type="SubViewport" parent="Screens/MissionInfoScreen"]
|
||||
[node name="SubViewport" type="SubViewport" parent="Screens/MissionInfoScreen" unique_id=688115482]
|
||||
transparent_bg = true
|
||||
size = Vector2i(200, 260)
|
||||
|
||||
[node name="MissionInfoScreenBackground" type="ColorRect" parent="Screens/MissionInfoScreen/SubViewport"]
|
||||
[node name="MissionInfoScreenBackground" type="ColorRect" parent="Screens/MissionInfoScreen/SubViewport" unique_id=1756847106]
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
@@ -627,7 +625,7 @@ grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
color = Color(0.9, 0.36, 0, 0.74509805)
|
||||
|
||||
[node name="MarginContainer" type="MarginContainer" parent="Screens/MissionInfoScreen/SubViewport"]
|
||||
[node name="MarginContainer" type="MarginContainer" parent="Screens/MissionInfoScreen/SubViewport" unique_id=323516938]
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
@@ -635,11 +633,11 @@ grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
theme = ExtResource("10_j2e5k")
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="Screens/MissionInfoScreen/SubViewport/MarginContainer"]
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="Screens/MissionInfoScreen/SubViewport/MarginContainer" unique_id=783105920]
|
||||
layout_mode = 2
|
||||
theme = ExtResource("10_j2e5k")
|
||||
|
||||
[node name="RegionNameInfo" type="Label" parent="Screens/MissionInfoScreen/SubViewport/MarginContainer/VBoxContainer"]
|
||||
[node name="RegionNameInfo" type="Label" parent="Screens/MissionInfoScreen/SubViewport/MarginContainer/VBoxContainer" unique_id=1528561440]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
text = "Blabloup"
|
||||
@@ -647,12 +645,12 @@ label_settings = ExtResource("9_i3c17")
|
||||
horizontal_alignment = 1
|
||||
autowrap_mode = 2
|
||||
|
||||
[node name="HSeparator" type="HSeparator" parent="Screens/MissionInfoScreen/SubViewport/MarginContainer/VBoxContainer"]
|
||||
[node name="HSeparator" type="HSeparator" parent="Screens/MissionInfoScreen/SubViewport/MarginContainer/VBoxContainer" unique_id=803527918]
|
||||
layout_mode = 2
|
||||
theme_override_constants/separation = 4
|
||||
theme_override_styles/separator = SubResource("StyleBoxLine_i3c17")
|
||||
|
||||
[node name="DayNumberInfo" type="RichTextLabel" parent="Screens/MissionInfoScreen/SubViewport/MarginContainer/VBoxContainer"]
|
||||
[node name="DayNumberInfo" type="RichTextLabel" parent="Screens/MissionInfoScreen/SubViewport/MarginContainer/VBoxContainer" unique_id=1577084236]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
theme = ExtResource("10_i3c17")
|
||||
@@ -667,7 +665,7 @@ fit_content = true
|
||||
autowrap_mode = 2
|
||||
horizontal_alignment = 1
|
||||
|
||||
[node name="PlantNumberInfo" type="RichTextLabel" parent="Screens/MissionInfoScreen/SubViewport/MarginContainer/VBoxContainer"]
|
||||
[node name="PlantNumberInfo" type="RichTextLabel" parent="Screens/MissionInfoScreen/SubViewport/MarginContainer/VBoxContainer" unique_id=902266507]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
theme = ExtResource("10_i3c17")
|
||||
@@ -682,7 +680,7 @@ fit_content = true
|
||||
autowrap_mode = 2
|
||||
horizontal_alignment = 1
|
||||
|
||||
[node name="PlantPointInfo" type="RichTextLabel" parent="Screens/MissionInfoScreen/SubViewport/MarginContainer/VBoxContainer"]
|
||||
[node name="PlantPointInfo" type="RichTextLabel" parent="Screens/MissionInfoScreen/SubViewport/MarginContainer/VBoxContainer" unique_id=1154783359]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
theme = ExtResource("10_i3c17")
|
||||
@@ -697,18 +695,17 @@ fit_content = true
|
||||
autowrap_mode = 2
|
||||
horizontal_alignment = 1
|
||||
|
||||
[node name="OmniLight3D" type="OmniLight3D" parent="."]
|
||||
[node name="OmniLight3D" type="OmniLight3D" parent="." unique_id=1487782787]
|
||||
transform = Transform3D(0.88172376, -0.12210212, 0.45569107, -0.47176614, -0.22820693, 0.8516797, -4.3180254e-08, -0.9659258, -0.2588191, 2.9457722, 1.2488832, -0.00129807)
|
||||
light_color = Color(1, 0.7176471, 0.011764706, 1)
|
||||
light_energy = 0.05
|
||||
shadow_enabled = true
|
||||
omni_attenuation = 0.048
|
||||
|
||||
[node name="Player3D" parent="." node_paths=PackedStringArray("pointer_texture_rect") instance=ExtResource("13_a2cx2")]
|
||||
[node name="Player3D" parent="." unique_id=1538615342 instance=ExtResource("13_a2cx2")]
|
||||
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 2.390058, -0.2572075, -0.05658534)
|
||||
pointer_texture_rect = NodePath("../CanvasLayer/Pointer")
|
||||
|
||||
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
|
||||
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="." unique_id=1973506100]
|
||||
transform = Transform3D(0.88172376, -0.122102074, 0.45569107, -0.47176614, -0.22820692, 0.8516797, 0, -0.9659259, -0.25881907, 0.03206873, 3.2286942, -1.7533616)
|
||||
light_color = Color(0.6287269, 0.4718002, 0.27988377, 1)
|
||||
light_energy = 1.815
|
||||
@@ -716,103 +713,62 @@ shadow_enabled = true
|
||||
directional_shadow_mode = 1
|
||||
directional_shadow_split_1 = 0.039
|
||||
|
||||
[node name="MapAction" type="Area3D" parent="." node_paths=PackedStringArray("animation_player")]
|
||||
[node name="MapAction" type="Area3D" parent="." unique_id=1129033051 node_paths=PackedStringArray("animation_player")]
|
||||
unique_name_in_owner = true
|
||||
transform = Transform3D(-4.371139e-08, -0.9816273, 0.19080897, 0, 0.19080897, 0.9816273, -1, 4.290829e-08, -8.340525e-09, -0.652, -0.162, 0)
|
||||
script = ExtResource("6_22o3l")
|
||||
animation_player = NodePath("AnimationPlayer")
|
||||
|
||||
[node name="Sprite3D" type="Sprite3D" parent="MapAction"]
|
||||
[node name="Sprite3D" type="Sprite3D" parent="MapAction" unique_id=234326073]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 3.578776e-16, 0, -3.578776e-16, 1, 6.3611534e-09, 0.14808768, -0.0008355081)
|
||||
texture = ExtResource("3_3b5pk")
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="MapAction"]
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="MapAction" unique_id=1938904458]
|
||||
transform = Transform3D(1, 2.4868996e-14, -6.217249e-15, 0, 1, -3.578774e-16, 0, -3.5787743e-16, 1, 6.077224e-09, 0.1160875, -0.13141868)
|
||||
shape = SubResource("SphereShape3D_3b5pk")
|
||||
|
||||
[node name="AnimationPlayer" type="AnimationPlayer" parent="MapAction"]
|
||||
libraries = {
|
||||
&"": SubResource("AnimationLibrary_6o275")
|
||||
}
|
||||
[node name="AnimationPlayer" type="AnimationPlayer" parent="MapAction" unique_id=190888156]
|
||||
libraries/ = SubResource("AnimationLibrary_6o275")
|
||||
|
||||
[node name="Communications" type="Area3D" parent="."]
|
||||
[node name="Communications" type="Area3D" parent="." unique_id=607310349]
|
||||
visible = false
|
||||
|
||||
[node name="Sprite3D" type="Sprite3D" parent="Communications"]
|
||||
[node name="Sprite3D" type="Sprite3D" parent="Communications" unique_id=911244748]
|
||||
transform = Transform3D(-1.7484556e-08, 0, -0.4, 0, 0.4, 0, 0.4, 0, -1.7484556e-08, -0.925, 0.13795245, -0.8395888)
|
||||
texture = ExtResource("4_bse8l")
|
||||
|
||||
[node name="ExitAction" type="Area3D" parent="." node_paths=PackedStringArray("animation_player")]
|
||||
[node name="ExitAction" type="Area3D" parent="." unique_id=188113050 node_paths=PackedStringArray("animation_player")]
|
||||
unique_name_in_owner = true
|
||||
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 1.9359307, -0.14775532, 1.3062965)
|
||||
script = ExtResource("6_22o3l")
|
||||
animation_player = NodePath("AnimationPlayer")
|
||||
|
||||
[node name="Sprite3D2" type="Sprite3D" parent="ExitAction"]
|
||||
[node name="Sprite3D2" type="Sprite3D" parent="ExitAction" unique_id=960570102]
|
||||
transform = Transform3D(-3.934025e-08, 0, -0.9, 0, 0.9, 0, 0.9, 0, -3.934025e-08, 0, -0.09688908, 0)
|
||||
flip_h = true
|
||||
texture = ExtResource("5_oq6nq")
|
||||
|
||||
[node name="CollisionShape3D2" type="CollisionShape3D" parent="ExitAction"]
|
||||
[node name="CollisionShape3D2" type="CollisionShape3D" parent="ExitAction" unique_id=812463637]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.25628877, 0, -5.9604645e-07)
|
||||
shape = SubResource("CapsuleShape3D_eodxe")
|
||||
|
||||
[node name="AnimationPlayer" type="AnimationPlayer" parent="ExitAction"]
|
||||
libraries = {
|
||||
&"": SubResource("AnimationLibrary_eodxe")
|
||||
}
|
||||
[node name="AnimationPlayer" type="AnimationPlayer" parent="ExitAction" unique_id=447523588]
|
||||
libraries/ = SubResource("AnimationLibrary_eodxe")
|
||||
|
||||
[node name="CanvasLayer" type="CanvasLayer" parent="."]
|
||||
|
||||
[node name="MarginContainer" type="MarginContainer" parent="CanvasLayer"]
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
theme = ExtResource("10_j2e5k")
|
||||
|
||||
[node name="Inventory" parent="CanvasLayer/MarginContainer" instance=ExtResource("11_eodxe")]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 4
|
||||
size_flags_vertical = 8
|
||||
|
||||
[node name="Pointer" type="TextureRect" parent="CanvasLayer"]
|
||||
custom_minimum_size = Vector2(30, 30)
|
||||
anchors_preset = 8
|
||||
anchor_left = 0.5
|
||||
anchor_top = 0.5
|
||||
anchor_right = 0.5
|
||||
anchor_bottom = 0.5
|
||||
offset_left = -2.5
|
||||
offset_top = -2.5
|
||||
offset_right = 2.5
|
||||
offset_bottom = 2.5
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
size_flags_horizontal = 4
|
||||
size_flags_vertical = 4
|
||||
texture = ExtResource("11_6o275")
|
||||
expand_mode = 1
|
||||
|
||||
[node name="Planet3d" parent="." instance=ExtResource("3_oq6nq")]
|
||||
[node name="Planet3d" parent="." unique_id=1178444123 instance=ExtResource("3_oq6nq")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -33.448, -83.679, 0)
|
||||
radius = 80.0
|
||||
details = 112
|
||||
noise = SubResource("FastNoiseLite_i3c17")
|
||||
noise = SubResource("FastNoiseLite_5t1te")
|
||||
height = 11.26
|
||||
|
||||
[node name="AnimationPlayer" type="AnimationPlayer" parent="Planet3d"]
|
||||
[node name="AnimationPlayer" type="AnimationPlayer" parent="Planet3d" unique_id=907181708]
|
||||
root_node = NodePath("../..")
|
||||
libraries = {
|
||||
&"": SubResource("AnimationLibrary_biiuk")
|
||||
}
|
||||
libraries/ = SubResource("AnimationLibrary_biiuk")
|
||||
|
||||
[node name="StateAnimationPlayer" type="AnimationPlayer" parent="."]
|
||||
[node name="StateAnimationPlayer" type="AnimationPlayer" parent="." unique_id=1935102558]
|
||||
unique_name_in_owner = true
|
||||
libraries = {
|
||||
&"": SubResource("AnimationLibrary_gspic")
|
||||
}
|
||||
libraries/ = SubResource("AnimationLibrary_gspic")
|
||||
|
||||
[connection signal="clicked" from="MapAction" to="." method="_on_map_action_clicked"]
|
||||
[connection signal="clicked" from="ExitAction" to="." method="_on_exit_action_clicked"]
|
||||
|
||||
@@ -1,20 +0,0 @@
|
||||
[gd_scene load_steps=3 format=3 uid="uid://da7a74dg30q1l"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://3rrym6yv7xyp" path="res://stages/cockpit/player_3d/scripts/player_3d.gd" id="1_pvvbh"]
|
||||
|
||||
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_eodxe"]
|
||||
radius = 0.46868896
|
||||
height = 1.7342377
|
||||
|
||||
[node name="Player3D" type="CharacterBody3D"]
|
||||
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 0, 0, 0)
|
||||
script = ExtResource("1_pvvbh")
|
||||
|
||||
[node name="Camera3D" type="Camera3D" parent="."]
|
||||
unique_name_in_owner = true
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.19785136, 0)
|
||||
near = 0.003
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.253273, 0)
|
||||
shape = SubResource("CapsuleShape3D_eodxe")
|
||||
@@ -15,6 +15,7 @@ func _ready():
|
||||
Dialogic.timeline_ended.connect(start_tutorial)
|
||||
|
||||
func start_tutorial():
|
||||
GameInfo.game_data.dialogs_done.append('demeter_intro')
|
||||
if not tutorial_started:
|
||||
tutorial_started = true
|
||||
Dialogic.end_timeline()
|
||||
|
||||
@@ -37,22 +37,7 @@ func _on_mouse_exited():
|
||||
Pointer.stop_inspect(self)
|
||||
|
||||
func card_info() -> CardInfo:
|
||||
var info = run_point.card_info()
|
||||
var visited_text = "VISITED_REGION"
|
||||
|
||||
if state == State.CURRENT:
|
||||
visited_text = "CURRENT_REGION"
|
||||
elif state == State.TO_VISIT:
|
||||
visited_text = "REGION_TO_VISIT"
|
||||
|
||||
info.stats.append(
|
||||
CardStatInfo.new(
|
||||
visited_text,
|
||||
%Sprite3D.texture
|
||||
)
|
||||
)
|
||||
|
||||
return info
|
||||
return run_point.card_info()
|
||||
|
||||
func update_state():
|
||||
var texture = VISITED_SPRITE
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 236 KiB |
@@ -0,0 +1,40 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://dlbdjyqj03gvo"
|
||||
path="res://.godot/imported/moss_talion_atlas_texture.png-7f77b023be9ac6fcea86176ee53d848b.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://stages/terrain/region/assets/textures/moss_biome/moss_talion_atlas_texture.png"
|
||||
dest_files=["res://.godot/imported/moss_talion_atlas_texture.png-7f77b023be9ac6fcea86176ee53d848b.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
@@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=9 format=3 uid="uid://tsi5j1uxppa4"]
|
||||
[gd_scene format=3 uid="uid://tsi5j1uxppa4"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://d1mp5sguc0b6u" path="res://stages/terrain/region/scripts/region.gd" id="1_441sk"]
|
||||
[ext_resource type="PackedScene" uid="uid://dt6mptqg80dew" path="res://gui/game/tutorial/tutorial.tscn" id="2_2f6js"]
|
||||
@@ -9,35 +9,34 @@
|
||||
[ext_resource type="PackedScene" uid="uid://d324mlmgls4fs" path="res://entities/interactables/truck/recharge/truck_recharge.tscn" id="7_6d8m3"]
|
||||
[ext_resource type="PackedScene" uid="uid://dj7gp3crtg2yt" path="res://entities/camera/camera.tscn" id="8_fwgig"]
|
||||
|
||||
[node name="Region" type="Node2D" node_paths=PackedStringArray("entity_container")]
|
||||
[node name="Region" type="Node2D" unique_id=1509166288 node_paths=PackedStringArray("entity_container")]
|
||||
script = ExtResource("1_441sk")
|
||||
first_loot_number = null
|
||||
loot_item_number = null
|
||||
entity_container = NodePath("Entities")
|
||||
|
||||
[node name="RegionGui" type="CanvasLayer" parent="."]
|
||||
[node name="PassDay" parent="." unique_id=1144772570 instance=ExtResource("3_ktnx3")]
|
||||
unique_name_in_owner = true
|
||||
visible = false
|
||||
|
||||
[node name="RegionGui" type="CanvasLayer" parent="." unique_id=2024485651]
|
||||
layer = 2
|
||||
|
||||
[node name="Tutorial" parent="RegionGui" node_paths=PackedStringArray("player", "region") instance=ExtResource("2_2f6js")]
|
||||
[node name="Tutorial" parent="RegionGui" unique_id=762436685 node_paths=PackedStringArray("player", "region") instance=ExtResource("2_2f6js")]
|
||||
player = NodePath("../../Entities/Player")
|
||||
region = NodePath("../..")
|
||||
|
||||
[node name="PassDay" parent="RegionGui" instance=ExtResource("3_ktnx3")]
|
||||
unique_name_in_owner = true
|
||||
[node name="GameGui" parent="." unique_id=1970837239 instance=ExtResource("4_qdnee")]
|
||||
|
||||
[node name="GameGui" parent="." instance=ExtResource("4_qdnee")]
|
||||
|
||||
[node name="Entities" type="Node2D" parent="."]
|
||||
[node name="Entities" type="Node2D" parent="." unique_id=2132324579]
|
||||
y_sort_enabled = true
|
||||
|
||||
[node name="TruckLadder" parent="Entities" instance=ExtResource("6_2w03p")]
|
||||
[node name="TruckLadder" parent="Entities" unique_id=1990299618 instance=ExtResource("6_2w03p")]
|
||||
position = Vector2(51, -112)
|
||||
|
||||
[node name="Player" parent="Entities" instance=ExtResource("5_ovqi1")]
|
||||
[node name="Player" parent="Entities" unique_id=75851644 instance=ExtResource("5_ovqi1")]
|
||||
z_index = 1
|
||||
|
||||
[node name="TruckRecharge" parent="Entities" instance=ExtResource("7_6d8m3")]
|
||||
[node name="TruckRecharge" parent="Entities" unique_id=2068738444 instance=ExtResource("7_6d8m3")]
|
||||
position = Vector2(-50, -124)
|
||||
|
||||
[node name="Camera" parent="." node_paths=PackedStringArray("following") instance=ExtResource("8_fwgig")]
|
||||
[node name="Camera" parent="." unique_id=1399042986 node_paths=PackedStringArray("following") instance=ExtResource("8_fwgig")]
|
||||
following = NodePath("../Entities/Player")
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
[gd_resource type="TileSet" load_steps=9 format=3 uid="uid://bqo32vh5etspf"]
|
||||
[gd_resource type="TileSet" format=3 uid="uid://bqo32vh5etspf"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://ch4rydip0nlt6" path="res://stages/terrain/region/assets/textures/moss_biome/moss_rock_atlas_texture.png" id="1_spfgy"]
|
||||
[ext_resource type="Texture2D" uid="uid://dr72xhc07i56e" path="res://stages/terrain/region/assets/textures/moss_biome/moss_contamination_atlas_texture.png" id="1_uqnql"]
|
||||
[ext_resource type="Texture2D" uid="uid://yl4dg6gerykb" path="res://stages/terrain/region/assets/textures/green_tiles.png" id="2_04qcq"]
|
||||
[ext_resource type="Texture2D" uid="uid://dlbdjyqj03gvo" path="res://stages/terrain/region/assets/textures/moss_biome/moss_talion_atlas_texture.png" id="2_fywqu"]
|
||||
[ext_resource type="Texture2D" uid="uid://bi08trir23od2" path="res://stages/terrain/region/assets/textures/red_rect.png" id="4_spfgy"]
|
||||
|
||||
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_4i8c6"]
|
||||
@@ -404,7 +404,7 @@ texture_region_size = Vector2i(64, 64)
|
||||
|
||||
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_spfgy"]
|
||||
resource_name = "Cristal"
|
||||
texture = ExtResource("2_04qcq")
|
||||
texture = ExtResource("2_fywqu")
|
||||
texture_region_size = Vector2i(64, 64)
|
||||
0:0/0 = 0
|
||||
0:0/0/terrain_set = 0
|
||||
@@ -675,17 +675,19 @@ texture_region_size = Vector2i(64, 64)
|
||||
9:1/0 = 0
|
||||
9:1/0/terrain_set = 0
|
||||
9:1/0/terrain = 2
|
||||
9:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(32, -32, 32, 16, 16, 32, -32, 32, -32, -16, -16, -32)
|
||||
9:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32)
|
||||
9:1/0/terrains_peering_bit/right_side = 2
|
||||
9:1/0/terrains_peering_bit/bottom_right_corner = 2
|
||||
9:1/0/terrains_peering_bit/bottom_side = 2
|
||||
9:1/0/terrains_peering_bit/bottom_left_corner = 2
|
||||
9:1/0/terrains_peering_bit/left_side = 2
|
||||
9:1/0/terrains_peering_bit/top_left_corner = 2
|
||||
9:1/0/terrains_peering_bit/top_side = 2
|
||||
9:1/0/terrains_peering_bit/top_right_corner = 2
|
||||
9:2/0 = 0
|
||||
9:2/0/terrain_set = 0
|
||||
9:2/0/terrain = 2
|
||||
9:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(32, -32, 32, 32, -32, 32, -32, -32)
|
||||
9:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32)
|
||||
9:2/0/terrains_peering_bit/right_side = 2
|
||||
9:2/0/terrains_peering_bit/bottom_right_corner = 2
|
||||
9:2/0/terrains_peering_bit/bottom_side = 2
|
||||
@@ -731,16 +733,28 @@ texture_region_size = Vector2i(64, 64)
|
||||
10:0/0/terrains_peering_bit/left_side = 2
|
||||
10:1/0 = 0
|
||||
10:1/0/terrain_set = 0
|
||||
10:1/0/terrain = 2
|
||||
10:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32)
|
||||
10:1/0/terrains_peering_bit/right_side = 2
|
||||
10:1/0/terrains_peering_bit/bottom_right_corner = 2
|
||||
10:1/0/terrains_peering_bit/bottom_side = 2
|
||||
10:1/0/terrains_peering_bit/bottom_left_corner = 2
|
||||
10:1/0/terrains_peering_bit/left_side = 2
|
||||
10:1/0/terrains_peering_bit/top_left_corner = 2
|
||||
10:1/0/terrains_peering_bit/top_side = 2
|
||||
10:1/0/terrains_peering_bit/top_right_corner = 2
|
||||
10:2/0 = 0
|
||||
10:2/0/terrain_set = 0
|
||||
10:2/0/terrain = 2
|
||||
10:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(32, -16, 32, 32, -16, 32, -32, 16, -32, -32, 16, -32)
|
||||
10:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-32, -32, 32, -32, 32, 32, -32, 32)
|
||||
10:2/0/terrains_peering_bit/right_side = 2
|
||||
10:2/0/terrains_peering_bit/bottom_right_corner = 2
|
||||
10:2/0/terrains_peering_bit/bottom_side = 2
|
||||
10:2/0/terrains_peering_bit/bottom_left_corner = 2
|
||||
10:2/0/terrains_peering_bit/left_side = 2
|
||||
10:2/0/terrains_peering_bit/top_left_corner = 2
|
||||
10:2/0/terrains_peering_bit/top_side = 2
|
||||
10:2/0/terrains_peering_bit/top_right_corner = 2
|
||||
10:3/0 = 0
|
||||
10:3/0/terrain_set = 0
|
||||
10:3/0/terrain = 2
|
||||
|
||||
@@ -8,7 +8,7 @@ enum TileDiff { NO_DIFF,PRESENT,ABSENT }
|
||||
@export var decontamination_tiles_diff : Dictionary[String, TileDiff]
|
||||
|
||||
func _init(
|
||||
_chunk_coord : Vector2i
|
||||
_chunk_coord : Vector2i = Vector2i.ZERO
|
||||
):
|
||||
chunk_coord = _chunk_coord
|
||||
|
||||
|
||||
@@ -47,7 +47,7 @@ func _ready():
|
||||
|
||||
for e in entity_container.get_children():
|
||||
if e is Plant:
|
||||
data.add_plant_data(e.data)
|
||||
data.add_plant_data(e.data, false)
|
||||
|
||||
generate_first_entities()
|
||||
|
||||
@@ -58,6 +58,8 @@ func _ready():
|
||||
decontamination_layer = DecontaminationLayer.new(self)
|
||||
add_child(decontamination_layer)
|
||||
|
||||
player.global_position = data.player_position
|
||||
|
||||
generate_near_chunks(player)
|
||||
|
||||
edit_map_origin()
|
||||
@@ -154,6 +156,8 @@ func get_chunk_generation_count() -> int:
|
||||
|
||||
func save():
|
||||
data.entities_saved_data = save_entities()
|
||||
data.player_position = player.global_position
|
||||
GameInfo.save_game_data()
|
||||
|
||||
#endregion
|
||||
|
||||
@@ -191,6 +195,5 @@ func pass_day():
|
||||
e._end_pass_day()
|
||||
|
||||
data.end_pass_day()
|
||||
|
||||
save()
|
||||
#endregion
|
||||
|
||||
@@ -22,16 +22,23 @@ const DEFAULT_OBJECTIVE := 10
|
||||
@export var tutorial_step : int = 0
|
||||
@export var tutorial = false
|
||||
|
||||
@export var state : State = State.IN_PROGRESS :
|
||||
set(v):
|
||||
print("Set state to %d" % v)
|
||||
state = v
|
||||
|
||||
@export var chunks_data : Dictionary[String, ChunkData]
|
||||
|
||||
@export var player_position : Vector2i = Region.CHUNK_SIZE/2. * Vector2.ONE
|
||||
|
||||
@export var charges : int :
|
||||
set(v):
|
||||
charges = v
|
||||
updated.emit(self)
|
||||
update()
|
||||
@export var objective : int :
|
||||
set(v):
|
||||
objective = v
|
||||
updated.emit(self)
|
||||
update()
|
||||
|
||||
|
||||
var in_passing_day_animation := false
|
||||
@@ -46,6 +53,14 @@ func _init(
|
||||
|
||||
tutorial = parameter.tutorial
|
||||
|
||||
func update():
|
||||
print("Score %d > Objective %d" % [get_score(), objective] )
|
||||
if objective > 0 and get_score() >= objective:
|
||||
state = State.SUCCEEDED
|
||||
if state != State.SUCCEEDED and charges == 0:
|
||||
state = State.FAILED
|
||||
updated.emit(self)
|
||||
|
||||
#region ------------------ Chunks ------------------
|
||||
|
||||
func get_coord_id(coord):
|
||||
@@ -82,12 +97,7 @@ func is_objective_reached():
|
||||
return get_score() >= objective
|
||||
|
||||
func get_state() -> State:
|
||||
if get_score() >= objective:
|
||||
return State.SUCCEEDED
|
||||
elif charges <= 0:
|
||||
return State.FAILED
|
||||
else:
|
||||
return State.IN_PROGRESS
|
||||
return state
|
||||
#endregion
|
||||
|
||||
#region ------------------ Day ------------------
|
||||
@@ -107,10 +117,12 @@ func end_pass_day():
|
||||
|
||||
#region ------------------ Plants ------------------
|
||||
|
||||
func add_plant_data(plant_data : PlantData):
|
||||
score_by_plant[plant_data] = plant_data.get_score()
|
||||
func add_plant_data(plant_data : PlantData, with_update = true):
|
||||
score_by_plant[plant_data] = 0
|
||||
plant_data.disappeared.connect(_on_plant_disappeared)
|
||||
plant_data.updated.connect(_on_plant_updated)
|
||||
if with_update:
|
||||
_on_plant_updated(plant_data)
|
||||
|
||||
func _on_plant_updated(plant_data : PlantData):
|
||||
var old_plant_score = score_by_plant[plant_data]
|
||||
@@ -118,11 +130,11 @@ func _on_plant_updated(plant_data : PlantData):
|
||||
|
||||
if old_plant_score != score_by_plant[plant_data]:
|
||||
plant_changing_score.emit(plant_data, score_by_plant[plant_data] - old_plant_score)
|
||||
updated.emit(self)
|
||||
update()
|
||||
|
||||
func _on_plant_disappeared(plant_data : PlantData):
|
||||
plant_changing_score.emit(plant_data, - score_by_plant[plant_data])
|
||||
score_by_plant.erase(plant_data)
|
||||
updated.emit(self)
|
||||
update()
|
||||
|
||||
#endregion
|
||||
|
||||
@@ -10,7 +10,7 @@ class_name RegionParameter
|
||||
func _init(
|
||||
_charges : int = 10,
|
||||
_objective : int = 10,
|
||||
_name = Random.generate_random_name(),
|
||||
_name = Random.generate_random_word(),
|
||||
_tutorial = false,
|
||||
_region_seed = randi(),
|
||||
):
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
extends RegionLayer
|
||||
class_name RockLayer
|
||||
|
||||
const MATERIAL : Material = preload("res://stages/terrain/region/resources/materials/rock_planet_tilemap.tres")
|
||||
const ROCK_TILE_TERRAIN_SET : int = 0
|
||||
const ROCK_TILE_TERRAIN : int = 1
|
||||
const CRISTAL_TILE_TERRAIN : int = 2
|
||||
@@ -12,7 +11,6 @@ const CRISTAL_LOOT_CHANCE : float = 1
|
||||
enum TileType { EMPTY,ROCK,CRISTAL }
|
||||
|
||||
func setup():
|
||||
material = MATERIAL
|
||||
z_index = 2
|
||||
|
||||
func place_rocks(coords : Array[Vector2i], type := TileType.ROCK,on_finished : Callable = (func(): pass)):
|
||||
|
||||
@@ -34,6 +34,7 @@ func enroll_entity(entity : Node2D):
|
||||
if entity is Player:
|
||||
player = entity
|
||||
|
||||
|
||||
func save_entities() -> Array[EntityData]:
|
||||
var saved_entities_data : Array[EntityData] = []
|
||||
for e in entity_container.get_children():
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -1,9 +1,9 @@
|
||||
[gd_resource type="GradientTexture1D" load_steps=2 format=3 uid="uid://c4usrfeevb4n1"]
|
||||
[gd_resource type="GradientTexture1D" format=3 uid="uid://c4usrfeevb4n1"]
|
||||
|
||||
[sub_resource type="Gradient" id="Gradient_tbl1d"]
|
||||
interpolation_mode = 1
|
||||
offsets = PackedFloat32Array(0.18263473, 0.2994012, 0.4730539, 0.6766467)
|
||||
colors = PackedColorArray(0, 0, 0, 1, 0.0974324, 0.14984256, 0.19949976, 1, 0.15294118, 0.1764706, 0.27450982, 1, 1, 1, 1, 1)
|
||||
offsets = PackedFloat32Array(0.15111111, 0.28, 0.44444445, 0.64, 0.72888887)
|
||||
colors = PackedColorArray(0.015686275, 0.003921569, 0.050980393, 1, 0.13725491, 0.39215687, 0.6666667, 1, 0.0627451, 0.05882353, 0.16862746, 1, 0.5882353, 0.7019608, 0.85882354, 1, 1, 1, 1, 1)
|
||||
|
||||
[resource]
|
||||
gradient = SubResource("Gradient_tbl1d")
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
[gd_resource type="StandardMaterial3D" load_steps=0 format=3 uid="uid://c26wmvhmhpqw7"]
|
||||
[gd_resource type="StandardMaterial3D" format=3 uid="uid://c26wmvhmhpqw7"]
|
||||
|
||||
[resource]
|
||||
transparency = 1
|
||||
albedo_color = Color(0, 0.18850002, 0.29, 0.8156863)
|
||||
albedo_color = Color(0.14069998, 0.39652818, 0.67, 0.8901961)
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
// Copied here https://www.youtube.com/watch?v=tPl7zfwuEEA
|
||||
|
||||
shader_type spatial;
|
||||
render_mode world_vertex_coords;
|
||||
|
||||
@@ -14,6 +16,7 @@ void vertex() {
|
||||
}
|
||||
|
||||
void fragment() {
|
||||
METALLIC = 0.0;
|
||||
SPECULAR = specular;
|
||||
ROUGHNESS = roughness;
|
||||
|
||||
|
||||
@@ -12,9 +12,14 @@ var next_mouse_pos : Vector2
|
||||
|
||||
func _ready():
|
||||
%Version.text = ProjectSettings.get_setting("application/config/version")
|
||||
%Start.text = tr("CONTINUE") if GameInfo.game_loaded else tr("START")
|
||||
%Restart.visible = GameInfo.game_loaded
|
||||
|
||||
func _on_start_pressed():
|
||||
SceneManager.change_scene("INTRO")
|
||||
if 'demeter_intro' not in GameInfo.game_data.dialogs_done:
|
||||
SceneManager.change_scene("INTRO")
|
||||
else:
|
||||
SceneManager.change_scene("REGION")
|
||||
|
||||
func _process(delta):
|
||||
next_mouse_pos = get_viewport().get_mouse_position()
|
||||
@@ -41,3 +46,8 @@ func _process(delta):
|
||||
|
||||
%Planet3d.rotate(Vector3.UP, planet_rotation.x * delta)
|
||||
%Planet3d.rotate(Vector3.RIGHT, planet_rotation.y * delta)
|
||||
|
||||
|
||||
func _on_restart_button_down():
|
||||
GameInfo.restart_game_data()
|
||||
_on_start_pressed()
|
||||
|
||||
@@ -1,17 +1,18 @@
|
||||
[gd_scene load_steps=12 format=3 uid="uid://dxvtm81tq1a6w"]
|
||||
[gd_scene format=3 uid="uid://dxvtm81tq1a6w"]
|
||||
|
||||
[ext_resource type="Theme" uid="uid://bgcmd213j6gk1" path="res://gui/ressources/hud.tres" id="1_4ph5l"]
|
||||
[ext_resource type="Script" uid="uid://cwmp2une7hobe" path="res://stages/title_screen/scripts/title_screen.gd" id="1_6yuhi"]
|
||||
[ext_resource type="Texture2D" uid="uid://dcgnamu7sb3ov" path="res://common/icons/bolt.svg" id="3_6yuhi"]
|
||||
[ext_resource type="Texture2D" uid="uid://cdpqg3pkjcw2h" path="res://stages/title_screen/assets/textures/title.png" id="3_y6tw6"]
|
||||
[ext_resource type="Texture2D" uid="uid://bewr0t1wi8pff" path="res://common/icons/rotate.svg" id="5_6yuhi"]
|
||||
[ext_resource type="PackedScene" uid="uid://cm5b7w7j6527f" path="res://stages/title_screen/planet_3d.tscn" id="5_7a1qq"]
|
||||
[ext_resource type="Shader" uid="uid://bv2rghn44mrrf" path="res://stages/title_screen/resources/shaders/stars.gdshader" id="7_y6tw6"]
|
||||
|
||||
[sub_resource type="ViewportTexture" id="ViewportTexture_6yuhi"]
|
||||
viewport_path = NodePath("SubViewport")
|
||||
|
||||
[sub_resource type="FastNoiseLite" id="FastNoiseLite_qnk88"]
|
||||
seed = -907666519
|
||||
[sub_resource type="FastNoiseLite" id="FastNoiseLite_6yuhi"]
|
||||
seed = 1468520525
|
||||
frequency = 1.0
|
||||
|
||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_7a1qq"]
|
||||
@@ -33,25 +34,23 @@ sky_material = SubResource("ShaderMaterial_7a1qq")
|
||||
background_mode = 2
|
||||
sky = SubResource("Sky_65b6a")
|
||||
sky_custom_fov = 61.7
|
||||
reflected_light_source = 1
|
||||
tonemap_exposure = 1.54
|
||||
glow_enabled = true
|
||||
ambient_light_source = 3
|
||||
glow_intensity = 1.16
|
||||
glow_bloom = 0.49
|
||||
glow_hdr_threshold = 0.32
|
||||
glow_hdr_scale = 0.0
|
||||
glow_hdr_luminance_cap = 5.63
|
||||
fog_light_energy = 0.0
|
||||
fog_density = 0.0
|
||||
fog_sky_affect = 0.0
|
||||
fog_height = -1024.0
|
||||
fog_height_density = 0.4145
|
||||
adjustment_enabled = true
|
||||
adjustment_brightness = 1.04
|
||||
adjustment_contrast = 1.2
|
||||
adjustment_saturation = 0.88
|
||||
|
||||
[node name="TitleScreen" type="CanvasLayer"]
|
||||
[node name="TitleScreen" type="CanvasLayer" unique_id=1166097103]
|
||||
script = ExtResource("1_6yuhi")
|
||||
|
||||
[node name="Background1" type="TextureRect" parent="."]
|
||||
[node name="Background1" type="TextureRect" parent="." unique_id=765477669]
|
||||
z_index = -1
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
@@ -62,7 +61,7 @@ texture = SubResource("ViewportTexture_6yuhi")
|
||||
expand_mode = 2
|
||||
stretch_mode = 6
|
||||
|
||||
[node name="MarginContainer" type="MarginContainer" parent="."]
|
||||
[node name="MarginContainer" type="MarginContainer" parent="." unique_id=602845661]
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
@@ -70,25 +69,25 @@ grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
theme = ExtResource("1_4ph5l")
|
||||
|
||||
[node name="Version" type="Label" parent="MarginContainer"]
|
||||
[node name="Version" type="Label" parent="MarginContainer" unique_id=875225181]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 8
|
||||
size_flags_vertical = 0
|
||||
text = "Version"
|
||||
|
||||
[node name="GridContainer" type="HBoxContainer" parent="MarginContainer"]
|
||||
[node name="GridContainer" type="HBoxContainer" parent="MarginContainer" unique_id=975183276]
|
||||
layout_mode = 2
|
||||
alignment = 1
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer/GridContainer"]
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer/GridContainer" unique_id=1713044942]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 4
|
||||
theme_override_constants/separation = 40
|
||||
theme_override_constants/separation = 20
|
||||
alignment = 1
|
||||
|
||||
[node name="Logo" type="TextureRect" parent="MarginContainer/GridContainer/VBoxContainer"]
|
||||
[node name="Logo" type="TextureRect" parent="MarginContainer/GridContainer/VBoxContainer" unique_id=549806567]
|
||||
z_index = 2
|
||||
custom_minimum_size = Vector2(400, 0)
|
||||
layout_mode = 2
|
||||
@@ -98,7 +97,7 @@ texture = ExtResource("3_y6tw6")
|
||||
expand_mode = 5
|
||||
stretch_mode = 5
|
||||
|
||||
[node name="Start" type="Button" parent="MarginContainer/GridContainer/VBoxContainer"]
|
||||
[node name="Start" type="Button" parent="MarginContainer/GridContainer/VBoxContainer" unique_id=366586661]
|
||||
unique_name_in_owner = true
|
||||
z_index = 1
|
||||
layout_mode = 2
|
||||
@@ -109,27 +108,46 @@ theme_override_font_sizes/font_size = 33
|
||||
text = "START"
|
||||
icon = ExtResource("3_6yuhi")
|
||||
|
||||
[node name="Credits" type="VBoxContainer" parent="MarginContainer/GridContainer"]
|
||||
[node name="Restart" type="Button" parent="MarginContainer/GridContainer/VBoxContainer" unique_id=1324703681]
|
||||
unique_name_in_owner = true
|
||||
z_index = 1
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 4
|
||||
size_flags_vertical = 4
|
||||
theme = ExtResource("1_4ph5l")
|
||||
theme_override_font_sizes/font_size = 33
|
||||
text = "RESTART"
|
||||
icon = ExtResource("5_6yuhi")
|
||||
flat = true
|
||||
|
||||
[node name="Credits" type="VBoxContainer" parent="MarginContainer/GridContainer" unique_id=871547635]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 4
|
||||
|
||||
[node name="SubViewport" type="SubViewport" parent="."]
|
||||
[node name="SubViewport" type="SubViewport" parent="." unique_id=1703203942]
|
||||
size = Vector2i(1980, 1080)
|
||||
|
||||
[node name="Planet3d" parent="SubViewport" instance=ExtResource("5_7a1qq")]
|
||||
[node name="Planet3d" parent="SubViewport" unique_id=926789923 instance=ExtResource("5_7a1qq")]
|
||||
unique_name_in_owner = true
|
||||
noise = SubResource("FastNoiseLite_qnk88")
|
||||
noise = SubResource("FastNoiseLite_6yuhi")
|
||||
|
||||
[node name="Camera3D" type="Camera3D" parent="SubViewport"]
|
||||
[node name="Camera3D" type="Camera3D" parent="SubViewport" unique_id=806252928]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -14.369979, 0, 64.323425)
|
||||
current = true
|
||||
fov = 34.0
|
||||
|
||||
[node name="WorldEnvironment" type="WorldEnvironment" parent="SubViewport"]
|
||||
[node name="WorldEnvironment" type="WorldEnvironment" parent="SubViewport" unique_id=466718971]
|
||||
environment = SubResource("Environment_nmsah")
|
||||
|
||||
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="SubViewport"]
|
||||
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="SubViewport" unique_id=1446693225]
|
||||
transform = Transform3D(0.044800885, 0.76661056, -0.6405476, -0.8325595, 0.38302267, 0.4001729, 0.55212104, 0.51536596, 0.65540874, -23.18848, 19.508549, 0)
|
||||
light_volumetric_fog_energy = 0.0
|
||||
light_specular = 0.0
|
||||
shadow_enabled = true
|
||||
shadow_normal_bias = 0.0
|
||||
shadow_opacity = 0.48
|
||||
shadow_blur = 3.055
|
||||
|
||||
[connection signal="pressed" from="MarginContainer/GridContainer/VBoxContainer/Start" to="." method="_on_start_pressed"]
|
||||
[connection signal="button_down" from="MarginContainer/GridContainer/VBoxContainer/Restart" to="." method="_on_restart_button_down"]
|
||||
|
||||
@@ -132,6 +132,7 @@ ART,Art,Art
|
||||
DEV_AND_GAME_DESIGN,Development and Game Design,Développement et Game Design
|
||||
MUSIC,Music,Musique
|
||||
START,Start,Commencer
|
||||
CONTINUE,Continue,Continuer
|
||||
CHOOSE_A_LANGUAGE,Choose a language,Choisissez une langue
|
||||
NO_ENERGY_LEFT," (no energy left)", " (pas d'énergie restante)"
|
||||
%d_GARDEN_SCORE_LEFT,"%d garden score left","%d score de jardin restant"
|
||||
|
||||
|
@@ -15,3 +15,5 @@ dest_files=["res://translation/game/gui.en.translation", "res://translation/game
|
||||
|
||||
compress=true
|
||||
delimiter=0
|
||||
unescape_keys=false
|
||||
unescape_translations=true
|
||||
|
||||
Reference in New Issue
Block a user