add model base

This commit is contained in:
2025-04-29 18:28:53 -04:00
parent c9252a9f0b
commit 19289e49be
62 changed files with 181212 additions and 237 deletions

32
.vscode/launch.json vendored Normal file
View File

@@ -0,0 +1,32 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Launch",
"type": "godot",
"request": "launch",
"project": "${workspaceFolder}",
"address": "127.0.0.1",
"port": 6007,
"scene": "main",
//"editor_path": "<path>",
// engine command line flags
"profiling": false,
"single_threaded_scene": false,
"debug_collisions": false,
"debug_paths": false,
"debug_navigation": false,
"debug_avoidance": false,
"debug_stringnames": false,
"frame_delay": 0,
"time_scale": 1.0,
"disable_vsync": false,
"fixed_fps": 60,
// anything else
"additional_options": ""
}
]
}

View File

@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2016-2023 The Godot Engine community
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,12 @@
[configuration]
entry_symbol = "git_plugin_init"
compatibility_minimum = "4.1.0"
[libraries]
macos.editor = "macos/libgit_plugin.macos.editor.universal.dylib"
windows.editor.x86_64 = "win64/libgit_plugin.windows.editor.x86_64.dll"
linux.editor.x86_64 = "linux/libgit_plugin.linux.editor.x86_64.so"
linux.editor.arm64 = "linux/libgit_plugin.linux.editor.arm64.so"
linux.editor.rv64 = ""

View File

@@ -0,0 +1 @@
uid://dxk63u668l0xs

View File

@@ -0,0 +1,7 @@
[plugin]
name="Godot Git Plugin"
description="This plugin lets you interact with Git without leaving the Godot editor. More information can be found at https://github.com/godotengine/godot-git-plugin/wiki"
author="twaritwaikar"
version="v3.1.1"
script="godot-git-plugin.gd"

Binary file not shown.

View File

@@ -1,37 +0,0 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://c511yn4ka1smj"
path="res://.godot/imported/Bases Papel-base_25.glb-b0d315509692c243915af0667be1e4dd.scn"
[deps]
source_file="res://assets/bases/Bases Papel-base_25.glb"
dest_files=["res://.godot/imported/Bases Papel-base_25.glb-b0d315509692c243915af0667be1e4dd.scn"]
[params]
nodes/root_type=""
nodes/root_name=""
nodes/apply_root_scale=true
nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false
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=""
_subresources={}
gltf/naming_version=1
gltf/embedded_image_handling=1

View File

@@ -1,37 +0,0 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://rclbcfoibl1p"
path="res://.godot/imported/Bases Papel-base_30x60.glb-548c6ad5c7f0a781c0e21b2be2cf6bf9.scn"
[deps]
source_file="res://assets/bases/Bases Papel-base_30x60.glb"
dest_files=["res://.godot/imported/Bases Papel-base_30x60.glb-548c6ad5c7f0a781c0e21b2be2cf6bf9.scn"]
[params]
nodes/root_type=""
nodes/root_name=""
nodes/apply_root_scale=true
nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false
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=""
_subresources={}
gltf/naming_version=1
gltf/embedded_image_handling=1

Binary file not shown.

View File

@@ -1,37 +0,0 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://jcm4ger3ns40"
path="res://.godot/imported/Bases Papel-base_32.glb-ad10c960258809754d0ae6bd291b6b47.scn"
[deps]
source_file="res://assets/bases/Bases Papel-base_32.glb"
dest_files=["res://.godot/imported/Bases Papel-base_32.glb-ad10c960258809754d0ae6bd291b6b47.scn"]
[params]
nodes/root_type=""
nodes/root_name=""
nodes/apply_root_scale=true
nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false
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=""
_subresources={}
gltf/naming_version=1
gltf/embedded_image_handling=1

Binary file not shown.

View File

@@ -1,37 +0,0 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://bshpxw6l6s5sa"
path="res://.godot/imported/Bases Papel-base_40.glb-fb35928f7ccdfa93e85bd27b1e6b9496.scn"
[deps]
source_file="res://assets/bases/Bases Papel-base_40.glb"
dest_files=["res://.godot/imported/Bases Papel-base_40.glb-fb35928f7ccdfa93e85bd27b1e6b9496.scn"]
[params]
nodes/root_type=""
nodes/root_name=""
nodes/apply_root_scale=true
nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false
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=""
_subresources={}
gltf/naming_version=1
gltf/embedded_image_handling=1

Binary file not shown.

View File

@@ -1,37 +0,0 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://b8segdxr224fa"
path="res://.godot/imported/Bases Papel-base_50.glb-70f49bddbcc9fef9c7c9072bdf9911a5.scn"
[deps]
source_file="res://assets/bases/Bases Papel-base_50.glb"
dest_files=["res://.godot/imported/Bases Papel-base_50.glb-70f49bddbcc9fef9c7c9072bdf9911a5.scn"]
[params]
nodes/root_type=""
nodes/root_name=""
nodes/apply_root_scale=true
nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false
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=""
_subresources={}
gltf/naming_version=1
gltf/embedded_image_handling=1

Binary file not shown.

View File

@@ -1,37 +0,0 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://ukr5hy5d0xph"
path="res://.godot/imported/Bases Papel-base_60.glb-a625ea3e4c7cd9219eb512fdd1731536.scn"
[deps]
source_file="res://assets/bases/Bases Papel-base_60.glb"
dest_files=["res://.godot/imported/Bases Papel-base_60.glb-a625ea3e4c7cd9219eb512fdd1731536.scn"]
[params]
nodes/root_type=""
nodes/root_name=""
nodes/apply_root_scale=true
nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false
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=""
_subresources={}
gltf/naming_version=1
gltf/embedded_image_handling=1

7
assets/bases/base_25.mtl Normal file
View File

@@ -0,0 +1,7 @@
# FreeCAD v1.0 build0 Arch module
# https://www.freecad.org
newmtl color_0fa5e8
Kd 0.05882352963089943 0.6470588445663452 0.9098039269447327
Tr 0.0
d 1.0
# Material Count: 1

5032
assets/bases/base_25.obj Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,25 @@
[remap]
importer="wavefront_obj"
importer_version=1
type="Mesh"
uid="uid://cv5n17attn4oa"
path="res://.godot/imported/base_25.obj-123975b71860d02a8e35538c205571a3.mesh"
[deps]
files=["res://.godot/imported/base_25.obj-123975b71860d02a8e35538c205571a3.mesh"]
source_file="res://assets/bases/base_25.obj"
dest_files=["res://.godot/imported/base_25.obj-123975b71860d02a8e35538c205571a3.mesh", "res://.godot/imported/base_25.obj-123975b71860d02a8e35538c205571a3.mesh"]
[params]
generate_tangents=true
generate_lods=true
generate_shadow_mesh=true
generate_lightmap_uv2=false
generate_lightmap_uv2_texel_size=0.2
scale_mesh=Vector3(1, 1, 1)
offset_mesh=Vector3(0, 0, 0)
force_disable_mesh_compression=false

View File

@@ -0,0 +1,7 @@
# FreeCAD v1.0 build0 Arch module
# https://www.freecad.org
newmtl color_cccccc
Kd 0.800000011920929 0.800000011920929 0.800000011920929
Tr 0.0
d 1.0
# Material Count: 1

33377
assets/bases/base_30x60.obj Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,25 @@
[remap]
importer="wavefront_obj"
importer_version=1
type="Mesh"
uid="uid://djr0keyfmdsrs"
path="res://.godot/imported/base_30x60.obj-f60cf65f31c0c673deeb9d6b6c41d521.mesh"
[deps]
files=["res://.godot/imported/base_30x60.obj-f60cf65f31c0c673deeb9d6b6c41d521.mesh"]
source_file="res://assets/bases/base_30x60.obj"
dest_files=["res://.godot/imported/base_30x60.obj-f60cf65f31c0c673deeb9d6b6c41d521.mesh", "res://.godot/imported/base_30x60.obj-f60cf65f31c0c673deeb9d6b6c41d521.mesh"]
[params]
generate_tangents=true
generate_lods=true
generate_shadow_mesh=true
generate_lightmap_uv2=false
generate_lightmap_uv2_texel_size=0.2
scale_mesh=Vector3(1, 1, 1)
offset_mesh=Vector3(0, 0, 0)
force_disable_mesh_compression=false

7
assets/bases/base_32.mtl Normal file
View File

@@ -0,0 +1,7 @@
# FreeCAD v1.0 build0 Arch module
# https://www.freecad.org
newmtl color_cccccc
Kd 0.800000011920929 0.800000011920929 0.800000011920929
Tr 0.0
d 1.0
# Material Count: 1

35657
assets/bases/base_32.obj Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,25 @@
[remap]
importer="wavefront_obj"
importer_version=1
type="Mesh"
uid="uid://bxa678vdex1us"
path="res://.godot/imported/base_32.obj-940ca75269aa8c08b16dcb57b7793df2.mesh"
[deps]
files=["res://.godot/imported/base_32.obj-940ca75269aa8c08b16dcb57b7793df2.mesh"]
source_file="res://assets/bases/base_32.obj"
dest_files=["res://.godot/imported/base_32.obj-940ca75269aa8c08b16dcb57b7793df2.mesh", "res://.godot/imported/base_32.obj-940ca75269aa8c08b16dcb57b7793df2.mesh"]
[params]
generate_tangents=true
generate_lods=true
generate_shadow_mesh=true
generate_lightmap_uv2=false
generate_lightmap_uv2_texel_size=0.2
scale_mesh=Vector3(1, 1, 1)
offset_mesh=Vector3(0, 0, 0)
force_disable_mesh_compression=false

7
assets/bases/base_40.mtl Normal file
View File

@@ -0,0 +1,7 @@
# FreeCAD v1.0 build0 Arch module
# https://www.freecad.org
newmtl color_cccccc
Kd 0.800000011920929 0.800000011920929 0.800000011920929
Tr 0.0
d 1.0
# Material Count: 1

32242
assets/bases/base_40.obj Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,25 @@
[remap]
importer="wavefront_obj"
importer_version=1
type="Mesh"
uid="uid://0nr461srip5r"
path="res://.godot/imported/base_40.obj-bf39efbb9410c06528e6405b4e16d6c3.mesh"
[deps]
files=["res://.godot/imported/base_40.obj-bf39efbb9410c06528e6405b4e16d6c3.mesh"]
source_file="res://assets/bases/base_40.obj"
dest_files=["res://.godot/imported/base_40.obj-bf39efbb9410c06528e6405b4e16d6c3.mesh", "res://.godot/imported/base_40.obj-bf39efbb9410c06528e6405b4e16d6c3.mesh"]
[params]
generate_tangents=true
generate_lods=true
generate_shadow_mesh=true
generate_lightmap_uv2=false
generate_lightmap_uv2_texel_size=0.2
scale_mesh=Vector3(1, 1, 1)
offset_mesh=Vector3(0, 0, 0)
force_disable_mesh_compression=false

7
assets/bases/base_50.mtl Normal file
View File

@@ -0,0 +1,7 @@
# FreeCAD v1.0 build0 Arch module
# https://www.freecad.org
newmtl color_cccccc
Kd 0.800000011920929 0.800000011920929 0.800000011920929
Tr 0.0
d 1.0
# Material Count: 1

35687
assets/bases/base_50.obj Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,25 @@
[remap]
importer="wavefront_obj"
importer_version=1
type="Mesh"
uid="uid://dlm2xpioux8p"
path="res://.godot/imported/base_50.obj-7fad0a98d58d3de7c615f326fc783081.mesh"
[deps]
files=["res://.godot/imported/base_50.obj-7fad0a98d58d3de7c615f326fc783081.mesh"]
source_file="res://assets/bases/base_50.obj"
dest_files=["res://.godot/imported/base_50.obj-7fad0a98d58d3de7c615f326fc783081.mesh", "res://.godot/imported/base_50.obj-7fad0a98d58d3de7c615f326fc783081.mesh"]
[params]
generate_tangents=true
generate_lods=true
generate_shadow_mesh=true
generate_lightmap_uv2=false
generate_lightmap_uv2_texel_size=0.2
scale_mesh=Vector3(1, 1, 1)
offset_mesh=Vector3(0, 0, 0)
force_disable_mesh_compression=false

7
assets/bases/base_60.mtl Normal file
View File

@@ -0,0 +1,7 @@
# FreeCAD v1.0 build0 Arch module
# https://www.freecad.org
newmtl color_cccccc
Kd 0.800000011920929 0.800000011920929 0.800000011920929
Tr 0.0
d 1.0
# Material Count: 1

37252
assets/bases/base_60.obj Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,25 @@
[remap]
importer="wavefront_obj"
importer_version=1
type="Mesh"
uid="uid://brb8h816lpfue"
path="res://.godot/imported/base_60.obj-5a05f61717778c4882ec9de63229452d.mesh"
[deps]
files=["res://.godot/imported/base_60.obj-5a05f61717778c4882ec9de63229452d.mesh"]
source_file="res://assets/bases/base_60.obj"
dest_files=["res://.godot/imported/base_60.obj-5a05f61717778c4882ec9de63229452d.mesh", "res://.godot/imported/base_60.obj-5a05f61717778c4882ec9de63229452d.mesh"]
[params]
generate_tangents=true
generate_lods=true
generate_shadow_mesh=true
generate_lightmap_uv2=false
generate_lightmap_uv2_texel_size=0.2
scale_mesh=Vector3(1, 1, 1)
offset_mesh=Vector3(0, 0, 0)
force_disable_mesh_compression=false

Binary file not shown.

After

Width:  |  Height:  |  Size: 201 KiB

View File

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cq5c6lacc0rdw"
path="res://.godot/imported/combat_priest_original.png-00a69499889e9116ba3a460a25d31480.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/cartas/combat_priest_original.png"
dest_files=["res://.godot/imported/combat_priest_original.png-00a69499889e9116ba3a460a25d31480.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
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/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

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

View File

@@ -0,0 +1,35 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cc85nihxm3set"
path.s3tc="res://.godot/imported/combat_priest_pixel.png-0e39a6cefb9e7671576bcb8e2f922deb.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://assets/cartas/combat_priest_pixel.png"
dest_files=["res://.godot/imported/combat_priest_pixel.png-0e39a6cefb9e7671576bcb8e2f922deb.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
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/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.

After

Width:  |  Height:  |  Size: 22 KiB

BIN
assets/dev_512_gr_032x.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

View File

@@ -0,0 +1,35 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c3ydthu2vpopv"
path.s3tc="res://.godot/imported/dev_512_gr_032x.jpg-8f4aa0261be37593c29bdbfdf093a5a1.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://assets/dev_512_gr_032x.jpg"
dest_files=["res://.godot/imported/dev_512_gr_032x.jpg-8f4aa0261be37593c29bdbfdf093a5a1.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
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/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

16
main.gd Normal file
View File

@@ -0,0 +1,16 @@
extends Node
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
if OS.has_feature("dedicated_server") or DisplayServer.get_name() == "headless":
RenderingServer.render_loop_enabled = false
else:
pass
#get_tree().root.get_node("MusicPlayer").play()
get_tree().root.add_child.call_deferred(load("res://src/main_game.tscn").instantiate())
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(_delta: float) -> void:
pass

1
main.gd.uid Normal file
View File

@@ -0,0 +1 @@
uid://ckn0s7jrhafjr

6
main.tscn Normal file
View File

@@ -0,0 +1,6 @@
[gd_scene load_steps=2 format=3 uid="uid://cyo30vhqp8aod"]
[ext_resource type="Script" uid="uid://ckn0s7jrhafjr" path="res://main.gd" id="1_0xm2m"]
[node name="Main" type="Node"]
script = ExtResource("1_0xm2m")

View File

@@ -11,9 +11,15 @@ config_version=5
[application] [application]
config/name="pixel-crusade" config/name="pixel-crusade"
run/main_scene="uid://cyo30vhqp8aod"
config/features=PackedStringArray("4.4", "GL Compatibility") config/features=PackedStringArray("4.4", "GL Compatibility")
config/icon="res://icon.svg" config/icon="res://icon.svg"
[editor]
version_control/plugin_name="GitPlugin"
version_control/autoload_on_startup=true
[rendering] [rendering]
renderer/rendering_method="gl_compatibility" renderer/rendering_method="gl_compatibility"

11
src/main_game.gd Normal file
View File

@@ -0,0 +1,11 @@
extends Node3D
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
pass # Replace with function body.
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta: float) -> void:
pass

1
src/main_game.gd.uid Normal file
View File

@@ -0,0 +1 @@
uid://b5kn17oto74o

38
src/main_game.tscn Normal file
View File

@@ -0,0 +1,38 @@
[gd_scene load_steps=7 format=3 uid="uid://budrvmnmxvk2d"]
[ext_resource type="Script" uid="uid://b5kn17oto74o" path="res://src/main_game.gd" id="1_fq370"]
[ext_resource type="PackedScene" uid="uid://ds20afeq5fbty" path="res://src/models/combat_priest.tscn" id="2_78si8"]
[ext_resource type="Texture2D" uid="uid://c3ydthu2vpopv" path="res://assets/dev_512_gr_032x.jpg" id="3_aptux"]
[sub_resource type="BoxShape3D" id="BoxShape3D_78si8"]
size = Vector3(10, 1, 10)
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_3vl0c"]
albedo_texture = ExtResource("3_aptux")
[sub_resource type="BoxMesh" id="BoxMesh_aptux"]
size = Vector3(10, 1, 10)
[node name="MainGame" type="Node3D"]
script = ExtResource("1_fq370")
[node name="CameraPivot" type="Node3D" parent="."]
[node name="Camera3D" type="Camera3D" parent="CameraPivot"]
transform = Transform3D(1, 0, 0, 0, 0.707107, 0.707107, 0, -0.707107, 0.707107, 0, 5, 5)
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="CameraPivot"]
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0, 5, 0)
[node name="BaseModel" parent="." instance=ExtResource("2_78si8")]
[node name="StaticBody3D" type="StaticBody3D" parent="."]
[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.5, 0)
shape = SubResource("BoxShape3D_78si8")
[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.5, 0)
material_override = SubResource("StandardMaterial3D_3vl0c")
mesh = SubResource("BoxMesh_aptux")

78
src/models/base_model.gd Normal file
View File

@@ -0,0 +1,78 @@
extends Node
const PIXEL_SIZE := 0.0048
const HEROIC_SCALE := 57.2
const W_H_RATIO := 1.4
# Basic Variables
@export var ModelName: String
@export var CustomName: String
@export var MovementDistance: int
@export var BaseSize: String # In mm
@export var MovementType: String
@export var RangeCharacteristic: DiceModifier
@export var MeleeCharacteristic: DiceModifier
@export var ArmorCharacteristic: DiceModifier
@export var KeywordsList: Array[String]
@export var CharacterSprite2D: CompressedTexture2D
func _init() -> void:
pass
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
var base_model := _get_base_model(BaseSize)
var base_size = _get_base_size(BaseSize)
if $Pivot/Base.mesh == null and base_model != null:
$Pivot/Base.mesh = load(base_model)
$Pivot/Base.scale.x = HEROIC_SCALE / 1000
$Pivot/Base.scale.y = HEROIC_SCALE / 1000
$Pivot/Base.scale.z = HEROIC_SCALE / 1000
if $Pivot/Sprite2D.texture == null and CharacterSprite2D != null:
$Pivot/Sprite2D.texture = CharacterSprite2D
$Pivot/Sprite2D.pixel_size = PIXEL_SIZE
$Pivot/Sprite2D.position.y = base_size * W_H_RATIO * HEROIC_SCALE / 2
$CollisionShape3D.shape.radius = base_size / 2 * HEROIC_SCALE
$CollisionShape3D.shape.height = base_size * 1.4 * HEROIC_SCALE
$CollisionShape3D.position.y = base_size * 0.7 * HEROIC_SCALE * W_H_RATIO / 2
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(_delta: float) -> void:
pass
# Utility functions
func _get_base_model(size: String) -> String:
match size:
"25":
return "res://assets/bases/base_25.glb"
"32":
return "res://assets/bases/base_32.obj"
"40":
return "res://assets/bases/base_40.glb"
"50":
return "res://assets/bases/base_50.glb"
"50":
return "res://assets/bases/base_60.glb"
"30x60":
return "res://assets/bases/base_30x60.glb"
return ""
func _get_base_size(size: String) -> float:
match size:
"25":
return 25.0 / 1000
"32":
return 32.0 / 1000
"40":
return 40.0 / 1000
"50":
return 50.0 / 1000
"50":
return 60.0 / 1000
"30x60":
return 60.0 / 1000
push_error("Not valid size of %s" % size)
return 0

View File

@@ -0,0 +1 @@
uid://di5g5x80wtaw7

View File

@@ -0,0 +1,22 @@
[gd_scene load_steps=3 format=3 uid="uid://c26jufswfi2bh"]
[ext_resource type="Script" uid="uid://di5g5x80wtaw7" path="res://src/models/base_model.gd" id="1_ni6nx"]
[sub_resource type="CylinderShape3D" id="CylinderShape3D_wfmmx"]
[node name="BaseModel" type="CharacterBody3D"]
script = ExtResource("1_ni6nx")
[node name="Pivot" type="Node3D" parent="."]
[node name="Sprite2D" type="Sprite3D" parent="Pivot"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.30011, 0)
pixel_size = 0.0048
billboard = 2
[node name="Base" type="MeshInstance3D" parent="Pivot"]
transform = Transform3D(57.2, 0, 0, 0, 57.2, 0, 0, 0, 57.2, 0, 0, 0)
skeleton = NodePath("")
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
shape = SubResource("CylinderShape3D_wfmmx")

View File

@@ -1,22 +1,43 @@
[gd_scene load_steps=4 format=3 uid="uid://c26jufswfi2bh"] [gd_scene load_steps=7 format=3 uid="uid://ds20afeq5fbty"]
[ext_resource type="Texture2D" uid="uid://dn2uhj5jnbcj1" path="res://assets/cartas/combat_priest.png" id="1_iwweb"] [ext_resource type="PackedScene" uid="uid://c26jufswfi2bh" path="res://src/models/base_model.tscn" id="1_t6p38"]
[ext_resource type="PackedScene" uid="uid://jcm4ger3ns40" path="res://assets/bases/Bases Papel-base_32.glb" id="2_ni6nx"] [ext_resource type="Script" uid="uid://4h1cvticrj7u" path="res://src/utils/dice_modifier.gd" id="2_ni6nx"]
[ext_resource type="Texture2D" uid="uid://cc85nihxm3set" path="res://assets/cartas/combat_priest_pixel.png" id="3_ni6nx"]
[sub_resource type="CylinderShape3D" id="CylinderShape3D_wfmmx"] [sub_resource type="Resource" id="Resource_wfmmx"]
script = ExtResource("2_ni6nx")
extra = 0
dice = 2
fixed = 0
metadata/_custom_type_script = "uid://4h1cvticrj7u"
[node name="Model" type="CharacterBody3D"] [sub_resource type="Resource" id="Resource_s0nyo"]
script = ExtResource("2_ni6nx")
extra = 0
dice = 2
fixed = 0
metadata/_custom_type_script = "uid://4h1cvticrj7u"
[node name="Pivot" type="Node3D" parent="."] [sub_resource type="Resource" id="Resource_l764g"]
script = ExtResource("2_ni6nx")
extra = 0
dice = 0
fixed = 0
metadata/_custom_type_script = "uid://4h1cvticrj7u"
[node name="Sprite3D" type="Sprite3D" parent="Pivot"] [node name="BaseModel" instance=ExtResource("1_t6p38")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.30011, 0) ModelName = " Heretic Priest "
pixel_size = 0.0048 MovementDistance = 6
billboard = 2 BaseSize = "32"
texture = ExtResource("1_iwweb") MovementType = "Infantry"
RangeCharacteristic = SubResource("Resource_wfmmx")
MeleeCharacteristic = SubResource("Resource_s0nyo")
ArmorCharacteristic = SubResource("Resource_l764g")
KeywordsList = Array[String](["HERETIC", "ELITE", "TOUGH", "LEADER"])
CharacterSprite2D = ExtResource("3_ni6nx")
[node name="Base" parent="Pivot" instance=ExtResource("2_ni6nx")] [node name="Sprite2D" parent="Pivot" index="0"]
transform = Transform3D(57.2, 0, 0, 0, 57.2, 0, 0, 0, 57.2, 0, 0, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)
[node name="CollisionShape3D" type="CollisionShape3D" parent="."] [node name="Base" parent="Pivot" index="1"]
shape = SubResource("CylinderShape3D_wfmmx") transform = Transform3D(0.057, 0, 0, 0, -2.49155e-09, 0.057, 0, -0.057, -2.49155e-09, 0, 0, 0)

View File

@@ -0,0 +1,21 @@
extends Resource
class_name DiceModifier
@export var extra := 0 # the Sum of 3, 4 or 1D6
@export var dice := 0 # Plus or minus dice
@export var fixed := 0 # Plus or minus points to the dice result
func _init(_dice:=0, _fixed:=0, _extra:=0):
dice = _dice
fixed = _fixed
extra = _extra
static func sum(modifiers:Array[DiceModifier]):
var _dice = 0
var _fixed = 0
var _extra = 0
for modifier in modifiers:
_dice += modifier.dice
_fixed += modifier.fixed
_extra += modifier.extra
return DiceModifier.new(_dice, _fixed, _extra)

View File

@@ -0,0 +1 @@
uid://4h1cvticrj7u

View File

@@ -0,0 +1,9 @@
[gd_resource type="Resource" script_class="DiceModifier" load_steps=2 format=3 uid="uid://5fe3siaxtp0u"]
[ext_resource type="Script" uid="uid://4h1cvticrj7u" path="res://src/utils/dice_modifier.gd" id="1_3o675"]
[resource]
script = ExtResource("1_3o675")
extra = 0
dice = 0
fixed = 0