提交
This commit is contained in:
commit
0c1bdde5fb
2
Robo-Bus-A31-HMI/.gitattributes
vendored
Normal file
2
Robo-Bus-A31-HMI/.gitattributes
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
# Normalize EOL for all files that Git considers text files.
|
||||
* text=auto eol=lf
|
3
Robo-Bus-A31-HMI/.gitignore
vendored
Normal file
3
Robo-Bus-A31-HMI/.gitignore
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
# Godot 4+ specific ignores
|
||||
.godot/
|
||||
/android/
|
BIN
Robo-Bus-A31-HMI/1.png
Normal file
BIN
Robo-Bus-A31-HMI/1.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.2 MiB |
34
Robo-Bus-A31-HMI/1.png.import
Normal file
34
Robo-Bus-A31-HMI/1.png.import
Normal file
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://vc7lcwu566lf"
|
||||
path="res://.godot/imported/1.png-515c813a180ba5fd2e61c8e75c4cac47.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://1.png"
|
||||
dest_files=["res://.godot/imported/1.png-515c813a180ba5fd2e61c8e75c4cac47.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
|
BIN
Robo-Bus-A31-HMI/2.png
Normal file
BIN
Robo-Bus-A31-HMI/2.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 488 KiB |
34
Robo-Bus-A31-HMI/2.png.import
Normal file
34
Robo-Bus-A31-HMI/2.png.import
Normal file
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://b4hvmp46shkxc"
|
||||
path="res://.godot/imported/2.png-3f238cfe6181f9f93f40cee36336f408.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://2.png"
|
||||
dest_files=["res://.godot/imported/2.png-3f238cfe6181f9f93f40cee36336f408.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
|
BIN
Robo-Bus-A31-HMI/3.png
Normal file
BIN
Robo-Bus-A31-HMI/3.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 264 KiB |
34
Robo-Bus-A31-HMI/3.png.import
Normal file
34
Robo-Bus-A31-HMI/3.png.import
Normal file
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://eevtiqj5g6a8"
|
||||
path="res://.godot/imported/3.png-ab9dc1e38b41816b4ae4b69d0cb53034.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://3.png"
|
||||
dest_files=["res://.godot/imported/3.png-ab9dc1e38b41816b4ae4b69d0cb53034.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
|
BIN
Robo-Bus-A31-HMI/Dynamic_Object/Bicycle.glb
Normal file
BIN
Robo-Bus-A31-HMI/Dynamic_Object/Bicycle.glb
Normal file
Binary file not shown.
36
Robo-Bus-A31-HMI/Dynamic_Object/Bicycle.glb.import
Normal file
36
Robo-Bus-A31-HMI/Dynamic_Object/Bicycle.glb.import
Normal file
@ -0,0 +1,36 @@
|
||||
[remap]
|
||||
|
||||
importer="scene"
|
||||
importer_version=1
|
||||
type="PackedScene"
|
||||
uid="uid://db3ivfmlvkbqg"
|
||||
path="res://.godot/imported/Bicycle.glb-7b22dc4f1eb32e50e16d0e8b7fd07a8a.scn"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Dynamic_Object/Bicycle.glb"
|
||||
dest_files=["res://.godot/imported/Bicycle.glb-7b22dc4f1eb32e50e16d0e8b7fd07a8a.scn"]
|
||||
|
||||
[params]
|
||||
|
||||
nodes/root_type=""
|
||||
nodes/root_name=""
|
||||
nodes/apply_root_scale=true
|
||||
nodes/root_scale=1.0
|
||||
nodes/import_as_skeleton_bones=false
|
||||
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
|
BIN
Robo-Bus-A31-HMI/Dynamic_Object/Bus.glb
Normal file
BIN
Robo-Bus-A31-HMI/Dynamic_Object/Bus.glb
Normal file
Binary file not shown.
36
Robo-Bus-A31-HMI/Dynamic_Object/Bus.glb.import
Normal file
36
Robo-Bus-A31-HMI/Dynamic_Object/Bus.glb.import
Normal file
@ -0,0 +1,36 @@
|
||||
[remap]
|
||||
|
||||
importer="scene"
|
||||
importer_version=1
|
||||
type="PackedScene"
|
||||
uid="uid://cd1q5jujl2h6y"
|
||||
path="res://.godot/imported/Bus.glb-fe60e0df890d48d1293e2943fb144d70.scn"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Dynamic_Object/Bus.glb"
|
||||
dest_files=["res://.godot/imported/Bus.glb-fe60e0df890d48d1293e2943fb144d70.scn"]
|
||||
|
||||
[params]
|
||||
|
||||
nodes/root_type=""
|
||||
nodes/root_name=""
|
||||
nodes/apply_root_scale=true
|
||||
nodes/root_scale=1.0
|
||||
nodes/import_as_skeleton_bones=false
|
||||
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
|
BIN
Robo-Bus-A31-HMI/Dynamic_Object/Car.glb
Normal file
BIN
Robo-Bus-A31-HMI/Dynamic_Object/Car.glb
Normal file
Binary file not shown.
36
Robo-Bus-A31-HMI/Dynamic_Object/Car.glb.import
Normal file
36
Robo-Bus-A31-HMI/Dynamic_Object/Car.glb.import
Normal file
@ -0,0 +1,36 @@
|
||||
[remap]
|
||||
|
||||
importer="scene"
|
||||
importer_version=1
|
||||
type="PackedScene"
|
||||
uid="uid://b0pahemy1qkd1"
|
||||
path="res://.godot/imported/Car.glb-1199dffb6d42a3eb0e80f00d1d342574.scn"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Dynamic_Object/Car.glb"
|
||||
dest_files=["res://.godot/imported/Car.glb-1199dffb6d42a3eb0e80f00d1d342574.scn"]
|
||||
|
||||
[params]
|
||||
|
||||
nodes/root_type=""
|
||||
nodes/root_name=""
|
||||
nodes/apply_root_scale=true
|
||||
nodes/root_scale=1.0
|
||||
nodes/import_as_skeleton_bones=false
|
||||
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
|
BIN
Robo-Bus-A31-HMI/Dynamic_Object/Motorcycle.glb
Normal file
BIN
Robo-Bus-A31-HMI/Dynamic_Object/Motorcycle.glb
Normal file
Binary file not shown.
36
Robo-Bus-A31-HMI/Dynamic_Object/Motorcycle.glb.import
Normal file
36
Robo-Bus-A31-HMI/Dynamic_Object/Motorcycle.glb.import
Normal file
@ -0,0 +1,36 @@
|
||||
[remap]
|
||||
|
||||
importer="scene"
|
||||
importer_version=1
|
||||
type="PackedScene"
|
||||
uid="uid://cq3lofbpgvlq8"
|
||||
path="res://.godot/imported/Motorcycle.glb-9777eb19b01c9b701ab25f408cef0d30.scn"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Dynamic_Object/Motorcycle.glb"
|
||||
dest_files=["res://.godot/imported/Motorcycle.glb-9777eb19b01c9b701ab25f408cef0d30.scn"]
|
||||
|
||||
[params]
|
||||
|
||||
nodes/root_type=""
|
||||
nodes/root_name=""
|
||||
nodes/apply_root_scale=true
|
||||
nodes/root_scale=1.0
|
||||
nodes/import_as_skeleton_bones=false
|
||||
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
|
BIN
Robo-Bus-A31-HMI/Dynamic_Object/Pedestrian.glb
Normal file
BIN
Robo-Bus-A31-HMI/Dynamic_Object/Pedestrian.glb
Normal file
Binary file not shown.
36
Robo-Bus-A31-HMI/Dynamic_Object/Pedestrian.glb.import
Normal file
36
Robo-Bus-A31-HMI/Dynamic_Object/Pedestrian.glb.import
Normal file
@ -0,0 +1,36 @@
|
||||
[remap]
|
||||
|
||||
importer="scene"
|
||||
importer_version=1
|
||||
type="PackedScene"
|
||||
uid="uid://bi8j0il14h746"
|
||||
path="res://.godot/imported/Pedestrian.glb-b872e0f0b4072ecfc88f38f1426d7b63.scn"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Dynamic_Object/Pedestrian.glb"
|
||||
dest_files=["res://.godot/imported/Pedestrian.glb-b872e0f0b4072ecfc88f38f1426d7b63.scn"]
|
||||
|
||||
[params]
|
||||
|
||||
nodes/root_type=""
|
||||
nodes/root_name=""
|
||||
nodes/apply_root_scale=true
|
||||
nodes/root_scale=1.0
|
||||
nodes/import_as_skeleton_bones=false
|
||||
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=false
|
||||
animation/import_rest_as_RESET=true
|
||||
import_script/path=""
|
||||
_subresources={}
|
||||
gltf/naming_version=1
|
||||
gltf/embedded_image_handling=1
|
BIN
Robo-Bus-A31-HMI/Dynamic_Object/Pickup.glb
Normal file
BIN
Robo-Bus-A31-HMI/Dynamic_Object/Pickup.glb
Normal file
Binary file not shown.
36
Robo-Bus-A31-HMI/Dynamic_Object/Pickup.glb.import
Normal file
36
Robo-Bus-A31-HMI/Dynamic_Object/Pickup.glb.import
Normal file
@ -0,0 +1,36 @@
|
||||
[remap]
|
||||
|
||||
importer="scene"
|
||||
importer_version=1
|
||||
type="PackedScene"
|
||||
uid="uid://bek1wj82xqvdh"
|
||||
path="res://.godot/imported/Pickup.glb-e536c785cf1b94a694896d0f5b2cf312.scn"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Dynamic_Object/Pickup.glb"
|
||||
dest_files=["res://.godot/imported/Pickup.glb-e536c785cf1b94a694896d0f5b2cf312.scn"]
|
||||
|
||||
[params]
|
||||
|
||||
nodes/root_type=""
|
||||
nodes/root_name=""
|
||||
nodes/apply_root_scale=true
|
||||
nodes/root_scale=1.0
|
||||
nodes/import_as_skeleton_bones=false
|
||||
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
|
BIN
Robo-Bus-A31-HMI/Dynamic_Object/SUV.glb
Normal file
BIN
Robo-Bus-A31-HMI/Dynamic_Object/SUV.glb
Normal file
Binary file not shown.
36
Robo-Bus-A31-HMI/Dynamic_Object/SUV.glb.import
Normal file
36
Robo-Bus-A31-HMI/Dynamic_Object/SUV.glb.import
Normal file
@ -0,0 +1,36 @@
|
||||
[remap]
|
||||
|
||||
importer="scene"
|
||||
importer_version=1
|
||||
type="PackedScene"
|
||||
uid="uid://1351pckwh6t"
|
||||
path="res://.godot/imported/SUV.glb-6da455626a784834a3f3a7c490528383.scn"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Dynamic_Object/SUV.glb"
|
||||
dest_files=["res://.godot/imported/SUV.glb-6da455626a784834a3f3a7c490528383.scn"]
|
||||
|
||||
[params]
|
||||
|
||||
nodes/root_type=""
|
||||
nodes/root_name=""
|
||||
nodes/apply_root_scale=true
|
||||
nodes/root_scale=1.0
|
||||
nodes/import_as_skeleton_bones=false
|
||||
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
|
BIN
Robo-Bus-A31-HMI/Dynamic_Object/Trailer.glb
Normal file
BIN
Robo-Bus-A31-HMI/Dynamic_Object/Trailer.glb
Normal file
Binary file not shown.
36
Robo-Bus-A31-HMI/Dynamic_Object/Trailer.glb.import
Normal file
36
Robo-Bus-A31-HMI/Dynamic_Object/Trailer.glb.import
Normal file
@ -0,0 +1,36 @@
|
||||
[remap]
|
||||
|
||||
importer="scene"
|
||||
importer_version=1
|
||||
type="PackedScene"
|
||||
uid="uid://b5s3ls8nk77vy"
|
||||
path="res://.godot/imported/Trailer.glb-f6461775df4db598c9293eeedbbae283.scn"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Dynamic_Object/Trailer.glb"
|
||||
dest_files=["res://.godot/imported/Trailer.glb-f6461775df4db598c9293eeedbbae283.scn"]
|
||||
|
||||
[params]
|
||||
|
||||
nodes/root_type=""
|
||||
nodes/root_name=""
|
||||
nodes/apply_root_scale=true
|
||||
nodes/root_scale=1.0
|
||||
nodes/import_as_skeleton_bones=false
|
||||
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.
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="font_data_dynamic"
|
||||
type="FontFile"
|
||||
uid="uid://bbusvhna43th1"
|
||||
path="res://.godot/imported/Kufam-Italic-VariableFont_wght.ttf-5bbb9ca1090612b1f7d12e0f121e2334.fontdata"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Kufam_Noto_Sans_SC/Kufam/Kufam-Italic-VariableFont_wght.ttf"
|
||||
dest_files=["res://.godot/imported/Kufam-Italic-VariableFont_wght.ttf-5bbb9ca1090612b1f7d12e0f121e2334.fontdata"]
|
||||
|
||||
[params]
|
||||
|
||||
Rendering=null
|
||||
antialiasing=1
|
||||
generate_mipmaps=false
|
||||
disable_embedded_bitmaps=true
|
||||
multichannel_signed_distance_field=false
|
||||
msdf_pixel_range=8
|
||||
msdf_size=48
|
||||
allow_system_fallback=true
|
||||
force_autohinter=false
|
||||
hinting=1
|
||||
subpixel_positioning=1
|
||||
oversampling=0.0
|
||||
Fallbacks=null
|
||||
fallbacks=[]
|
||||
Compress=null
|
||||
compress=true
|
||||
preload=[]
|
||||
language_support={}
|
||||
script_support={}
|
||||
opentype_features={}
|
Binary file not shown.
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="font_data_dynamic"
|
||||
type="FontFile"
|
||||
uid="uid://ccwywo8sib6tv"
|
||||
path="res://.godot/imported/Kufam-VariableFont_wght.ttf-b13fc257a3bcab7e21cb2b486d852f0c.fontdata"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Kufam_Noto_Sans_SC/Kufam/Kufam-VariableFont_wght.ttf"
|
||||
dest_files=["res://.godot/imported/Kufam-VariableFont_wght.ttf-b13fc257a3bcab7e21cb2b486d852f0c.fontdata"]
|
||||
|
||||
[params]
|
||||
|
||||
Rendering=null
|
||||
antialiasing=1
|
||||
generate_mipmaps=false
|
||||
disable_embedded_bitmaps=true
|
||||
multichannel_signed_distance_field=false
|
||||
msdf_pixel_range=8
|
||||
msdf_size=48
|
||||
allow_system_fallback=true
|
||||
force_autohinter=false
|
||||
hinting=1
|
||||
subpixel_positioning=1
|
||||
oversampling=0.0
|
||||
Fallbacks=null
|
||||
fallbacks=[]
|
||||
Compress=null
|
||||
compress=true
|
||||
preload=[]
|
||||
language_support={}
|
||||
script_support={}
|
||||
opentype_features={}
|
93
Robo-Bus-A31-HMI/Kufam_Noto_Sans_SC/Kufam/OFL.txt
Normal file
93
Robo-Bus-A31-HMI/Kufam_Noto_Sans_SC/Kufam/OFL.txt
Normal file
@ -0,0 +1,93 @@
|
||||
Copyright 2019 The Kufam Project Authors (https://github.com/originaltype/kufam)
|
||||
|
||||
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||
This license is copied below, and is also available with a FAQ at:
|
||||
https://openfontlicense.org
|
||||
|
||||
|
||||
-----------------------------------------------------------
|
||||
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||
-----------------------------------------------------------
|
||||
|
||||
PREAMBLE
|
||||
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||
development of collaborative font projects, to support the font creation
|
||||
efforts of academic and linguistic communities, and to provide a free and
|
||||
open framework in which fonts may be shared and improved in partnership
|
||||
with others.
|
||||
|
||||
The OFL allows the licensed fonts to be used, studied, modified and
|
||||
redistributed freely as long as they are not sold by themselves. The
|
||||
fonts, including any derivative works, can be bundled, embedded,
|
||||
redistributed and/or sold with any software provided that any reserved
|
||||
names are not used by derivative works. The fonts and derivatives,
|
||||
however, cannot be released under any other type of license. The
|
||||
requirement for fonts to remain under this license does not apply
|
||||
to any document created using the fonts or their derivatives.
|
||||
|
||||
DEFINITIONS
|
||||
"Font Software" refers to the set of files released by the Copyright
|
||||
Holder(s) under this license and clearly marked as such. This may
|
||||
include source files, build scripts and documentation.
|
||||
|
||||
"Reserved Font Name" refers to any names specified as such after the
|
||||
copyright statement(s).
|
||||
|
||||
"Original Version" refers to the collection of Font Software components as
|
||||
distributed by the Copyright Holder(s).
|
||||
|
||||
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||
or substituting -- in part or in whole -- any of the components of the
|
||||
Original Version, by changing formats or by porting the Font Software to a
|
||||
new environment.
|
||||
|
||||
"Author" refers to any designer, engineer, programmer, technical
|
||||
writer or other person who contributed to the Font Software.
|
||||
|
||||
PERMISSION & CONDITIONS
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||
redistribute, and sell modified and unmodified copies of the Font
|
||||
Software, subject to the following conditions:
|
||||
|
||||
1) Neither the Font Software nor any of its individual components,
|
||||
in Original or Modified Versions, may be sold by itself.
|
||||
|
||||
2) Original or Modified Versions of the Font Software may be bundled,
|
||||
redistributed and/or sold with any software, provided that each copy
|
||||
contains the above copyright notice and this license. These can be
|
||||
included either as stand-alone text files, human-readable headers or
|
||||
in the appropriate machine-readable metadata fields within text or
|
||||
binary files as long as those fields can be easily viewed by the user.
|
||||
|
||||
3) No Modified Version of the Font Software may use the Reserved Font
|
||||
Name(s) unless explicit written permission is granted by the corresponding
|
||||
Copyright Holder. This restriction only applies to the primary font name as
|
||||
presented to the users.
|
||||
|
||||
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||
Software shall not be used to promote, endorse or advertise any
|
||||
Modified Version, except to acknowledge the contribution(s) of the
|
||||
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||
permission.
|
||||
|
||||
5) The Font Software, modified or unmodified, in part or in whole,
|
||||
must be distributed entirely under this license, and must not be
|
||||
distributed under any other license. The requirement for fonts to
|
||||
remain under this license does not apply to any document created
|
||||
using the Font Software.
|
||||
|
||||
TERMINATION
|
||||
This license becomes null and void if any of the above conditions are
|
||||
not met.
|
||||
|
||||
DISCLAIMER
|
||||
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||
OTHER DEALINGS IN THE FONT SOFTWARE.
|
75
Robo-Bus-A31-HMI/Kufam_Noto_Sans_SC/Kufam/README.txt
Normal file
75
Robo-Bus-A31-HMI/Kufam_Noto_Sans_SC/Kufam/README.txt
Normal file
@ -0,0 +1,75 @@
|
||||
Kufam Variable Font
|
||||
===================
|
||||
|
||||
This download contains Kufam as both variable fonts and static fonts.
|
||||
|
||||
Kufam is a variable font with this axis:
|
||||
wght
|
||||
|
||||
This means all the styles are contained in these files:
|
||||
Kufam/Kufam-VariableFont_wght.ttf
|
||||
Kufam/Kufam-Italic-VariableFont_wght.ttf
|
||||
|
||||
If your app fully supports variable fonts, you can now pick intermediate styles
|
||||
that aren’t available as static fonts. Not all apps support variable fonts, and
|
||||
in those cases you can use the static font files for Kufam:
|
||||
Kufam/static/Kufam-Regular.ttf
|
||||
Kufam/static/Kufam-Medium.ttf
|
||||
Kufam/static/Kufam-SemiBold.ttf
|
||||
Kufam/static/Kufam-Bold.ttf
|
||||
Kufam/static/Kufam-ExtraBold.ttf
|
||||
Kufam/static/Kufam-Black.ttf
|
||||
Kufam/static/Kufam-Italic.ttf
|
||||
Kufam/static/Kufam-MediumItalic.ttf
|
||||
Kufam/static/Kufam-SemiBoldItalic.ttf
|
||||
Kufam/static/Kufam-BoldItalic.ttf
|
||||
Kufam/static/Kufam-ExtraBoldItalic.ttf
|
||||
Kufam/static/Kufam-BlackItalic.ttf
|
||||
|
||||
Get started
|
||||
-----------
|
||||
|
||||
1. Install the font files you want to use
|
||||
|
||||
2. Use your app's font picker to view the font family and all the
|
||||
available styles
|
||||
|
||||
Learn more about variable fonts
|
||||
-------------------------------
|
||||
|
||||
https://developers.google.com/web/fundamentals/design-and-ux/typography/variable-fonts
|
||||
https://variablefonts.typenetwork.com
|
||||
https://medium.com/variable-fonts
|
||||
|
||||
In desktop apps
|
||||
|
||||
https://theblog.adobe.com/can-variable-fonts-illustrator-cc
|
||||
https://helpx.adobe.com/nz/photoshop/using/fonts.html#variable_fonts
|
||||
|
||||
Online
|
||||
|
||||
https://developers.google.com/fonts/docs/getting_started
|
||||
https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Fonts/Variable_Fonts_Guide
|
||||
https://developer.microsoft.com/en-us/microsoft-edge/testdrive/demos/variable-fonts
|
||||
|
||||
Installing fonts
|
||||
|
||||
MacOS: https://support.apple.com/en-us/HT201749
|
||||
Linux: https://www.google.com/search?q=how+to+install+a+font+on+gnu%2Blinux
|
||||
Windows: https://support.microsoft.com/en-us/help/314960/how-to-install-or-remove-a-font-in-windows
|
||||
|
||||
Android Apps
|
||||
|
||||
https://developers.google.com/fonts/docs/android
|
||||
https://developer.android.com/guide/topics/ui/look-and-feel/downloadable-fonts
|
||||
|
||||
License
|
||||
-------
|
||||
Please read the full license text (OFL.txt) to understand the permissions,
|
||||
restrictions and requirements for usage, redistribution, and modification.
|
||||
|
||||
You can use them in your products & projects – print or digital,
|
||||
commercial or otherwise.
|
||||
|
||||
This isn't legal advice, please consider consulting a lawyer and see the full
|
||||
license for all details.
|
BIN
Robo-Bus-A31-HMI/Kufam_Noto_Sans_SC/Kufam/static/Kufam-Black.ttf
Normal file
BIN
Robo-Bus-A31-HMI/Kufam_Noto_Sans_SC/Kufam/static/Kufam-Black.ttf
Normal file
Binary file not shown.
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="font_data_dynamic"
|
||||
type="FontFile"
|
||||
uid="uid://d0i3iaapvxahv"
|
||||
path="res://.godot/imported/Kufam-Black.ttf-bfbe779ecdc46664bf8ff0470bb82e37.fontdata"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Kufam_Noto_Sans_SC/Kufam/static/Kufam-Black.ttf"
|
||||
dest_files=["res://.godot/imported/Kufam-Black.ttf-bfbe779ecdc46664bf8ff0470bb82e37.fontdata"]
|
||||
|
||||
[params]
|
||||
|
||||
Rendering=null
|
||||
antialiasing=1
|
||||
generate_mipmaps=false
|
||||
disable_embedded_bitmaps=true
|
||||
multichannel_signed_distance_field=false
|
||||
msdf_pixel_range=8
|
||||
msdf_size=48
|
||||
allow_system_fallback=true
|
||||
force_autohinter=false
|
||||
hinting=1
|
||||
subpixel_positioning=1
|
||||
oversampling=0.0
|
||||
Fallbacks=null
|
||||
fallbacks=[]
|
||||
Compress=null
|
||||
compress=true
|
||||
preload=[]
|
||||
language_support={}
|
||||
script_support={}
|
||||
opentype_features={}
|
Binary file not shown.
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="font_data_dynamic"
|
||||
type="FontFile"
|
||||
uid="uid://dfvgaxixxm4gp"
|
||||
path="res://.godot/imported/Kufam-BlackItalic.ttf-64bc5fe49a4729ce3b53b30792618c7a.fontdata"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Kufam_Noto_Sans_SC/Kufam/static/Kufam-BlackItalic.ttf"
|
||||
dest_files=["res://.godot/imported/Kufam-BlackItalic.ttf-64bc5fe49a4729ce3b53b30792618c7a.fontdata"]
|
||||
|
||||
[params]
|
||||
|
||||
Rendering=null
|
||||
antialiasing=1
|
||||
generate_mipmaps=false
|
||||
disable_embedded_bitmaps=true
|
||||
multichannel_signed_distance_field=false
|
||||
msdf_pixel_range=8
|
||||
msdf_size=48
|
||||
allow_system_fallback=true
|
||||
force_autohinter=false
|
||||
hinting=1
|
||||
subpixel_positioning=1
|
||||
oversampling=0.0
|
||||
Fallbacks=null
|
||||
fallbacks=[]
|
||||
Compress=null
|
||||
compress=true
|
||||
preload=[]
|
||||
language_support={}
|
||||
script_support={}
|
||||
opentype_features={}
|
BIN
Robo-Bus-A31-HMI/Kufam_Noto_Sans_SC/Kufam/static/Kufam-Bold.ttf
Normal file
BIN
Robo-Bus-A31-HMI/Kufam_Noto_Sans_SC/Kufam/static/Kufam-Bold.ttf
Normal file
Binary file not shown.
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="font_data_dynamic"
|
||||
type="FontFile"
|
||||
uid="uid://di8ag117eoaw"
|
||||
path="res://.godot/imported/Kufam-Bold.ttf-dd41d02697e5d160566fd1bd490db0c4.fontdata"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Kufam_Noto_Sans_SC/Kufam/static/Kufam-Bold.ttf"
|
||||
dest_files=["res://.godot/imported/Kufam-Bold.ttf-dd41d02697e5d160566fd1bd490db0c4.fontdata"]
|
||||
|
||||
[params]
|
||||
|
||||
Rendering=null
|
||||
antialiasing=1
|
||||
generate_mipmaps=false
|
||||
disable_embedded_bitmaps=true
|
||||
multichannel_signed_distance_field=false
|
||||
msdf_pixel_range=8
|
||||
msdf_size=48
|
||||
allow_system_fallback=true
|
||||
force_autohinter=false
|
||||
hinting=1
|
||||
subpixel_positioning=1
|
||||
oversampling=0.0
|
||||
Fallbacks=null
|
||||
fallbacks=[]
|
||||
Compress=null
|
||||
compress=true
|
||||
preload=[]
|
||||
language_support={}
|
||||
script_support={}
|
||||
opentype_features={}
|
Binary file not shown.
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="font_data_dynamic"
|
||||
type="FontFile"
|
||||
uid="uid://vyrosto82xp6"
|
||||
path="res://.godot/imported/Kufam-BoldItalic.ttf-9025890eb35130179cb6159c1c537931.fontdata"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Kufam_Noto_Sans_SC/Kufam/static/Kufam-BoldItalic.ttf"
|
||||
dest_files=["res://.godot/imported/Kufam-BoldItalic.ttf-9025890eb35130179cb6159c1c537931.fontdata"]
|
||||
|
||||
[params]
|
||||
|
||||
Rendering=null
|
||||
antialiasing=1
|
||||
generate_mipmaps=false
|
||||
disable_embedded_bitmaps=true
|
||||
multichannel_signed_distance_field=false
|
||||
msdf_pixel_range=8
|
||||
msdf_size=48
|
||||
allow_system_fallback=true
|
||||
force_autohinter=false
|
||||
hinting=1
|
||||
subpixel_positioning=1
|
||||
oversampling=0.0
|
||||
Fallbacks=null
|
||||
fallbacks=[]
|
||||
Compress=null
|
||||
compress=true
|
||||
preload=[]
|
||||
language_support={}
|
||||
script_support={}
|
||||
opentype_features={}
|
Binary file not shown.
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="font_data_dynamic"
|
||||
type="FontFile"
|
||||
uid="uid://ccm2bf1bbgyci"
|
||||
path="res://.godot/imported/Kufam-ExtraBold.ttf-199c14423ab5b6cc4c3d4975baefde1d.fontdata"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Kufam_Noto_Sans_SC/Kufam/static/Kufam-ExtraBold.ttf"
|
||||
dest_files=["res://.godot/imported/Kufam-ExtraBold.ttf-199c14423ab5b6cc4c3d4975baefde1d.fontdata"]
|
||||
|
||||
[params]
|
||||
|
||||
Rendering=null
|
||||
antialiasing=1
|
||||
generate_mipmaps=false
|
||||
disable_embedded_bitmaps=true
|
||||
multichannel_signed_distance_field=false
|
||||
msdf_pixel_range=8
|
||||
msdf_size=48
|
||||
allow_system_fallback=true
|
||||
force_autohinter=false
|
||||
hinting=1
|
||||
subpixel_positioning=1
|
||||
oversampling=0.0
|
||||
Fallbacks=null
|
||||
fallbacks=[]
|
||||
Compress=null
|
||||
compress=true
|
||||
preload=[]
|
||||
language_support={}
|
||||
script_support={}
|
||||
opentype_features={}
|
Binary file not shown.
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="font_data_dynamic"
|
||||
type="FontFile"
|
||||
uid="uid://bv5rpk6730v3e"
|
||||
path="res://.godot/imported/Kufam-ExtraBoldItalic.ttf-d29f43e67b6d36a1f7432fe7a4e3f52d.fontdata"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Kufam_Noto_Sans_SC/Kufam/static/Kufam-ExtraBoldItalic.ttf"
|
||||
dest_files=["res://.godot/imported/Kufam-ExtraBoldItalic.ttf-d29f43e67b6d36a1f7432fe7a4e3f52d.fontdata"]
|
||||
|
||||
[params]
|
||||
|
||||
Rendering=null
|
||||
antialiasing=1
|
||||
generate_mipmaps=false
|
||||
disable_embedded_bitmaps=true
|
||||
multichannel_signed_distance_field=false
|
||||
msdf_pixel_range=8
|
||||
msdf_size=48
|
||||
allow_system_fallback=true
|
||||
force_autohinter=false
|
||||
hinting=1
|
||||
subpixel_positioning=1
|
||||
oversampling=0.0
|
||||
Fallbacks=null
|
||||
fallbacks=[]
|
||||
Compress=null
|
||||
compress=true
|
||||
preload=[]
|
||||
language_support={}
|
||||
script_support={}
|
||||
opentype_features={}
|
Binary file not shown.
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="font_data_dynamic"
|
||||
type="FontFile"
|
||||
uid="uid://4jq66bgxkd7t"
|
||||
path="res://.godot/imported/Kufam-Italic.ttf-eb6012ef8256280051e2465cc834cc5b.fontdata"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Kufam_Noto_Sans_SC/Kufam/static/Kufam-Italic.ttf"
|
||||
dest_files=["res://.godot/imported/Kufam-Italic.ttf-eb6012ef8256280051e2465cc834cc5b.fontdata"]
|
||||
|
||||
[params]
|
||||
|
||||
Rendering=null
|
||||
antialiasing=1
|
||||
generate_mipmaps=false
|
||||
disable_embedded_bitmaps=true
|
||||
multichannel_signed_distance_field=false
|
||||
msdf_pixel_range=8
|
||||
msdf_size=48
|
||||
allow_system_fallback=true
|
||||
force_autohinter=false
|
||||
hinting=1
|
||||
subpixel_positioning=1
|
||||
oversampling=0.0
|
||||
Fallbacks=null
|
||||
fallbacks=[]
|
||||
Compress=null
|
||||
compress=true
|
||||
preload=[]
|
||||
language_support={}
|
||||
script_support={}
|
||||
opentype_features={}
|
Binary file not shown.
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="font_data_dynamic"
|
||||
type="FontFile"
|
||||
uid="uid://cpg1vosvn7oli"
|
||||
path="res://.godot/imported/Kufam-Medium.ttf-a8f14b8674c29c9ed3f530c2182c0f78.fontdata"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Kufam_Noto_Sans_SC/Kufam/static/Kufam-Medium.ttf"
|
||||
dest_files=["res://.godot/imported/Kufam-Medium.ttf-a8f14b8674c29c9ed3f530c2182c0f78.fontdata"]
|
||||
|
||||
[params]
|
||||
|
||||
Rendering=null
|
||||
antialiasing=1
|
||||
generate_mipmaps=false
|
||||
disable_embedded_bitmaps=true
|
||||
multichannel_signed_distance_field=false
|
||||
msdf_pixel_range=8
|
||||
msdf_size=48
|
||||
allow_system_fallback=true
|
||||
force_autohinter=false
|
||||
hinting=1
|
||||
subpixel_positioning=1
|
||||
oversampling=0.0
|
||||
Fallbacks=null
|
||||
fallbacks=[]
|
||||
Compress=null
|
||||
compress=true
|
||||
preload=[]
|
||||
language_support={}
|
||||
script_support={}
|
||||
opentype_features={}
|
Binary file not shown.
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="font_data_dynamic"
|
||||
type="FontFile"
|
||||
uid="uid://ciibu7wxvflsj"
|
||||
path="res://.godot/imported/Kufam-MediumItalic.ttf-07325f4e7c7ea0f0f3e71b85d0e2e062.fontdata"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Kufam_Noto_Sans_SC/Kufam/static/Kufam-MediumItalic.ttf"
|
||||
dest_files=["res://.godot/imported/Kufam-MediumItalic.ttf-07325f4e7c7ea0f0f3e71b85d0e2e062.fontdata"]
|
||||
|
||||
[params]
|
||||
|
||||
Rendering=null
|
||||
antialiasing=1
|
||||
generate_mipmaps=false
|
||||
disable_embedded_bitmaps=true
|
||||
multichannel_signed_distance_field=false
|
||||
msdf_pixel_range=8
|
||||
msdf_size=48
|
||||
allow_system_fallback=true
|
||||
force_autohinter=false
|
||||
hinting=1
|
||||
subpixel_positioning=1
|
||||
oversampling=0.0
|
||||
Fallbacks=null
|
||||
fallbacks=[]
|
||||
Compress=null
|
||||
compress=true
|
||||
preload=[]
|
||||
language_support={}
|
||||
script_support={}
|
||||
opentype_features={}
|
Binary file not shown.
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="font_data_dynamic"
|
||||
type="FontFile"
|
||||
uid="uid://byadmq30yb25l"
|
||||
path="res://.godot/imported/Kufam-Regular.ttf-bde7f176458ab3c60fcd3da80a2852d0.fontdata"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Kufam_Noto_Sans_SC/Kufam/static/Kufam-Regular.ttf"
|
||||
dest_files=["res://.godot/imported/Kufam-Regular.ttf-bde7f176458ab3c60fcd3da80a2852d0.fontdata"]
|
||||
|
||||
[params]
|
||||
|
||||
Rendering=null
|
||||
antialiasing=1
|
||||
generate_mipmaps=false
|
||||
disable_embedded_bitmaps=true
|
||||
multichannel_signed_distance_field=false
|
||||
msdf_pixel_range=8
|
||||
msdf_size=48
|
||||
allow_system_fallback=true
|
||||
force_autohinter=false
|
||||
hinting=1
|
||||
subpixel_positioning=1
|
||||
oversampling=0.0
|
||||
Fallbacks=null
|
||||
fallbacks=[]
|
||||
Compress=null
|
||||
compress=true
|
||||
preload=[]
|
||||
language_support={}
|
||||
script_support={}
|
||||
opentype_features={}
|
Binary file not shown.
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="font_data_dynamic"
|
||||
type="FontFile"
|
||||
uid="uid://c3vbvk1oyl7xs"
|
||||
path="res://.godot/imported/Kufam-SemiBold.ttf-76d12897ebc03ec4261ea5935c279e9f.fontdata"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Kufam_Noto_Sans_SC/Kufam/static/Kufam-SemiBold.ttf"
|
||||
dest_files=["res://.godot/imported/Kufam-SemiBold.ttf-76d12897ebc03ec4261ea5935c279e9f.fontdata"]
|
||||
|
||||
[params]
|
||||
|
||||
Rendering=null
|
||||
antialiasing=1
|
||||
generate_mipmaps=false
|
||||
disable_embedded_bitmaps=true
|
||||
multichannel_signed_distance_field=false
|
||||
msdf_pixel_range=8
|
||||
msdf_size=48
|
||||
allow_system_fallback=true
|
||||
force_autohinter=false
|
||||
hinting=1
|
||||
subpixel_positioning=1
|
||||
oversampling=0.0
|
||||
Fallbacks=null
|
||||
fallbacks=[]
|
||||
Compress=null
|
||||
compress=true
|
||||
preload=[]
|
||||
language_support={}
|
||||
script_support={}
|
||||
opentype_features={}
|
Binary file not shown.
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="font_data_dynamic"
|
||||
type="FontFile"
|
||||
uid="uid://b84qd0eoegome"
|
||||
path="res://.godot/imported/Kufam-SemiBoldItalic.ttf-eaad58f99d12b43b9988b4dfb70a7e85.fontdata"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Kufam_Noto_Sans_SC/Kufam/static/Kufam-SemiBoldItalic.ttf"
|
||||
dest_files=["res://.godot/imported/Kufam-SemiBoldItalic.ttf-eaad58f99d12b43b9988b4dfb70a7e85.fontdata"]
|
||||
|
||||
[params]
|
||||
|
||||
Rendering=null
|
||||
antialiasing=1
|
||||
generate_mipmaps=false
|
||||
disable_embedded_bitmaps=true
|
||||
multichannel_signed_distance_field=false
|
||||
msdf_pixel_range=8
|
||||
msdf_size=48
|
||||
allow_system_fallback=true
|
||||
force_autohinter=false
|
||||
hinting=1
|
||||
subpixel_positioning=1
|
||||
oversampling=0.0
|
||||
Fallbacks=null
|
||||
fallbacks=[]
|
||||
Compress=null
|
||||
compress=true
|
||||
preload=[]
|
||||
language_support={}
|
||||
script_support={}
|
||||
opentype_features={}
|
Binary file not shown.
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="font_data_dynamic"
|
||||
type="FontFile"
|
||||
uid="uid://cwuux0oou7b10"
|
||||
path="res://.godot/imported/NotoSansSC-VariableFont_wght.ttf-e2a7b093c6dff22224cc8664d532195f.fontdata"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Kufam_Noto_Sans_SC/Noto_Sans_SC/NotoSansSC-VariableFont_wght.ttf"
|
||||
dest_files=["res://.godot/imported/NotoSansSC-VariableFont_wght.ttf-e2a7b093c6dff22224cc8664d532195f.fontdata"]
|
||||
|
||||
[params]
|
||||
|
||||
Rendering=null
|
||||
antialiasing=1
|
||||
generate_mipmaps=false
|
||||
disable_embedded_bitmaps=true
|
||||
multichannel_signed_distance_field=false
|
||||
msdf_pixel_range=8
|
||||
msdf_size=48
|
||||
allow_system_fallback=true
|
||||
force_autohinter=false
|
||||
hinting=1
|
||||
subpixel_positioning=1
|
||||
oversampling=0.0
|
||||
Fallbacks=null
|
||||
fallbacks=[]
|
||||
Compress=null
|
||||
compress=true
|
||||
preload=[]
|
||||
language_support={}
|
||||
script_support={}
|
||||
opentype_features={}
|
93
Robo-Bus-A31-HMI/Kufam_Noto_Sans_SC/Noto_Sans_SC/OFL.txt
Normal file
93
Robo-Bus-A31-HMI/Kufam_Noto_Sans_SC/Noto_Sans_SC/OFL.txt
Normal file
@ -0,0 +1,93 @@
|
||||
Copyright 2014-2021 Adobe (http://www.adobe.com/), with Reserved Font Name 'Source'
|
||||
|
||||
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||
This license is copied below, and is also available with a FAQ at:
|
||||
https://openfontlicense.org
|
||||
|
||||
|
||||
-----------------------------------------------------------
|
||||
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||
-----------------------------------------------------------
|
||||
|
||||
PREAMBLE
|
||||
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||
development of collaborative font projects, to support the font creation
|
||||
efforts of academic and linguistic communities, and to provide a free and
|
||||
open framework in which fonts may be shared and improved in partnership
|
||||
with others.
|
||||
|
||||
The OFL allows the licensed fonts to be used, studied, modified and
|
||||
redistributed freely as long as they are not sold by themselves. The
|
||||
fonts, including any derivative works, can be bundled, embedded,
|
||||
redistributed and/or sold with any software provided that any reserved
|
||||
names are not used by derivative works. The fonts and derivatives,
|
||||
however, cannot be released under any other type of license. The
|
||||
requirement for fonts to remain under this license does not apply
|
||||
to any document created using the fonts or their derivatives.
|
||||
|
||||
DEFINITIONS
|
||||
"Font Software" refers to the set of files released by the Copyright
|
||||
Holder(s) under this license and clearly marked as such. This may
|
||||
include source files, build scripts and documentation.
|
||||
|
||||
"Reserved Font Name" refers to any names specified as such after the
|
||||
copyright statement(s).
|
||||
|
||||
"Original Version" refers to the collection of Font Software components as
|
||||
distributed by the Copyright Holder(s).
|
||||
|
||||
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||
or substituting -- in part or in whole -- any of the components of the
|
||||
Original Version, by changing formats or by porting the Font Software to a
|
||||
new environment.
|
||||
|
||||
"Author" refers to any designer, engineer, programmer, technical
|
||||
writer or other person who contributed to the Font Software.
|
||||
|
||||
PERMISSION & CONDITIONS
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||
redistribute, and sell modified and unmodified copies of the Font
|
||||
Software, subject to the following conditions:
|
||||
|
||||
1) Neither the Font Software nor any of its individual components,
|
||||
in Original or Modified Versions, may be sold by itself.
|
||||
|
||||
2) Original or Modified Versions of the Font Software may be bundled,
|
||||
redistributed and/or sold with any software, provided that each copy
|
||||
contains the above copyright notice and this license. These can be
|
||||
included either as stand-alone text files, human-readable headers or
|
||||
in the appropriate machine-readable metadata fields within text or
|
||||
binary files as long as those fields can be easily viewed by the user.
|
||||
|
||||
3) No Modified Version of the Font Software may use the Reserved Font
|
||||
Name(s) unless explicit written permission is granted by the corresponding
|
||||
Copyright Holder. This restriction only applies to the primary font name as
|
||||
presented to the users.
|
||||
|
||||
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||
Software shall not be used to promote, endorse or advertise any
|
||||
Modified Version, except to acknowledge the contribution(s) of the
|
||||
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||
permission.
|
||||
|
||||
5) The Font Software, modified or unmodified, in part or in whole,
|
||||
must be distributed entirely under this license, and must not be
|
||||
distributed under any other license. The requirement for fonts to
|
||||
remain under this license does not apply to any document created
|
||||
using the Font Software.
|
||||
|
||||
TERMINATION
|
||||
This license becomes null and void if any of the above conditions are
|
||||
not met.
|
||||
|
||||
DISCLAIMER
|
||||
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||
OTHER DEALINGS IN THE FONT SOFTWARE.
|
71
Robo-Bus-A31-HMI/Kufam_Noto_Sans_SC/Noto_Sans_SC/README.txt
Normal file
71
Robo-Bus-A31-HMI/Kufam_Noto_Sans_SC/Noto_Sans_SC/README.txt
Normal file
@ -0,0 +1,71 @@
|
||||
Noto Sans SC Variable Font
|
||||
==========================
|
||||
|
||||
This download contains Noto Sans SC as both a variable font and static fonts.
|
||||
|
||||
Noto Sans SC is a variable font with this axis:
|
||||
wght
|
||||
|
||||
This means all the styles are contained in a single file:
|
||||
Noto_Sans_SC/NotoSansSC-VariableFont_wght.ttf
|
||||
|
||||
If your app fully supports variable fonts, you can now pick intermediate styles
|
||||
that aren’t available as static fonts. Not all apps support variable fonts, and
|
||||
in those cases you can use the static font files for Noto Sans SC:
|
||||
Noto_Sans_SC/static/NotoSansSC-Thin.ttf
|
||||
Noto_Sans_SC/static/NotoSansSC-ExtraLight.ttf
|
||||
Noto_Sans_SC/static/NotoSansSC-Light.ttf
|
||||
Noto_Sans_SC/static/NotoSansSC-Regular.ttf
|
||||
Noto_Sans_SC/static/NotoSansSC-Medium.ttf
|
||||
Noto_Sans_SC/static/NotoSansSC-SemiBold.ttf
|
||||
Noto_Sans_SC/static/NotoSansSC-Bold.ttf
|
||||
Noto_Sans_SC/static/NotoSansSC-ExtraBold.ttf
|
||||
Noto_Sans_SC/static/NotoSansSC-Black.ttf
|
||||
|
||||
Get started
|
||||
-----------
|
||||
|
||||
1. Install the font files you want to use
|
||||
|
||||
2. Use your app's font picker to view the font family and all the
|
||||
available styles
|
||||
|
||||
Learn more about variable fonts
|
||||
-------------------------------
|
||||
|
||||
https://developers.google.com/web/fundamentals/design-and-ux/typography/variable-fonts
|
||||
https://variablefonts.typenetwork.com
|
||||
https://medium.com/variable-fonts
|
||||
|
||||
In desktop apps
|
||||
|
||||
https://theblog.adobe.com/can-variable-fonts-illustrator-cc
|
||||
https://helpx.adobe.com/nz/photoshop/using/fonts.html#variable_fonts
|
||||
|
||||
Online
|
||||
|
||||
https://developers.google.com/fonts/docs/getting_started
|
||||
https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Fonts/Variable_Fonts_Guide
|
||||
https://developer.microsoft.com/en-us/microsoft-edge/testdrive/demos/variable-fonts
|
||||
|
||||
Installing fonts
|
||||
|
||||
MacOS: https://support.apple.com/en-us/HT201749
|
||||
Linux: https://www.google.com/search?q=how+to+install+a+font+on+gnu%2Blinux
|
||||
Windows: https://support.microsoft.com/en-us/help/314960/how-to-install-or-remove-a-font-in-windows
|
||||
|
||||
Android Apps
|
||||
|
||||
https://developers.google.com/fonts/docs/android
|
||||
https://developer.android.com/guide/topics/ui/look-and-feel/downloadable-fonts
|
||||
|
||||
License
|
||||
-------
|
||||
Please read the full license text (OFL.txt) to understand the permissions,
|
||||
restrictions and requirements for usage, redistribution, and modification.
|
||||
|
||||
You can use them in your products & projects – print or digital,
|
||||
commercial or otherwise.
|
||||
|
||||
This isn't legal advice, please consider consulting a lawyer and see the full
|
||||
license for all details.
|
Binary file not shown.
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="font_data_dynamic"
|
||||
type="FontFile"
|
||||
uid="uid://c17sdtiq4p16i"
|
||||
path="res://.godot/imported/NotoSansSC-Black.ttf-f36ded5081eda040ef4e9f777deb8526.fontdata"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Kufam_Noto_Sans_SC/Noto_Sans_SC/static/NotoSansSC-Black.ttf"
|
||||
dest_files=["res://.godot/imported/NotoSansSC-Black.ttf-f36ded5081eda040ef4e9f777deb8526.fontdata"]
|
||||
|
||||
[params]
|
||||
|
||||
Rendering=null
|
||||
antialiasing=1
|
||||
generate_mipmaps=false
|
||||
disable_embedded_bitmaps=true
|
||||
multichannel_signed_distance_field=false
|
||||
msdf_pixel_range=8
|
||||
msdf_size=48
|
||||
allow_system_fallback=true
|
||||
force_autohinter=false
|
||||
hinting=1
|
||||
subpixel_positioning=1
|
||||
oversampling=0.0
|
||||
Fallbacks=null
|
||||
fallbacks=[]
|
||||
Compress=null
|
||||
compress=true
|
||||
preload=[]
|
||||
language_support={}
|
||||
script_support={}
|
||||
opentype_features={}
|
Binary file not shown.
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="font_data_dynamic"
|
||||
type="FontFile"
|
||||
uid="uid://b2r1ob72c6onv"
|
||||
path="res://.godot/imported/NotoSansSC-Bold.ttf-1a1bb2e3673abc48614cbf60c95f17c8.fontdata"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Kufam_Noto_Sans_SC/Noto_Sans_SC/static/NotoSansSC-Bold.ttf"
|
||||
dest_files=["res://.godot/imported/NotoSansSC-Bold.ttf-1a1bb2e3673abc48614cbf60c95f17c8.fontdata"]
|
||||
|
||||
[params]
|
||||
|
||||
Rendering=null
|
||||
antialiasing=1
|
||||
generate_mipmaps=false
|
||||
disable_embedded_bitmaps=true
|
||||
multichannel_signed_distance_field=false
|
||||
msdf_pixel_range=8
|
||||
msdf_size=48
|
||||
allow_system_fallback=true
|
||||
force_autohinter=false
|
||||
hinting=1
|
||||
subpixel_positioning=1
|
||||
oversampling=0.0
|
||||
Fallbacks=null
|
||||
fallbacks=[]
|
||||
Compress=null
|
||||
compress=true
|
||||
preload=[]
|
||||
language_support={}
|
||||
script_support={}
|
||||
opentype_features={}
|
Binary file not shown.
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="font_data_dynamic"
|
||||
type="FontFile"
|
||||
uid="uid://bfqyp0bjgtbdk"
|
||||
path="res://.godot/imported/NotoSansSC-ExtraBold.ttf-ef3c566097fe2000e515e8f9f9562fb9.fontdata"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Kufam_Noto_Sans_SC/Noto_Sans_SC/static/NotoSansSC-ExtraBold.ttf"
|
||||
dest_files=["res://.godot/imported/NotoSansSC-ExtraBold.ttf-ef3c566097fe2000e515e8f9f9562fb9.fontdata"]
|
||||
|
||||
[params]
|
||||
|
||||
Rendering=null
|
||||
antialiasing=1
|
||||
generate_mipmaps=false
|
||||
disable_embedded_bitmaps=true
|
||||
multichannel_signed_distance_field=false
|
||||
msdf_pixel_range=8
|
||||
msdf_size=48
|
||||
allow_system_fallback=true
|
||||
force_autohinter=false
|
||||
hinting=1
|
||||
subpixel_positioning=1
|
||||
oversampling=0.0
|
||||
Fallbacks=null
|
||||
fallbacks=[]
|
||||
Compress=null
|
||||
compress=true
|
||||
preload=[]
|
||||
language_support={}
|
||||
script_support={}
|
||||
opentype_features={}
|
Binary file not shown.
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="font_data_dynamic"
|
||||
type="FontFile"
|
||||
uid="uid://bq10pwwlvvw0y"
|
||||
path="res://.godot/imported/NotoSansSC-ExtraLight.ttf-1a2498d3350337d8e2d1e7be5d5dc97c.fontdata"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Kufam_Noto_Sans_SC/Noto_Sans_SC/static/NotoSansSC-ExtraLight.ttf"
|
||||
dest_files=["res://.godot/imported/NotoSansSC-ExtraLight.ttf-1a2498d3350337d8e2d1e7be5d5dc97c.fontdata"]
|
||||
|
||||
[params]
|
||||
|
||||
Rendering=null
|
||||
antialiasing=1
|
||||
generate_mipmaps=false
|
||||
disable_embedded_bitmaps=true
|
||||
multichannel_signed_distance_field=false
|
||||
msdf_pixel_range=8
|
||||
msdf_size=48
|
||||
allow_system_fallback=true
|
||||
force_autohinter=false
|
||||
hinting=1
|
||||
subpixel_positioning=1
|
||||
oversampling=0.0
|
||||
Fallbacks=null
|
||||
fallbacks=[]
|
||||
Compress=null
|
||||
compress=true
|
||||
preload=[]
|
||||
language_support={}
|
||||
script_support={}
|
||||
opentype_features={}
|
Binary file not shown.
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="font_data_dynamic"
|
||||
type="FontFile"
|
||||
uid="uid://c3c3oe0qvg04o"
|
||||
path="res://.godot/imported/NotoSansSC-Light.ttf-eefedc39b221600a95b937de600e73f2.fontdata"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Kufam_Noto_Sans_SC/Noto_Sans_SC/static/NotoSansSC-Light.ttf"
|
||||
dest_files=["res://.godot/imported/NotoSansSC-Light.ttf-eefedc39b221600a95b937de600e73f2.fontdata"]
|
||||
|
||||
[params]
|
||||
|
||||
Rendering=null
|
||||
antialiasing=1
|
||||
generate_mipmaps=false
|
||||
disable_embedded_bitmaps=true
|
||||
multichannel_signed_distance_field=false
|
||||
msdf_pixel_range=8
|
||||
msdf_size=48
|
||||
allow_system_fallback=true
|
||||
force_autohinter=false
|
||||
hinting=1
|
||||
subpixel_positioning=1
|
||||
oversampling=0.0
|
||||
Fallbacks=null
|
||||
fallbacks=[]
|
||||
Compress=null
|
||||
compress=true
|
||||
preload=[]
|
||||
language_support={}
|
||||
script_support={}
|
||||
opentype_features={}
|
Binary file not shown.
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="font_data_dynamic"
|
||||
type="FontFile"
|
||||
uid="uid://b3k16i0c55ou6"
|
||||
path="res://.godot/imported/NotoSansSC-Medium.ttf-3f3b684fddf2f33f62d059bfc01e5b2b.fontdata"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Kufam_Noto_Sans_SC/Noto_Sans_SC/static/NotoSansSC-Medium.ttf"
|
||||
dest_files=["res://.godot/imported/NotoSansSC-Medium.ttf-3f3b684fddf2f33f62d059bfc01e5b2b.fontdata"]
|
||||
|
||||
[params]
|
||||
|
||||
Rendering=null
|
||||
antialiasing=1
|
||||
generate_mipmaps=false
|
||||
disable_embedded_bitmaps=true
|
||||
multichannel_signed_distance_field=false
|
||||
msdf_pixel_range=8
|
||||
msdf_size=48
|
||||
allow_system_fallback=true
|
||||
force_autohinter=false
|
||||
hinting=1
|
||||
subpixel_positioning=1
|
||||
oversampling=0.0
|
||||
Fallbacks=null
|
||||
fallbacks=[]
|
||||
Compress=null
|
||||
compress=true
|
||||
preload=[]
|
||||
language_support={}
|
||||
script_support={}
|
||||
opentype_features={}
|
Binary file not shown.
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="font_data_dynamic"
|
||||
type="FontFile"
|
||||
uid="uid://bykckr7idaxd2"
|
||||
path="res://.godot/imported/NotoSansSC-Regular.ttf-6661af04f41c802e6bdb7c14e316ab13.fontdata"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Kufam_Noto_Sans_SC/Noto_Sans_SC/static/NotoSansSC-Regular.ttf"
|
||||
dest_files=["res://.godot/imported/NotoSansSC-Regular.ttf-6661af04f41c802e6bdb7c14e316ab13.fontdata"]
|
||||
|
||||
[params]
|
||||
|
||||
Rendering=null
|
||||
antialiasing=1
|
||||
generate_mipmaps=false
|
||||
disable_embedded_bitmaps=true
|
||||
multichannel_signed_distance_field=false
|
||||
msdf_pixel_range=8
|
||||
msdf_size=48
|
||||
allow_system_fallback=true
|
||||
force_autohinter=false
|
||||
hinting=1
|
||||
subpixel_positioning=1
|
||||
oversampling=0.0
|
||||
Fallbacks=null
|
||||
fallbacks=[]
|
||||
Compress=null
|
||||
compress=true
|
||||
preload=[]
|
||||
language_support={}
|
||||
script_support={}
|
||||
opentype_features={}
|
Binary file not shown.
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="font_data_dynamic"
|
||||
type="FontFile"
|
||||
uid="uid://csn1jmpr87mxx"
|
||||
path="res://.godot/imported/NotoSansSC-SemiBold.ttf-358d7a28d8c48eef2cb27f00de8b5f47.fontdata"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Kufam_Noto_Sans_SC/Noto_Sans_SC/static/NotoSansSC-SemiBold.ttf"
|
||||
dest_files=["res://.godot/imported/NotoSansSC-SemiBold.ttf-358d7a28d8c48eef2cb27f00de8b5f47.fontdata"]
|
||||
|
||||
[params]
|
||||
|
||||
Rendering=null
|
||||
antialiasing=1
|
||||
generate_mipmaps=false
|
||||
disable_embedded_bitmaps=true
|
||||
multichannel_signed_distance_field=false
|
||||
msdf_pixel_range=8
|
||||
msdf_size=48
|
||||
allow_system_fallback=true
|
||||
force_autohinter=false
|
||||
hinting=1
|
||||
subpixel_positioning=1
|
||||
oversampling=0.0
|
||||
Fallbacks=null
|
||||
fallbacks=[]
|
||||
Compress=null
|
||||
compress=true
|
||||
preload=[]
|
||||
language_support={}
|
||||
script_support={}
|
||||
opentype_features={}
|
Binary file not shown.
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="font_data_dynamic"
|
||||
type="FontFile"
|
||||
uid="uid://eine874bfivu"
|
||||
path="res://.godot/imported/NotoSansSC-Thin.ttf-d333cfcecaff7521deab60a00951ce8e.fontdata"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Kufam_Noto_Sans_SC/Noto_Sans_SC/static/NotoSansSC-Thin.ttf"
|
||||
dest_files=["res://.godot/imported/NotoSansSC-Thin.ttf-d333cfcecaff7521deab60a00951ce8e.fontdata"]
|
||||
|
||||
[params]
|
||||
|
||||
Rendering=null
|
||||
antialiasing=1
|
||||
generate_mipmaps=false
|
||||
disable_embedded_bitmaps=true
|
||||
multichannel_signed_distance_field=false
|
||||
msdf_pixel_range=8
|
||||
msdf_size=48
|
||||
allow_system_fallback=true
|
||||
force_autohinter=false
|
||||
hinting=1
|
||||
subpixel_positioning=1
|
||||
oversampling=0.0
|
||||
Fallbacks=null
|
||||
fallbacks=[]
|
||||
Compress=null
|
||||
compress=true
|
||||
preload=[]
|
||||
language_support={}
|
||||
script_support={}
|
||||
opentype_features={}
|
BIN
Robo-Bus-A31-HMI/Vehicle/robobus_a21_v11.glb
Normal file
BIN
Robo-Bus-A31-HMI/Vehicle/robobus_a21_v11.glb
Normal file
Binary file not shown.
36
Robo-Bus-A31-HMI/Vehicle/robobus_a21_v11.glb.import
Normal file
36
Robo-Bus-A31-HMI/Vehicle/robobus_a21_v11.glb.import
Normal file
@ -0,0 +1,36 @@
|
||||
[remap]
|
||||
|
||||
importer="scene"
|
||||
importer_version=1
|
||||
type="PackedScene"
|
||||
uid="uid://doatdiucy54qq"
|
||||
path="res://.godot/imported/robobus_a21_v11.glb-c1f47bc9464751f12812c25eab10bbd3.scn"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Vehicle/robobus_a21_v11.glb"
|
||||
dest_files=["res://.godot/imported/robobus_a21_v11.glb-c1f47bc9464751f12812c25eab10bbd3.scn"]
|
||||
|
||||
[params]
|
||||
|
||||
nodes/root_type=""
|
||||
nodes/root_name=""
|
||||
nodes/apply_root_scale=true
|
||||
nodes/root_scale=1.0
|
||||
nodes/import_as_skeleton_bones=false
|
||||
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
|
22
Robo-Bus-A31-HMI/code/hsliderPor.gd
Normal file
22
Robo-Bus-A31-HMI/code/hsliderPor.gd
Normal file
@ -0,0 +1,22 @@
|
||||
extends HSlider
|
||||
|
||||
|
||||
@export var texture1 :Texture= null;
|
||||
@export var texture2 :Texture= null;
|
||||
func _physics_process(delta: float) -> void:
|
||||
if value > max_value/2:
|
||||
set("theme_override_icons/grabber",texture1)
|
||||
set("theme_override_icons/grabber_highlight",texture1)
|
||||
else:
|
||||
set("theme_override_icons/grabber",texture2)
|
||||
set("theme_override_icons/grabber_highlight",texture2)
|
||||
|
||||
|
||||
func _on_drag_ended(value_changed: bool) -> void:
|
||||
if value > max_value/2:
|
||||
var tween = get_tree().create_tween()
|
||||
tween.tween_property(self, "value", max_value, 0.1)
|
||||
else:
|
||||
var tween = get_tree().create_tween()
|
||||
tween.tween_property(self, "value", 0, 0.1)
|
||||
pass # Replace with function body.
|
198
Robo-Bus-A31-HMI/common/account.gd
Normal file
198
Robo-Bus-A31-HMI/common/account.gd
Normal file
@ -0,0 +1,198 @@
|
||||
extends Node
|
||||
|
||||
|
||||
const PATH_ROLE_HEAD_PORTRAIT = "user://role_head_portrait.png"
|
||||
enum SEX {
|
||||
NONE = 0,
|
||||
BOY = 1,
|
||||
GIRL = 2
|
||||
}
|
||||
|
||||
signal uid_change()
|
||||
signal user_change()
|
||||
signal login_change()
|
||||
signal role_change()
|
||||
signal pokemon_change()
|
||||
signal map_change()
|
||||
signal item_change()
|
||||
|
||||
var UID : String = "" :
|
||||
set(value):
|
||||
KvStore.put("UID",value)
|
||||
emit_signal("uid_change")
|
||||
get :
|
||||
return KvStore.get_value("UID","")
|
||||
|
||||
var user : Dictionary = {} :
|
||||
set(value):
|
||||
var isLoginChange = (user.is_empty() and not value.is_empty() ) or (not user.is_empty() and value.is_empty() )
|
||||
KvStore.put("USER",value)
|
||||
emit_signal("user_change")
|
||||
if isLoginChange :
|
||||
emit_signal("login_change")
|
||||
get :
|
||||
return KvStore.get_value("USER",{})
|
||||
|
||||
|
||||
var local_user = {} :
|
||||
set(value):
|
||||
KvStore.put("LOCAL_USER",value)
|
||||
get:
|
||||
return KvStore.get_value("LOCAL_USER",{})
|
||||
|
||||
|
||||
|
||||
var sex : int = 0 :
|
||||
set(value) :
|
||||
if user.is_empty():
|
||||
var temp = local_user
|
||||
temp["SEX"] = value
|
||||
local_user = temp
|
||||
else:
|
||||
var temp = user
|
||||
temp.userBase.sex = value
|
||||
user = temp
|
||||
emit_signal("role_change")
|
||||
get:
|
||||
if user.is_empty():
|
||||
return local_user["SEX"] if local_user.has("SEX") else SEX.NONE
|
||||
else:
|
||||
return user.userBase.sex
|
||||
|
||||
var nickName : String = "" :
|
||||
set(value):
|
||||
if user.is_empty():
|
||||
var temp = local_user
|
||||
temp["NICKNAME"] = value
|
||||
local_user = temp
|
||||
else:
|
||||
var temp = user
|
||||
temp.userBase.nickName = value
|
||||
user = temp
|
||||
get:
|
||||
if user.is_empty():
|
||||
return local_user["NICKNAME"] if local_user.has("NICKNAME") else SEX.NONE
|
||||
else:
|
||||
return user.userBase.nickName
|
||||
|
||||
var role : Dictionary = {} :
|
||||
set(value):
|
||||
if user.is_empty():
|
||||
var temp = local_user
|
||||
temp["ROLE"] = value
|
||||
local_user = temp
|
||||
else:
|
||||
var temp = user
|
||||
temp.userRole.data = JsonWrapper.toJson(value)
|
||||
user = temp
|
||||
emit_signal("role_change")
|
||||
get :
|
||||
if user.is_empty():
|
||||
return local_user["ROLE"] if local_user.has("ROLE") else {}
|
||||
else:
|
||||
return JsonWrapper.convertJson(user.userRole.data )
|
||||
|
||||
var pokemon : Dictionary = {} :
|
||||
set(value):
|
||||
if user.is_empty():
|
||||
var temp = local_user
|
||||
temp["POKEMON"] = value
|
||||
local_user = temp
|
||||
else:
|
||||
var temp = user
|
||||
temp.userPokemon.data = JsonWrapper.toJson(value)
|
||||
user = temp
|
||||
emit_signal("pokemon_change")
|
||||
get :
|
||||
if user.is_empty():
|
||||
return local_user["POKEMON"] if local_user.has("POKEMON") else {}
|
||||
else:
|
||||
return JsonWrapper.convertJson(user.userPokemon.data )
|
||||
|
||||
|
||||
var map : Dictionary = {} :
|
||||
set(value):
|
||||
if value.is_empty():
|
||||
KvStore.remove_key("LOCAL_MAP")
|
||||
KvStore.remove_key("MAP_"+UID)
|
||||
else :
|
||||
if UID.is_empty():
|
||||
KvStore.put("LOCAL_MAP",value)
|
||||
else:
|
||||
KvStore.put("MAP_"+UID,value)
|
||||
emit_signal("map_change")
|
||||
get :
|
||||
if UID.is_empty():
|
||||
return KvStore.get_value("LOCAL_MAP",MapWrapper.MAP_DEFAULT)
|
||||
else:
|
||||
return KvStore.get_value("MAP_"+UID,MapWrapper.MAP_DEFAULT)
|
||||
|
||||
func update_map(new_map):
|
||||
new_map.lastUpdateTime = TimeUtil.serverTimeMillsecond()
|
||||
self.map = new_map
|
||||
|
||||
|
||||
|
||||
var item : Dictionary = {} :
|
||||
set(value):
|
||||
if value.is_empty():
|
||||
KvStore.remove_key("LOCAL_ITEM")
|
||||
KvStore.remove_key("ITEM_"+UID)
|
||||
else :
|
||||
if UID.is_empty():
|
||||
KvStore.put("LOCAL_ITEM",value)
|
||||
else:
|
||||
KvStore.put("ITEM_"+UID,value)
|
||||
emit_signal("item_change")
|
||||
get :
|
||||
if UID.is_empty():
|
||||
return KvStore.get_value("LOCAL_ITEM",ItemWrapper.ITEM_DEFAULT)
|
||||
else:
|
||||
return KvStore.get_value("ITEM_"+UID,ItemWrapper.ITEM_DEFAULT)
|
||||
# set(value):
|
||||
# if value.has("itemLastSyncTime") and value.itemLastSyncTime > self.item.itemLastSyncTime:
|
||||
# KvStore.put("ITEM",value)
|
||||
# emit_signal("item_change")
|
||||
# get:
|
||||
# return KvStore.get_value("ITEM",{"data":{},"itemLastSyncTime":0})
|
||||
|
||||
|
||||
|
||||
func isLogin():
|
||||
return not UID.is_empty()
|
||||
|
||||
func logout() :
|
||||
|
||||
map = {}
|
||||
item = {}
|
||||
role = {}
|
||||
pokemon = {}
|
||||
user = {}
|
||||
UID = ""
|
||||
|
||||
func doRefresh() :
|
||||
if user.is_empty() : return
|
||||
var httpResult = await UserService.profile(user.userBase.uId).request_completed
|
||||
var commonResult = BaseNetwork.parse_send_result(httpResult[0],httpResult[1],httpResult[3],false)
|
||||
if commonResult == null : return
|
||||
self.user = commonResult
|
||||
|
||||
func isBoy() -> bool :
|
||||
return sex == SEX.BOY
|
||||
|
||||
func is_visitor_login():
|
||||
if local_user.has("SEX") and local_user.has("NICKNAME") and \
|
||||
local_user.has("POKEMON") and local_user.has("ROLE") :
|
||||
if not local_user["POKEMON"].is_empty() and not local_user["ROLE"].is_empty():
|
||||
return true
|
||||
return false
|
||||
|
||||
func need_fill_info():
|
||||
if user.is_empty() or user.userBase.nickName == "" or \
|
||||
user.userPokemon.data.is_empty() or user.userRole.data.is_empty() :
|
||||
return true
|
||||
else :
|
||||
return false
|
||||
|
||||
|
||||
|
BIN
Robo-Bus-A31-HMI/common/anim/center_enter.anim
Normal file
BIN
Robo-Bus-A31-HMI/common/anim/center_enter.anim
Normal file
Binary file not shown.
BIN
Robo-Bus-A31-HMI/common/anim/center_exit.anim
Normal file
BIN
Robo-Bus-A31-HMI/common/anim/center_exit.anim
Normal file
Binary file not shown.
BIN
Robo-Bus-A31-HMI/common/anim/common_anim.res
Normal file
BIN
Robo-Bus-A31-HMI/common/anim/common_anim.res
Normal file
Binary file not shown.
BIN
Robo-Bus-A31-HMI/common/anim/fade_in.anim
Normal file
BIN
Robo-Bus-A31-HMI/common/anim/fade_in.anim
Normal file
Binary file not shown.
BIN
Robo-Bus-A31-HMI/common/anim/fade_out.anim
Normal file
BIN
Robo-Bus-A31-HMI/common/anim/fade_out.anim
Normal file
Binary file not shown.
30
Robo-Bus-A31-HMI/common/astar_map.gd
Normal file
30
Robo-Bus-A31-HMI/common/astar_map.gd
Normal file
@ -0,0 +1,30 @@
|
||||
extends Node
|
||||
|
||||
var astar = AStarGrid2D.new()
|
||||
#写入地图数据并更新
|
||||
func up_map(map_size:Vector2,cell_szie:Vector2,obstacle_arr:PackedVector2Array):
|
||||
astar.region = Rect2i(0, 0, map_size.x+1, map_size.y+1)
|
||||
astar.cell_size = cell_szie
|
||||
astar.offset = cell_szie * 0.5
|
||||
astar.default_compute_heuristic = AStarGrid2D.HEURISTIC_MANHATTAN
|
||||
astar.default_estimate_heuristic = AStarGrid2D.HEURISTIC_MANHATTAN
|
||||
astar.diagonal_mode = AStarGrid2D.DIAGONAL_MODE_NEVER
|
||||
astar.update()
|
||||
for pos in obstacle_arr:
|
||||
astar.set_point_solid(pos)
|
||||
#坐标位置是否可通行
|
||||
func is_point_walkable(local_position):
|
||||
var map_position = local_to_map(local_position)
|
||||
if astar.is_in_boundsv(map_position):
|
||||
return not astar.is_point_solid(map_position)
|
||||
return false
|
||||
#局部转本地
|
||||
func local_to_map(local_position):
|
||||
return Vector2(int(local_position.x/astar.cell_size.x),int(local_position.y/astar.cell_size.y))
|
||||
#获取导航路径
|
||||
func get_point_path(local_start_point,local_end_point):
|
||||
var start_point = local_to_map(local_start_point)
|
||||
var end_point = local_to_map(local_end_point)
|
||||
return astar.get_point_path(start_point, end_point)
|
||||
func get_map_point_path(start_point,end_point):
|
||||
return astar.get_point_path(start_point, end_point)
|
3
Robo-Bus-A31-HMI/common/base/base_animation_tree.gd
Normal file
3
Robo-Bus-A31-HMI/common/base/base_animation_tree.gd
Normal file
@ -0,0 +1,3 @@
|
||||
extends AnimationTree
|
||||
|
||||
var state_machine:AnimationNodeStateMachinePlayback = get("parameters/playback")
|
247
Robo-Bus-A31-HMI/common/base/base_control.gd
Normal file
247
Robo-Bus-A31-HMI/common/base/base_control.gd
Normal file
@ -0,0 +1,247 @@
|
||||
#@tool
|
||||
#class_name BaseControl
|
||||
#extends Control
|
||||
#
|
||||
#signal result_data(value)
|
||||
#signal init_complete()
|
||||
#signal load_anim_complete()
|
||||
#signal on_click(_node)
|
||||
#signal on_long_click(_node)
|
||||
##@export var long_time = 800
|
||||
#var clickTime = 0
|
||||
#var clickPosition = Vector2.ZERO
|
||||
#var itemRoot : BaseControl = null
|
||||
#
|
||||
#enum {
|
||||
#RESULT_OK,
|
||||
#RESULT_CANCELED
|
||||
#}
|
||||
#
|
||||
#class GResult :
|
||||
#var code = RESULT_OK
|
||||
#var data = null
|
||||
#func _init(p_code,p_data = null):
|
||||
#self.code = p_code
|
||||
#self.data = p_data
|
||||
#
|
||||
#
|
||||
#
|
||||
#@export var styleBox : StyleBox = null : set = set_styleBox
|
||||
#@export var enter_anim : Animation = null
|
||||
#@export var exit_anim : Animation = null
|
||||
#@export var is_anim = true
|
||||
#@export var on_click_anim : Animation = null
|
||||
#var baseAnimationPlayer : AnimationPlayer = null
|
||||
#func _ready():
|
||||
#await get_tree().process_frame
|
||||
#if is_anim:
|
||||
#init_anim()
|
||||
#playEnter()
|
||||
#
|
||||
#await get_tree().create_timer(0.2).timeout
|
||||
#init_complete.emit()
|
||||
#
|
||||
#
|
||||
#func init_anim():
|
||||
#if enter_anim == null and exit_anim == null :
|
||||
#return
|
||||
#baseAnimationPlayer = AnimationPlayer.new()
|
||||
#var animationLibrary = AnimationLibrary.new()
|
||||
#if enter_anim != null :
|
||||
#animationLibrary.add_animation("enter",enter_anim)
|
||||
#if exit_anim != null :
|
||||
#animationLibrary.add_animation("exit",exit_anim)
|
||||
#if on_click_anim != null:
|
||||
#animationLibrary.add_animation("on_click_anim",on_click_anim)
|
||||
#baseAnimationPlayer.add_animation_library("",animationLibrary)
|
||||
#add_child(baseAnimationPlayer)
|
||||
##
|
||||
#
|
||||
#func playEnter():
|
||||
#if enter_anim != null and baseAnimationPlayer != null :
|
||||
#baseAnimationPlayer.play("enter")
|
||||
#
|
||||
#
|
||||
#
|
||||
#func playExit():
|
||||
#if exit_anim != null and baseAnimationPlayer != null :
|
||||
#baseAnimationPlayer.play("exit")
|
||||
#await baseAnimationPlayer.animation_finished
|
||||
#
|
||||
##func queue_free():
|
||||
##if is_anim:
|
||||
##await playExit()
|
||||
##super.queue_free()
|
||||
#
|
||||
#func set_styleBox(value) :
|
||||
#styleBox = value
|
||||
#queue_redraw()
|
||||
#var is_move_r = false
|
||||
#func _gui_input(event):
|
||||
#if event is InputEventScreenTouch :
|
||||
#is_move_r = event.pressed
|
||||
#if event.pressed == true:
|
||||
#clickTime = Time.get_ticks_msec()
|
||||
#clickPosition = event.position
|
||||
#pressed_true()
|
||||
#if event.pressed == false:
|
||||
#var diff = Time.get_ticks_msec() - clickTime
|
||||
#clickTime = 0
|
||||
#if event.position.distance_to(clickPosition)<2 :
|
||||
#if mouse_filter == Control.MOUSE_FILTER_STOP :
|
||||
#accept_event()
|
||||
#if diff < 800:
|
||||
#emit_signal("on_click",self)
|
||||
#if on_click_anim != null and baseAnimationPlayer != null :
|
||||
#baseAnimationPlayer.play("on_click_anim")
|
||||
#click()
|
||||
#else :
|
||||
#emit_signal("on_long_click",self)
|
||||
#long_click()
|
||||
#pressed_false()
|
||||
#func pressed_true():
|
||||
#pass
|
||||
#func pressed_false():
|
||||
#pass
|
||||
#func _process(delta):
|
||||
#if not Rect2(global_position, global_position+size).has_point(get_global_mouse_position()):
|
||||
#pressed_false()
|
||||
#func click():
|
||||
#pass
|
||||
#func long_click():
|
||||
#pass
|
||||
#
|
||||
#
|
||||
#func _draw():
|
||||
#if styleBox !=null :
|
||||
#draw_style_box(styleBox, Rect2(Vector2(0,0) , size ))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@tool
|
||||
class_name BaseControl
|
||||
extends Control
|
||||
|
||||
signal result_data(value)
|
||||
signal init_complete()
|
||||
signal load_anim_complete()
|
||||
signal on_click(_node)
|
||||
signal on_long_click(_node)
|
||||
#@export var long_time = 800
|
||||
var clickTime = 0
|
||||
var clickPosition = Vector2.ZERO
|
||||
var itemRoot : BaseControl = null
|
||||
|
||||
enum {
|
||||
RESULT_OK,
|
||||
RESULT_CANCELED
|
||||
}
|
||||
|
||||
class GResult :
|
||||
var code = RESULT_OK
|
||||
var data = null
|
||||
func _init(p_code,p_data = null):
|
||||
self.code = p_code
|
||||
self.data = p_data
|
||||
|
||||
|
||||
|
||||
@export var styleBox : StyleBox = null : set = set_styleBox
|
||||
@export var enter_anim : Animation = null
|
||||
@export var exit_anim : Animation = null
|
||||
@export var is_anim = true
|
||||
@export var on_click_anim : Animation = null
|
||||
var baseAnimationPlayer : AnimationPlayer = null
|
||||
func _ready():
|
||||
await get_tree().process_frame
|
||||
if is_anim:
|
||||
init_anim()
|
||||
playEnter()
|
||||
|
||||
await get_tree().create_timer(0.2).timeout
|
||||
init_complete.emit()
|
||||
|
||||
|
||||
func init_anim():
|
||||
if enter_anim == null and exit_anim == null :
|
||||
return
|
||||
baseAnimationPlayer = AnimationPlayer.new()
|
||||
var animationLibrary = AnimationLibrary.new()
|
||||
if enter_anim != null :
|
||||
animationLibrary.add_animation("enter",enter_anim)
|
||||
if exit_anim != null :
|
||||
animationLibrary.add_animation("exit",exit_anim)
|
||||
if on_click_anim != null:
|
||||
animationLibrary.add_animation("on_click_anim",on_click_anim)
|
||||
baseAnimationPlayer.add_animation_library("",animationLibrary)
|
||||
add_child(baseAnimationPlayer)
|
||||
#
|
||||
|
||||
func playEnter():
|
||||
if enter_anim != null and baseAnimationPlayer != null :
|
||||
baseAnimationPlayer.play("enter")
|
||||
|
||||
|
||||
|
||||
func playExit():
|
||||
if exit_anim != null and baseAnimationPlayer != null :
|
||||
baseAnimationPlayer.play("exit")
|
||||
await baseAnimationPlayer.animation_finished
|
||||
|
||||
#func queue_free():
|
||||
#if is_anim:
|
||||
#await playExit()
|
||||
#super.queue_free()
|
||||
|
||||
func set_styleBox(value) :
|
||||
styleBox = value
|
||||
queue_redraw()
|
||||
var is_move_r = false
|
||||
func _gui_input(event):
|
||||
if event is InputEventScreenTouch :
|
||||
is_move_r = event.pressed
|
||||
if event.pressed == true:
|
||||
clickTime = Time.get_ticks_msec()
|
||||
clickPosition = event.position
|
||||
pressed_true()
|
||||
if event.pressed == false:
|
||||
var diff = Time.get_ticks_msec() - clickTime
|
||||
clickTime = 0
|
||||
#if event.position.distance_to(clickPosition)<2 :
|
||||
if mouse_filter == Control.MOUSE_FILTER_STOP :
|
||||
accept_event()
|
||||
print(diff)
|
||||
if diff < 800:
|
||||
emit_signal("on_click",self)
|
||||
if on_click_anim != null and baseAnimationPlayer != null :
|
||||
baseAnimationPlayer.play("on_click_anim")
|
||||
click()
|
||||
else :
|
||||
emit_signal("on_long_click",self)
|
||||
long_click()
|
||||
pressed_false()
|
||||
func pressed_true():
|
||||
pass
|
||||
func pressed_false():
|
||||
pass
|
||||
func _process(delta):
|
||||
if not Rect2(global_position, global_position+size).has_point(get_global_mouse_position()):
|
||||
pressed_false()
|
||||
func click():
|
||||
pass
|
||||
func long_click():
|
||||
pass
|
||||
|
||||
|
||||
func _draw():
|
||||
if styleBox !=null :
|
||||
draw_style_box(styleBox, Rect2(Vector2(0,0) , size ))
|
11
Robo-Bus-A31-HMI/common/base/base_data_control.gd
Normal file
11
Robo-Bus-A31-HMI/common/base/base_data_control.gd
Normal file
@ -0,0 +1,11 @@
|
||||
@tool
|
||||
class_name BaseDataControl
|
||||
extends BaseControl
|
||||
signal data_change
|
||||
var data_index = 0
|
||||
var data = {} :
|
||||
set(value ):
|
||||
data = value
|
||||
data_update()
|
||||
func data_update():
|
||||
pass
|
10
Robo-Bus-A31-HMI/common/base/base_dialog.gd
Normal file
10
Robo-Bus-A31-HMI/common/base/base_dialog.gd
Normal file
@ -0,0 +1,10 @@
|
||||
class_name BaseDialog
|
||||
extends BaseControl
|
||||
|
||||
var cancelOutside = true
|
||||
var confirmQuit = true
|
||||
enum {
|
||||
LEFT = 0,
|
||||
RIGHT = 1,
|
||||
CENTER = 2
|
||||
}
|
20
Robo-Bus-A31-HMI/common/base/base_edit.gd
Normal file
20
Robo-Bus-A31-HMI/common/base/base_edit.gd
Normal file
@ -0,0 +1,20 @@
|
||||
class_name BaseEdit
|
||||
extends BaseControl
|
||||
|
||||
func _init():
|
||||
disable_scrollbars()
|
||||
|
||||
func disable_scrollbars():
|
||||
if is_class("TextEdit") :
|
||||
var empty_stylebox = StyleBoxEmpty.new()
|
||||
call("get_v_scroll_bar").set("theme_override_styles/scroll",empty_stylebox)
|
||||
call("get_h_scroll_bar").set("theme_override_styles/scroll",empty_stylebox)
|
||||
|
||||
func _ready():
|
||||
if is_class("LineEdit") :
|
||||
connect("text_change_rejected",Callable(self,"_on_content_text_change_rejected"))
|
||||
|
||||
func _on_content_text_change_rejected(_rejected_substring):
|
||||
ToastRouter.showToast("不可以超过 "+str(self.max_length)+" 个字")
|
||||
pass # Replace with function body.
|
||||
|
185
Robo-Bus-A31-HMI/common/base/base_network.gd
Normal file
185
Robo-Bus-A31-HMI/common/base/base_network.gd
Normal file
@ -0,0 +1,185 @@
|
||||
extends BaseNode
|
||||
|
||||
#const base_url = "http://127.0.0.1:8080"
|
||||
#const websocket_url = "ws://127.0.0.1:8889"
|
||||
|
||||
const base_url = "https://api.bairimengxingqiu.com"
|
||||
const websocket_url = "wss://pipe.bairimengxingqiu.com:11022"
|
||||
|
||||
var http_client : HTTPClient = HTTPClient.new()
|
||||
const MAX_REDIRECTS :int = 16384
|
||||
|
||||
|
||||
var COLONSPACE = ": ".to_utf8_buffer()
|
||||
var CRLF = "\r\n".to_utf8_buffer()
|
||||
var DASHDASH = "--".to_utf8_buffer()
|
||||
var boundary = "WebKitFormBoundaryePkpFF7tjBAqx29L".to_utf8_buffer()
|
||||
const SECRET = "MAGIC_GYD"
|
||||
func send(sub_url :String,params : Dictionary ={},completed:Callable =Callable(),show_err:bool =true,errCallable : Callable = Callable()) -> HTTPRequest:
|
||||
var request = HTTPRequest.new()
|
||||
request.use_threads = true
|
||||
request.max_redirects = MAX_REDIRECTS
|
||||
|
||||
request.request_completed.connect(self.send_completed.bind(request,completed,show_err,errCallable),CONNECT_ONE_SHOT)
|
||||
add_child(request)
|
||||
if not params.has("uId"):
|
||||
params["uId"] = Account.UID
|
||||
params["appName"] = "dreamdearplanet"
|
||||
params["deviceOs"] = OS.get_name()
|
||||
params["deviceOp"] = SysUtil.deviceOp()
|
||||
params["deviceType"] = SysUtil.deviceType()
|
||||
params["appVersion"] = SysUtil.appVersion()
|
||||
params["apiVersion"] = SysUtil.apiVersion()
|
||||
params["ts"] = str(TimeUtil.serverTimeSeconds())
|
||||
params["engineVersion"] = Engine.get_version_info().string
|
||||
var signStr = JsonWrapper.toJson(params)+SECRET
|
||||
params["sign"] = signStr.md5_text()
|
||||
var query_string = http_client.query_string_from_dict(params)
|
||||
print_debug("\n"+base_url+sub_url+"?"+query_string+"\n")
|
||||
var headers = ["Content-Type: application/x-www-form-urlencoded", "Content-Length: " + str(query_string.length())]
|
||||
var error = request.request(base_url+sub_url,headers, HTTPClient.METHOD_POST,query_string)
|
||||
if error != OK:
|
||||
push_error("An error occurred in the HTTP request.")
|
||||
return request
|
||||
|
||||
func send_completed(result: int, _response_code: int, _headers: PackedStringArray, body: PackedByteArray,
|
||||
request_http:Node,completed:Callable =Callable(),show_err:bool =true,errCallable : Callable = Callable()):
|
||||
request_http.queue_free()
|
||||
var data = parse_send_result(result,_response_code,body,show_err)
|
||||
if data == null :
|
||||
if errCallable.is_valid() : errCallable.call()
|
||||
return
|
||||
if completed.is_valid():
|
||||
result_data.connect(completed,CONNECT_ONE_SHOT)
|
||||
emit_signal("result_data",data)
|
||||
|
||||
func parse_send_result(result: int, _response_code: int, body: PackedByteArray,show_err:bool =true) :
|
||||
if(result != HTTPRequest.RESULT_SUCCESS || _response_code !=200 ):
|
||||
print_debug("HTTPRequest send error result : ",result," _response_code : ",_response_code)
|
||||
return null
|
||||
var json = JsonWrapper.convertJson(body.get_string_from_utf8())
|
||||
if(json.error.errno != 200):
|
||||
print_debug("HTTPRequest send error from server : ",json.error.errmsg)
|
||||
if(show_err and not json.error.usermsg.is_empty()) : ToastRouter.showToast(json.error.usermsg)
|
||||
return null
|
||||
if json.data == null:
|
||||
return {}
|
||||
return json.data
|
||||
|
||||
|
||||
func downloadFile(url :String,completed : Callable = Callable(),show_err:bool =true,errCallable : Callable = Callable()) -> HTTPRequest:
|
||||
var request = HTTPRequest.new()
|
||||
request.use_threads = true
|
||||
request.max_redirects = MAX_REDIRECTS
|
||||
|
||||
request.request_completed.connect(self.downloadFile_completed.bind(request,completed,show_err,errCallable ),CONNECT_ONE_SHOT)
|
||||
add_child(request)
|
||||
var error = request.request(url)
|
||||
if error != OK:
|
||||
print_debug("An error occurred in the HTTP request.")
|
||||
return request
|
||||
|
||||
func downloadFile_completed(result: int, _response_code: int, _headers: PackedStringArray, body: PackedByteArray,
|
||||
request_http:Node,completed :Callable = Callable(),show_err:bool =true,errCallable : Callable = Callable()):
|
||||
request_http.queue_free()
|
||||
var data = parse_download_file_result(result,_response_code,body,show_err)
|
||||
if data == null :
|
||||
if errCallable.is_valid() : errCallable.call()
|
||||
return
|
||||
if completed.is_valid():
|
||||
result_data.connect(completed,CONNECT_ONE_SHOT)
|
||||
emit_signal("result_data",data)
|
||||
|
||||
func parse_download_file_result(result: int, _response_code: int, body: PackedByteArray,_show_err:bool =true) :
|
||||
if(result != HTTPRequest.RESULT_SUCCESS || _response_code !=200 ):
|
||||
print_debug("HTTPRequest download_file error result : ",result," _response_code : ",_response_code)
|
||||
return null
|
||||
else : return body
|
||||
|
||||
func upload(token:String,data: PackedByteArray= [],key:String = "",completed : Callable = Callable(),show_err:bool =true,errCallable : Callable = Callable() ) -> HTTPRequest:
|
||||
|
||||
var request = HTTPRequest.new()
|
||||
request.use_threads = true
|
||||
request.max_redirects = MAX_REDIRECTS
|
||||
request.request_completed.connect(self.upload_completed.bind(request,completed,show_err,errCallable),CONNECT_ONE_SHOT)
|
||||
add_child(request)
|
||||
var filename = key if (key != "") else "?"
|
||||
var file_content :PackedByteArray = data
|
||||
|
||||
var body = PackedByteArray()
|
||||
body.append_array(DASHDASH)
|
||||
body.append_array(boundary)
|
||||
body.append_array(CRLF)
|
||||
body.append_array("Content-Disposition".to_utf8_buffer())
|
||||
body.append_array(COLONSPACE)
|
||||
body.append_array("form-data; name=".to_utf8_buffer())
|
||||
body.append_array("\"file\"".to_utf8_buffer())
|
||||
body.append_array("; filename=".to_utf8_buffer())
|
||||
body.append_array("\"".to_utf8_buffer())
|
||||
body.append_array(filename.to_utf8_buffer())
|
||||
body.append_array("\"".to_utf8_buffer())
|
||||
body.append_array(CRLF)
|
||||
body.append_array("Content-Type".to_utf8_buffer())
|
||||
body.append_array(COLONSPACE)
|
||||
body.append_array("application/octet-stream".to_utf8_buffer())
|
||||
body.append_array(CRLF)
|
||||
body.append_array("Content-Length".to_utf8_buffer())
|
||||
body.append_array(COLONSPACE)
|
||||
body.append_array(str(file_content.size()).to_utf8_buffer())
|
||||
body.append_array(CRLF)
|
||||
body.append_array(CRLF)
|
||||
body.append_array(file_content)
|
||||
body.append_array(CRLF)
|
||||
|
||||
body.append_array(DASHDASH)
|
||||
body.append_array(boundary)
|
||||
body.append_array(CRLF)
|
||||
|
||||
body.append_array("Content-Disposition".to_utf8_buffer())
|
||||
body.append_array(COLONSPACE)
|
||||
body.append_array("form-data; name=".to_utf8_buffer())
|
||||
body.append_array("\"token\"".to_utf8_buffer())
|
||||
body.append_array(CRLF)
|
||||
body.append_array("Content-Length".to_utf8_buffer())
|
||||
body.append_array(COLONSPACE)
|
||||
body.append_array(str(token.to_utf8_buffer().size()).to_utf8_buffer())
|
||||
body.append_array(CRLF)
|
||||
body.append_array(CRLF)
|
||||
body.append_array(token.to_utf8_buffer())
|
||||
body.append_array(CRLF)
|
||||
|
||||
body.append_array(DASHDASH)
|
||||
body.append_array(boundary)
|
||||
body.append_array(DASHDASH)
|
||||
body.append_array(CRLF)
|
||||
|
||||
var headers = [
|
||||
"Host: upload-z1.qiniup.com",
|
||||
"Content-Type: multipart/form-data; boundary=WebKitFormBoundaryePkpFF7tjBAqx29L",
|
||||
"Content-Length: "+str(body.size()),
|
||||
"Connection: keep-alive",
|
||||
"Accept-Encoding : gzip"
|
||||
]
|
||||
|
||||
var error = request.request_raw("http://upload-z1.qiniup.com" ,headers,HTTPClient.METHOD_POST,body)
|
||||
if error != OK:
|
||||
print_debug("An error occurred in the HTTP request.")
|
||||
return request
|
||||
|
||||
func upload_completed(result: int, _response_code: int, _headers: PackedStringArray, body: PackedByteArray,
|
||||
request_http:Node,completed :Callable = Callable(),show_err:bool =true,errCallable : Callable = Callable()):
|
||||
request_http.queue_free()
|
||||
var data = parse_upload_result(result,_response_code,body,show_err)
|
||||
if data == null :
|
||||
if errCallable.is_valid() : errCallable.call()
|
||||
return
|
||||
if completed.is_valid():
|
||||
result_data.connect(completed,CONNECT_ONE_SHOT)
|
||||
emit_signal("result_data",data)
|
||||
|
||||
func parse_upload_result(result: int, _response_code: int, body: PackedByteArray,_show_err:bool =true) :
|
||||
if(result != HTTPRequest.RESULT_SUCCESS || _response_code !=200 ):
|
||||
print_debug("HTTPRequest upload error result : ",result," _response_code : ",_response_code)
|
||||
return null
|
||||
var json = JsonWrapper.convertJson(body.get_string_from_utf8())
|
||||
return json.key
|
5
Robo-Bus-A31-HMI/common/base/base_node.gd
Normal file
5
Robo-Bus-A31-HMI/common/base/base_node.gd
Normal file
@ -0,0 +1,5 @@
|
||||
class_name BaseNode
|
||||
extends Node
|
||||
|
||||
|
||||
signal result_data(value)
|
10
Robo-Bus-A31-HMI/common/base/base_rich_text_label.gd
Normal file
10
Robo-Bus-A31-HMI/common/base/base_rich_text_label.gd
Normal file
@ -0,0 +1,10 @@
|
||||
class_name BaseRichTextLabel
|
||||
extends RichTextLabel
|
||||
|
||||
func _init():
|
||||
disable_scrollbars()
|
||||
|
||||
func disable_scrollbars():
|
||||
var empty_stylebox = StyleBoxEmpty.new()
|
||||
get_v_scroll_bar().set("theme_override_styles/scroll",empty_stylebox)
|
||||
|
11
Robo-Bus-A31-HMI/common/base/base_router.gd
Normal file
11
Robo-Bus-A31-HMI/common/base/base_router.gd
Normal file
@ -0,0 +1,11 @@
|
||||
class_name BaseRouter
|
||||
extends Object
|
||||
|
||||
|
||||
static func add_tree_node(node:Node):
|
||||
if is_instance_valid(Global.get_tree()):
|
||||
Global.get_tree().get_root().add_child(node)
|
||||
|
||||
static func add_child_node(context:Node,node:Node):
|
||||
if is_instance_valid(context.get_tree()):
|
||||
context.add_child(node)
|
12
Robo-Bus-A31-HMI/common/base/base_scroll_container.gd
Normal file
12
Robo-Bus-A31-HMI/common/base/base_scroll_container.gd
Normal file
@ -0,0 +1,12 @@
|
||||
@tool
|
||||
class_name BaseScrollContainer
|
||||
extends ScrollContainer
|
||||
|
||||
|
||||
func _init():
|
||||
disable_scrollbars()
|
||||
|
||||
func disable_scrollbars():
|
||||
var empty_stylebox = StyleBoxEmpty.new()
|
||||
get_v_scroll_bar().set("theme_override_styles/scroll",empty_stylebox)
|
||||
get_h_scroll_bar().set("theme_override_styles/scroll",empty_stylebox)
|
179
Robo-Bus-A31-HMI/common/base/gui_3d.gd
Normal file
179
Robo-Bus-A31-HMI/common/base/gui_3d.gd
Normal file
@ -0,0 +1,179 @@
|
||||
class_name Gui3D
|
||||
extends Node3D
|
||||
|
||||
# The size of the quad mesh itself.
|
||||
var quad_mesh_size
|
||||
|
||||
# Used for checking if the mouse was pressed inside the Area3D
|
||||
var is_mouse_held = false
|
||||
# The last non-empty mouse position. Used when dragging outside of the box.
|
||||
var last_mouse_pos3D = null
|
||||
# The last processed input touch/mouse event. To calculate relative movement.
|
||||
var last_mouse_pos2D = null
|
||||
|
||||
|
||||
@export var node_viewport_path : NodePath
|
||||
@export var node_quad_path : NodePath
|
||||
@export var node_area_path : NodePath
|
||||
|
||||
@onready var node_viewport : SubViewport = get_node(node_viewport_path)
|
||||
@onready var node_quad : MeshInstance3D = get_node(node_quad_path)
|
||||
@onready var node_area : Area3D = get_node(node_area_path)
|
||||
|
||||
func _ready():
|
||||
#TODO:fix
|
||||
# node_viewport.get_texture().flags =Texture2D.FLAG_FILTER
|
||||
|
||||
# If the material is NOT set to use billboard settings, then avoid running billboard specific code
|
||||
if node_quad.get_surface_override_material(0) == null or node_quad.get_surface_override_material(0).billboard_mode == BaseMaterial3D.BillboardMode.BILLBOARD_DISABLED:
|
||||
set_process(false)
|
||||
|
||||
#func _process(_delta):
|
||||
# # NOTE: Remove this function if you don't plan checked using billboard settings.
|
||||
# rotate_area_to_billboard()
|
||||
|
||||
func _unhandled_input(event):
|
||||
# Check if the event is a non-mouse/non-touch event
|
||||
if not node_quad.visible : return
|
||||
|
||||
var is_mouse_event = false
|
||||
# for mouse_event in [InputEventMouseButton,InputEventMouseMotion,InputEventScreenDrag,InputEventScreenTouch] :
|
||||
# if event is mouse_event :
|
||||
# is_mouse_event = true
|
||||
# break
|
||||
if event is InputEventMouseButton or event is InputEventMouseMotion or event is InputEventScreenDrag or event is InputEventScreenTouch :
|
||||
is_mouse_event = true
|
||||
|
||||
|
||||
|
||||
# Detect mouse being held to mantain event while outside of bounds. Avoid orphan clicks
|
||||
# If the event is a mouse/touch event and/or the mouse is either held or inside the area, then
|
||||
# we need to do some additional processing in the handle_mouse function before passing the event to the viewport.
|
||||
# If the event is not a mouse/touch event, then we can just pass the event directly to the viewport.
|
||||
|
||||
# Get mesh size to detect edges and make conversions. This code only support PlaneMesh and QuadMesh.
|
||||
|
||||
quad_mesh_size = node_quad.mesh.size
|
||||
if is_mouse_event :
|
||||
var mouse_pos3D = find_mouse(event.position )
|
||||
if (mouse_pos3D !=null or is_mouse_held):
|
||||
handle_mouse(event.xformed_by(Transform2D.IDENTITY) , mouse_pos3D)
|
||||
else :
|
||||
node_viewport.push_input(event)
|
||||
|
||||
# Handle mouse events inside Area3D. (Area3D.input_event had many issues with dragging)
|
||||
func handle_mouse(event,mouse_pos3D):
|
||||
|
||||
# Detect mouse being held to mantain event while outside of bounds. Avoid orphan clicks
|
||||
if event is InputEventScreenTouch:
|
||||
is_mouse_held = event.pressed
|
||||
|
||||
# Check if the mouse is outside of bounds, use last position to avoid errors
|
||||
# NOTE: mouse_exited signal was unrealiable in this situation
|
||||
if mouse_pos3D != null:
|
||||
# Convert click_pos from world coordinate space to a coordinate space relative to the Area3D node.
|
||||
# NOTE: affine_inverse accounts for the Area3D node's scale, rotation, and position in the scene!
|
||||
mouse_pos3D = node_area.global_transform.affine_inverse() * mouse_pos3D
|
||||
last_mouse_pos3D = mouse_pos3D
|
||||
else:
|
||||
mouse_pos3D = last_mouse_pos3D
|
||||
if mouse_pos3D == null:
|
||||
mouse_pos3D = Vector3.ZERO
|
||||
|
||||
# TODO: adapt to bilboard mode or avoid completely
|
||||
|
||||
# convert the relative event position from 3D to 2D
|
||||
var mouse_pos2D = Vector2(mouse_pos3D.x, -mouse_pos3D.y)
|
||||
|
||||
# Right now the event position's range is the following: (-quad_size/2) -> (quad_size/2)
|
||||
# We need to convert it into the following range: 0 -> quad_size
|
||||
mouse_pos2D.x += quad_mesh_size.x / 2
|
||||
mouse_pos2D.y += quad_mesh_size.y / 2
|
||||
# Then we need to convert it into the following range: 0 -> 1
|
||||
mouse_pos2D.x = mouse_pos2D.x / quad_mesh_size.x
|
||||
mouse_pos2D.y = mouse_pos2D.y / quad_mesh_size.y
|
||||
|
||||
# Finally, we convert the position to the following range: 0 -> viewport.size
|
||||
mouse_pos2D.x = mouse_pos2D.x * node_viewport.size.x
|
||||
mouse_pos2D.y = mouse_pos2D.y * node_viewport.size.y
|
||||
# We need to do these conversions so the event's position is in the viewport's coordinate system.
|
||||
|
||||
# Set the event's position and global position.
|
||||
event.position = mouse_pos2D
|
||||
|
||||
# If the event is a mouse motion event...
|
||||
if event is InputEventMouseMotion:
|
||||
# If there is not a stored previous position, then we'll assume there is no relative motion.
|
||||
if last_mouse_pos2D == null:
|
||||
event.relative = Vector2(0, 0)
|
||||
# If there is a stored previous position, then we'll calculate the relative position by subtracting
|
||||
# the previous position from the new position. This will give us the distance the event traveled from prev_pos
|
||||
else:
|
||||
event.relative = mouse_pos2D - last_mouse_pos2D
|
||||
# Update last_mouse_pos2D with the position we just calculated.
|
||||
last_mouse_pos2D = mouse_pos2D
|
||||
# Finally, send the processed input event to the viewport.
|
||||
node_viewport.push_input(event)
|
||||
|
||||
|
||||
|
||||
func find_mouse(viewPortPositon):
|
||||
var camera = get_viewport().get_camera_3d()
|
||||
var dist = find_further_distance_to(camera.transform.origin)
|
||||
# From camera center to the mouse position in the Area3D.
|
||||
var parameters = PhysicsRayQueryParameters3D.new()
|
||||
parameters.from = camera.project_ray_origin(viewPortPositon)
|
||||
parameters.to = parameters.from + camera.project_ray_normal(viewPortPositon) * dist
|
||||
|
||||
# Manually raycasts the area to find the mouse position.
|
||||
parameters.collision_mask = node_area.collision_layer
|
||||
parameters.collide_with_bodies = false
|
||||
parameters.collide_with_areas = true
|
||||
var result = get_world_3d().direct_space_state.intersect_ray(parameters)
|
||||
|
||||
if result.size() > 0:
|
||||
return result.position
|
||||
else:
|
||||
return null
|
||||
|
||||
|
||||
|
||||
func find_further_distance_to(origin):
|
||||
# Find edges of collision and change to global positions
|
||||
var edges = []
|
||||
edges.append(node_area.to_global(Vector3(quad_mesh_size.x / 2, quad_mesh_size.y / 2, 0)))
|
||||
edges.append(node_area.to_global(Vector3(quad_mesh_size.x / 2, -quad_mesh_size.y / 2, 0)))
|
||||
edges.append(node_area.to_global(Vector3(-quad_mesh_size.x / 2, quad_mesh_size.y / 2, 0)))
|
||||
edges.append(node_area.to_global(Vector3(-quad_mesh_size.x / 2, -quad_mesh_size.y / 2, 0)))
|
||||
|
||||
# Get the furthest distance between the camera and collision to avoid raycasting too far or too short
|
||||
var far_dist = 0
|
||||
var temp_dist
|
||||
for edge in edges:
|
||||
temp_dist = origin.distance_to(edge)
|
||||
if temp_dist > far_dist:
|
||||
far_dist = temp_dist
|
||||
|
||||
return far_dist
|
||||
|
||||
|
||||
func rotate_area_to_billboard():
|
||||
var billboard_mode = node_quad.get_surface_override_material(0).params_billboard_mode
|
||||
|
||||
# Try to match the area with the material's billboard setting, if enabled
|
||||
if billboard_mode > 0:
|
||||
# Get the camera
|
||||
var camera = get_viewport().get_camera_3d()
|
||||
# Look in the same direction as the camera
|
||||
var look = camera.to_global(Vector3(0, 0, -100)) - camera.global_transform.origin
|
||||
look = node_area.position + look
|
||||
|
||||
# Y-Billboard: Lock Y rotation, but gives bad results if the camera is tilted.
|
||||
if billboard_mode == 2:
|
||||
look = Vector3(look.x, 0, look.z)
|
||||
|
||||
node_area.look_at(look, Vector3.UP)
|
||||
|
||||
# Rotate in the Z axis to compensate camera tilt
|
||||
node_area.rotate_object_local(Vector3.BACK, camera.rotation.z)
|
||||
|
23
Robo-Bus-A31-HMI/common/cache/image_cache.gd
vendored
Normal file
23
Robo-Bus-A31-HMI/common/cache/image_cache.gd
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
class_name ImageCache
|
||||
extends BaseNode
|
||||
|
||||
|
||||
var dict : Dictionary = {}
|
||||
var list : Array = []
|
||||
func add( url :String ,tex : Texture ):
|
||||
dict[url] = tex
|
||||
list.append(url)
|
||||
|
||||
func find(url :String) -> Texture:
|
||||
if not has(url) : return null
|
||||
list.erase(url)
|
||||
list.append(url)
|
||||
return dict[url]
|
||||
|
||||
func has(url :String) -> bool:
|
||||
return dict.has(url)
|
||||
|
||||
func _process(_delta):
|
||||
if dict.size() >100 :
|
||||
dict.erase(list.pop_front())
|
||||
|
23
Robo-Bus-A31-HMI/common/cache/resource_cache.gd
vendored
Normal file
23
Robo-Bus-A31-HMI/common/cache/resource_cache.gd
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
class_name ImageCache
|
||||
extends BaseNode
|
||||
|
||||
|
||||
var dict : Dictionary = {}
|
||||
var list : Array = []
|
||||
func add( url :String ,tex : Texture ):
|
||||
dict[url] = tex
|
||||
list.append(url)
|
||||
|
||||
func find(url :String) -> Texture:
|
||||
if not has(url) : return null
|
||||
list.erase(url)
|
||||
list.append(url)
|
||||
return dict[url]
|
||||
|
||||
func has(url :String) -> bool:
|
||||
return dict.has(url)
|
||||
|
||||
func _process(_delta):
|
||||
if dict.size() >100 :
|
||||
dict.erase(list.pop_front())
|
||||
|
89
Robo-Bus-A31-HMI/common/category.gd
Normal file
89
Robo-Bus-A31-HMI/common/category.gd
Normal file
@ -0,0 +1,89 @@
|
||||
class_name Category
|
||||
extends Object
|
||||
|
||||
enum {
|
||||
MODE_MOVE,
|
||||
MODE_STATIC,
|
||||
MODE_STATIC_MOVE
|
||||
}
|
||||
|
||||
|
||||
const HEAD : String = "head"
|
||||
const SKIN : String = "skin"
|
||||
const WING : String = "wing"
|
||||
|
||||
|
||||
const BOYCLOTHES : String = "boyclothes"
|
||||
const BOYPANTS : String = "boypants"
|
||||
const BOYHAIR : String = "boyhair"
|
||||
const BOYSHOE : String = "boyshoe"
|
||||
|
||||
const BOYCHEEK : String = "boycheek"
|
||||
const BOYEYEBROW : String = "boyeyebrow"
|
||||
const BOYMOUTH : String = "boymouth"
|
||||
const BOYNOSE : String = "boynose"
|
||||
const BOYEYE : String = "boyeye"
|
||||
const BOYEYE_SOCKET : String = "boyeye_socket"#眼框
|
||||
const BOYEYE_BALL : String = "boyeye_ball"#眼球
|
||||
const BOYEYE_PUPIL : String = "boyeye_pupil"#瞳孔
|
||||
const BOYEYE_LIGHT : String = "boyeye_light"# 高光
|
||||
const BOYEYE_LASHES : String = "boyeye_lashes"# 睫毛
|
||||
|
||||
|
||||
const GIRLCLOTHES : String = "girlclothes"
|
||||
const GIRLPANTS : String = "girlpants"
|
||||
const GIRLHAIR : String = "girlhair"
|
||||
const GIRLSHOE : String = "girlshoe"
|
||||
|
||||
const GIRLCHEEK : String = "girlcheek"
|
||||
const GIRLEYEBROW : String = "girleyebrow"
|
||||
const GIRLMOUTH : String = "girlmouth"
|
||||
const GIRLNOSE : String = "girlnose"
|
||||
const GIRLEYE : String = "girleye"
|
||||
const GIRLEYE_SOCKET : String = "girleye_socket"#眼框
|
||||
const GIRLEYE_BALL : String = "girleye_ball"#眼球
|
||||
const GIRLEYE_PUPIL : String = "girleye_pupil"#瞳孔
|
||||
const GIRLEYE_LIGHT : String = "girleye_light"# 高光
|
||||
const GIRLEYE_LASHES : String = "girleye_lashes"# 睫毛
|
||||
|
||||
const POKEMON : String = "pokemon"
|
||||
|
||||
const TREE : String = "tree"
|
||||
const WORLD_TREE : String = "world_tree"
|
||||
const FRUIT_TREE : String = "fruit_tree"
|
||||
const FRUIT : String = "fruit"
|
||||
const FARM_LAND : String = "farm_land"
|
||||
const CROP : String = "crop"
|
||||
const ROCK: String = "rock"
|
||||
const FLOWER: String = "flower"
|
||||
const GRASS : String = "grass"
|
||||
const MUSHROOM: String = "mushroom"
|
||||
const STONES : String = "stones"
|
||||
|
||||
const FOOD : String = "food"
|
||||
|
||||
const BLOCK_GROUND : String = "block_grouno"
|
||||
const BLOCK_SAND : String = "block_sand"
|
||||
|
||||
const FISH : String = "fish"
|
||||
const BIRD : String = "bird"
|
||||
const CRAB : String = "crab"
|
||||
const SHELL : String = "shell"
|
||||
const STARFISH : String = "starfish"
|
||||
|
||||
#道具
|
||||
const FISHING_ROD = "fishing_rod"
|
||||
const CAPTURE = "capture"
|
||||
const SHOVEL = "shovel"
|
||||
|
||||
|
||||
const GROUNDPANEL_STATIC = "groundPanel_static"
|
||||
const GROUNDPANEL_RANDOM = "groundPanel_random"
|
||||
const SANDPANEL_STATIC = "sandPanel_static"
|
||||
const SANDPANEL_RANDOM = "sandPanel_random"
|
||||
const WATERPANEL_STATIC = "waterPanel_static"
|
||||
const WATERPANEL_RANDOM = "waterPanel_random"
|
||||
const FLYPANEL_STATIC = "flyPanel_static"
|
||||
const FLYPANEL_RANDOM = "flyPanel_random"
|
||||
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user