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"]
|
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_n7oje"]
|
||||||
transparency = 1
|
transparency = 1
|
||||||
albedo_color = Color(0.30980393, 0.30980393, 0.30980393, 0)
|
albedo_color = Color(0.30980393, 0.30980393, 0.30980393, 1)
|
||||||
|
|
||||||
[resource]
|
[resource]
|
||||||
material = SubResource("StandardMaterial3D_n7oje")
|
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":
|
"Stop N Go Arena":
|
||||||
texture_path = "res://assets/graphics/level_bg/placeholder_stop_n_go.jpg"
|
texture_path = "res://assets/graphics/level_bg/placeholder_stop_n_go.jpg"
|
||||||
_instantiate_3d_arena("res://scenes/arena/stop_n_go.scn")
|
_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":
|
"Tekton Doors Arena":
|
||||||
texture_path = "res://assets/graphics/level_bg/placeholder_tekton_doors.jpg"
|
texture_path = "res://assets/graphics/level_bg/placeholder_tekton_doors.jpg"
|
||||||
"Classic", _:
|
"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
|
# 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)
|
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)
|
# Check Floor 0 (Basic Walkability/Void)
|
||||||
if (cell_floor == -1 or cell_floor in enhanced_gridmap.non_walkable_items) and not is_wall_passable:
|
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)
|
print("[Move] Failed: Floor Item %d is non-walkable" % cell_floor)
|
||||||
|
|||||||
Reference in New Issue
Block a user