feat: Add grid-based player movement manager, new 'stop_n_go' arena, and core game scene setup.
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_n7oje"]
|
||||
transparency = 1
|
||||
albedo_color = Color(0.30980393, 0.30980393, 0.30980393, 0)
|
||||
albedo_color = Color(0.30980393, 0.30980393, 0.30980393, 1)
|
||||
|
||||
[resource]
|
||||
material = SubResource("StandardMaterial3D_n7oje")
|
||||
|
||||
Binary file not shown.
@@ -0,0 +1,42 @@
|
||||
[remap]
|
||||
|
||||
importer="scene"
|
||||
importer_version=1
|
||||
type="PackedScene"
|
||||
uid="uid://cb1atdpit37w"
|
||||
path="res://.godot/imported/Grass only.glb-cc0d20fc21bd6e30d38e530c4cdf5b79.scn"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/models/arena/stop_n_go/Grass only.glb"
|
||||
dest_files=["res://.godot/imported/Grass only.glb-cc0d20fc21bd6e30d38e530c4cdf5b79.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={}
|
||||
gltf/naming_version=2
|
||||
gltf/embedded_image_handling=1
|
||||
Binary file not shown.
Binary file not shown.
|
After Width: | Height: | Size: 4.1 MiB |
@@ -0,0 +1,44 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://dc6yu7a3q3wn6"
|
||||
path.s3tc="res://.godot/imported/Grass only_Terrain ground tex.png-933ffd38863604b075d0bfd5951724d1.s3tc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "a184576b3eca9e728a947f07525a1557"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/models/arena/stop_n_go/Grass only_Terrain ground tex.png"
|
||||
dest_files=["res://.godot/imported/Grass only_Terrain ground tex.png-933ffd38863604b075d0bfd5951724d1.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
|
||||
Binary file not shown.
@@ -108,6 +108,19 @@ func _apply_arena_background():
|
||||
"Stop N Go Arena":
|
||||
texture_path = "res://assets/graphics/level_bg/placeholder_stop_n_go.jpg"
|
||||
_instantiate_3d_arena("res://scenes/arena/stop_n_go.scn")
|
||||
|
||||
# Make normal, non-walkable, and Tekton floors invisible
|
||||
# by shrinking their scale to 0. This hides them visually while
|
||||
# avoiding "Parameter 'mesh' is null" or material override errors.
|
||||
var em = $EnhancedGridMap
|
||||
if em and em.mesh_library:
|
||||
var ml = em.mesh_library.duplicate()
|
||||
for id in [0, 4, 6]:
|
||||
# Scale to 0 to hide it without triggering invalid mesh errors
|
||||
ml.set_item_mesh_transform(id, Transform3D().scaled(Vector3.ZERO))
|
||||
|
||||
em.mesh_library = ml
|
||||
print("[Main] Hide tiles 0, 4, 6 via zero-scale transform.")
|
||||
"Tekton Doors Arena":
|
||||
texture_path = "res://assets/graphics/level_bg/placeholder_tekton_doors.jpg"
|
||||
"Classic", _:
|
||||
|
||||
+3
-3
File diff suppressed because one or more lines are too long
@@ -90,6 +90,20 @@ func simple_move_to(grid_position: Vector2i) -> bool:
|
||||
# Allow passing through Walls (Item 4 or 16) if Invisible
|
||||
var is_wall_passable = player.get("is_invisible") and (cell_floor == 4 or cell_item == 16 or cell_item == 4)
|
||||
|
||||
# NEW: Impenetrable wall check (User request) - Certain coordinates are "Hard" walls even for Ghost
|
||||
# These generally correspond to the arena borders and environmental static obstacles.
|
||||
if is_wall_passable:
|
||||
var impenetrable_coords = [
|
||||
Vector2i(0,0), Vector2i(1,0), Vector2i(2,0), Vector2i(3,0), Vector2i(4,0), Vector2i(5,0), Vector2i(6,0), Vector2i(7,0), Vector2i(8,0), Vector2i(9,0), Vector2i(10,0), Vector2i(13,0), Vector2i(19,0), Vector2i(20,0), Vector2i(21,0), Vector2i(22,0),
|
||||
Vector2i(0,1), Vector2i(1,1), Vector2i(2,1), Vector2i(3,1), Vector2i(6,1),
|
||||
Vector2i(0,2), Vector2i(1,2), Vector2i(2,2), Vector2i(3,2),
|
||||
Vector2i(17,9), Vector2i(18,9), Vector2i(19,9), Vector2i(20,9), Vector2i(21,9), Vector2i(22,9),
|
||||
Vector2i(11,10), Vector2i(12,10), Vector2i(13,10), Vector2i(15,10), Vector2i(16,10), Vector2i(17,10), Vector2i(18,10), Vector2i(19,10), Vector2i(20,10), Vector2i(21,10), Vector2i(22,10),
|
||||
Vector2i(0,11), Vector2i(4,11), Vector2i(5,11), Vector2i(6,11), Vector2i(10,11), Vector2i(12,11), Vector2i(13,11), Vector2i(14,11), Vector2i(15,11), Vector2i(16,11), Vector2i(17,11), Vector2i(18,11), Vector2i(19,11), Vector2i(20,11), Vector2i(21,11), Vector2i(22,11)
|
||||
]
|
||||
if grid_position in impenetrable_coords:
|
||||
is_wall_passable = false
|
||||
|
||||
# Check Floor 0 (Basic Walkability/Void)
|
||||
if (cell_floor == -1 or cell_floor in enhanced_gridmap.non_walkable_items) and not is_wall_passable:
|
||||
print("[Move] Failed: Floor Item %d is non-walkable" % cell_floor)
|
||||
|
||||
Reference in New Issue
Block a user