提交 c656d1bd 编写于 作者: 开发游戏的老王's avatar 开发游戏的老王

Godot Engine版 羊了个羊

上级
source_md5="81f9d3c14e57ac45ba0a601112cda541"
dest_md5="113957ba8685dbad843592f325066ebe"
source_md5="81f9d3c14e57ac45ba0a601112cda541"
dest_md5="113957ba8685dbad843592f325066ebe"
source_md5="47313fa4c47a9963fddd764e1ec6e4a8"
dest_md5="2ded9e7f9060e2b530aab678b135fc5b"
source_md5="49045e0f0ad6690d50506a182f7304a2"
dest_md5="f7b6e15d2e2a54f1cecd85cbda8a5863"
source_md5="49045e0f0ad6690d50506a182f7304a2"
dest_md5="f7b6e15d2e2a54f1cecd85cbda8a5863"
source_md5="a7a47afc88ae0607f8306641013b3967"
dest_md5="ec11fd879070f210433068dfd3a9f04d"
source_md5="a7a47afc88ae0607f8306641013b3967"
dest_md5="ec11fd879070f210433068dfd3a9f04d"
source_md5="b2f1d17b795c4348660c47cc847ad20e"
dest_md5="1be3bd835fcd7ae9376196b3fddee148"
source_md5="b2f1d17b795c4348660c47cc847ad20e"
dest_md5="1be3bd835fcd7ae9376196b3fddee148"
source_md5="7d824dcf784f1ae5ca62c30baf2e0dde"
[gd_resource type="DynamicFont" load_steps=2 format=2]
[sub_resource type="DynamicFontData" id=1]
font_path = "res://Assets/文道油漆黑.ttf"
[resource]
size = 30
font_data = SubResource( 1 )
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/Panel.png-375b8fbef1b9ae467742d2f2eec9811f.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Assets/Panel.png"
dest_files=[ "res://.import/Panel.png-375b8fbef1b9ae467742d2f2eec9811f.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/mahjong-tile-gray.png-a416f6e210c1911cd1d71ed095d8a8b9.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Assets/mahjong-tile-gray.png"
dest_files=[ "res://.import/mahjong-tile-gray.png-a416f6e210c1911cd1d71ed095d8a8b9.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/mahjong-tile.png-3893a318465e89aaa54ae3ca2ef263bf.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Assets/mahjong-tile.png"
dest_files=[ "res://.import/mahjong-tile.png-3893a318465e89aaa54ae3ca2ef263bf.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/refresh.png-e4cd3fd449fec902f8cb60fb25c36aa2.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Assets/refresh.png"
dest_files=[ "res://.import/refresh.png-e4cd3fd449fec902f8cb60fb25c36aa2.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
[
[1,1,1,1,1],
[1,0,0,0,1],
[1,0,0,0,1],
[0,0,0,0,0],
[0,0,0,0,0],
]
[
[0,0,0,0,0],
[0,0,0,0,0],
[0,1,1,1,1],
[0,1,0,0,1],
[1,1,1,1,1],
]
[
[0,0,0,0,0],
[1,1,1,1,1],
[1,0,0,0,0],
[1,0,0,0,0],
[1,1,1,1,1],
]
[
[0,0,0,0,0],
[0,0,0,0,0],
[1,1,1,0,1],
[1,0,1,0,1],
[1,0,1,1,1],
]
[gd_scene load_steps=8 format=2]
[ext_resource path="res://Game/Prefabs/Level.tscn" type="PackedScene" id=1]
[ext_resource path="res://Game/Prefabs/MContainer_1_C_1.tscn" type="PackedScene" id=2]
[ext_resource path="res://Game/Prefabs/MContainer_1_C_2.tscn" type="PackedScene" id=3]
[ext_resource path="res://Game/Scripts/Panel.gd" type="Script" id=4]
[ext_resource path="res://Game/Prefabs/MContainer_1_C_4.tscn" type="PackedScene" id=5]
[sub_resource type="DynamicFontData" id=1]
font_path = "res://Assets/文道油漆黑.ttf"
[sub_resource type="DynamicFont" id=2]
size = 70
font_data = SubResource( 1 )
[node name="Game" type="Node"]
[node name="Level" parent="." instance=ExtResource( 1 )]
[node name="Container_1_C_1_1" parent="Level" instance=ExtResource( 2 )]
position = Vector2( 973.076, 38.0974 )
offset_y = 0
offset_z = 5
size_z = 90
[node name="Container_1_C_1_2" parent="Level" instance=ExtResource( 2 )]
position = Vector2( 768.302, 363.514 )
offset_y = 0
offset_z = 5
size_z = 3
[node name="Container_1_C_2_1" parent="Level" instance=ExtResource( 3 )]
position = Vector2( 61.9086, 46.0346 )
size_y = 1
[node name="Container_1_C_4_C" parent="Level" instance=ExtResource( 5 )]
position = Vector2( 39.685, 161.915 )
mask_file = "res://Game/Data/Shape_C.tres"
[node name="Container_1_C_4_C2" parent="Level" instance=ExtResource( 5 )]
position = Vector2( 126.992, 422.248 )
size_x = 3
size_y = 3
[node name="Container_1_C_4_S" parent="Level" instance=ExtResource( 5 )]
position = Vector2( 174.614, 161.915 )
mask_file = "res://Game/Data/Shape_S.tres"
[node name="Container_1_C_4_D" parent="Level" instance=ExtResource( 5 )]
position = Vector2( 393.675, 161.915 )
mask_file = "res://Game/Data/Shape_D.tres"
[node name="Container_1_C_4_N" parent="Level" instance=ExtResource( 5 )]
position = Vector2( 655.596, 161.915 )
mask_file = "res://Game/Data/Shape_N.tres"
[node name="UI" type="Node2D" parent="."]
z_index = 100
__meta__ = {
"_edit_lock_": true
}
[node name="Panel" type="Panel" parent="UI"]
visible = false
margin_right = 1024.0
margin_bottom = 600.0
script = ExtResource( 4 )
__meta__ = {
"_edit_use_anchors_": false
}
[node name="Label" type="Label" parent="UI/Panel"]
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
margin_left = -250.0
margin_top = -150.0
margin_right = 250.0
margin_bottom = 150.0
custom_fonts/font = SubResource( 2 )
custom_colors/font_color = Color( 0.94902, 0.231373, 0.0470588, 1 )
text = "Game Over"
align = 1
valign = 1
[gd_scene load_steps=8 format=2]
[ext_resource path="res://Game/Prefabs/MTile.tscn" type="PackedScene" id=1]
[ext_resource path="res://Game/Scripts/BottomPanel.gd" type="Script" id=2]
[ext_resource path="res://Assets/Panel.png" type="Texture" id=3]
[ext_resource path="res://Assets/refresh.png" type="Texture" id=4]
[ext_resource path="res://Game/Scripts/Refresh.gd" type="Script" id=5]
[sub_resource type="DynamicFontData" id=1]
font_path = "res://Assets/文道油漆黑.ttf"
[sub_resource type="DynamicFont" id=2]
size = 100
font_data = SubResource( 1 )
[node name="BottomPanel" type="Node2D"]
position = Vector2( 671.024, 550.684 )
script = ExtResource( 2 )
icon_array = [ NodePath("Tile_0"), NodePath("Tile_1"), NodePath("Tile_2"), NodePath("Tile_3"), NodePath("Tile_4"), NodePath("Tile_5"), NodePath("Tile_6") ]
[node name="Panel" type="Sprite" parent="."]
position = Vector2( -140.575, 5.7027 )
scale = Vector2( 1.07646, 1 )
texture = ExtResource( 3 )
[node name="Tile_0" parent="." instance=ExtResource( 1 )]
position = Vector2( -299.951, 5 )
is_on_top = true
is_clickable = false
is_on_table = false
[node name="Tile_1" parent="." instance=ExtResource( 1 )]
position = Vector2( -248.145, 5 )
is_on_top = true
is_clickable = false
is_on_table = false
[node name="Tile_2" parent="." instance=ExtResource( 1 )]
position = Vector2( -194.217, 5 )
is_on_top = true
is_clickable = false
is_on_table = false
[node name="Tile_3" parent="." instance=ExtResource( 1 )]
position = Vector2( -140.194, 5 )
is_on_top = true
is_clickable = false
is_on_table = false
[node name="Tile_4" parent="." instance=ExtResource( 1 )]
position = Vector2( -88.294, 5 )
is_on_top = true
is_clickable = false
is_on_table = false
[node name="Tile_5" parent="." instance=ExtResource( 1 )]
position = Vector2( -33.818, 5 )
is_on_top = true
is_clickable = false
is_on_table = false
[node name="Tile_6" parent="." instance=ExtResource( 1 )]
position = Vector2( 21.326, 5 )
is_on_top = true
is_clickable = false
is_on_table = false
[node name="Refresh" type="Sprite" parent="."]
position = Vector2( 215.44, -15.1519 )
scale = Vector2( 0.2, 0.2 )
texture = ExtResource( 4 )
script = ExtResource( 5 )
[node name="Label" type="Label" parent="Refresh"]
margin_left = 254.272
margin_top = -84.7566
margin_right = 654.272
margin_bottom = 115.243
custom_fonts/font = SubResource( 2 )
text = "0"
valign = 1
__meta__ = {
"_edit_use_anchors_": false
}
[gd_scene load_steps=5 format=2]
[ext_resource path="res://Game/Scripts/Level.gd" type="Script" id=1]
[ext_resource path="res://Game/Prefabs/BottomPanel.tscn" type="PackedScene" id=2]
[sub_resource type="DynamicFontData" id=1]
font_path = "res://Assets/文道油漆黑.ttf"
[sub_resource type="DynamicFont" id=2]
size = 50
font_data = SubResource( 1 )
[node name="Level" type="Node"]
script = ExtResource( 1 )
[node name="BottomPanel" parent="." instance=ExtResource( 2 )]
[node name="CounterLabel" type="Label" parent="."]
margin_left = 340.113
margin_top = 2.37842
margin_right = 689.113
margin_bottom = 59.3784
custom_fonts/font = SubResource( 2 )
text = "0"
align = 1
valign = 1
__meta__ = {
"_edit_use_anchors_": false
}
[gd_scene load_steps=2 format=2]
[ext_resource path="res://Game/Scripts/MContainer_1_C_1.gd" type="Script" id=2]
[node name="Container_1_C_1" type="Node2D"]
script = ExtResource( 2 )
offset_x = 0
offset_y = 5
extra_offset_x = 0
extra_offset_y = 0
size_x = 1
size_y = 1
size_z = 5
[gd_scene load_steps=2 format=2]
[ext_resource path="res://Game/Scripts/MContainer_1_C_2.gd" type="Script" id=2]
[node name="Container_1_C_2" type="Node2D"]
script = ExtResource( 2 )
offset_y = 0
extra_offset_y = 0
[gd_scene load_steps=2 format=2]
[ext_resource path="res://Game/Scripts/MContainer_1_C_4.gd" type="Script" id=2]
[node name="Container_1_C_4" type="Node2D"]
script = ExtResource( 2 )
[gd_scene load_steps=7 format=2]
[ext_resource path="res://Game/Scripts/MTile.gd" type="Script" id=1]
[ext_resource path="res://Assets/mahjong-tile.png" type="Texture" id=2]
[ext_resource path="res://Assets/mahjong-tile-gray.png" type="Texture" id=3]
[sub_resource type="DynamicFontData" id=1]
font_path = "res://Assets/文道油漆黑.ttf"
[sub_resource type="DynamicFont" id=2]
size = 100
outline_size = 5
outline_color = Color( 0.0117647, 0.0666667, 0.501961, 1 )
font_data = SubResource( 1 )
[sub_resource type="Animation" id=3]
resource_name = "Shake"
tracks/0/type = "value"
tracks/0/path = NodePath(".:rotation_degrees")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0, 0.5, 1 ),
"transitions": PoolRealArray( 1, 1, 1 ),
"update": 0,
"values": [ 0.0, 360.0, 0.0 ]
}
tracks/1/type = "value"
tracks/1/path = NodePath(".:scale")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/keys = {
"times": PoolRealArray( 0, 0.5, 1 ),
"transitions": PoolRealArray( 1, 1, 1 ),
"update": 0,
"values": [ Vector2( 0.2, 0.2 ), Vector2( 0.01, 0.01 ), Vector2( 0.2, 0.2 ) ]
}
[node name="MTile" type="Node2D"]
scale = Vector2( 0.2, 0.2 )
script = ExtResource( 1 )
[node name="ColorTile" type="Sprite" parent="."]
texture = ExtResource( 2 )
[node name="NumberLabel" type="Label" parent="."]
margin_left = -75.0
margin_top = -75.0
margin_right = 75.0
margin_bottom = 75.0
custom_fonts/font = SubResource( 2 )
custom_colors/font_color = Color( 0, 0, 0, 1 )
text = "-1"
align = 1
valign = 1
__meta__ = {
"_edit_use_anchors_": false
}
[node name="GrayTile" type="Sprite" parent="."]
texture = ExtResource( 3 )
[node name="Tween" type="Tween" parent="."]
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
anims/Shake = SubResource( 3 )
[connection signal="tween_completed" from="Tween" to="." method="_on_tween_completed"]
#BottomPanel
extends Node2D
export var icon_array = []
var tile_arrary = []
func _ready():
add_to_group("bottom_panel")
refresh()
func _on_tile_received(number):
var i = tile_arrary.find(number)
var j = tile_arrary.find_last(number)
if i != j:
tile_arrary.erase(number)
tile_arrary.erase(number)
else:
tile_arrary.append(number)
tile_arrary.sort()
refresh()
func refresh():
for i in 7:
var icon = get_node(icon_array[i])
icon.visible = (i < tile_arrary.size())
if i < tile_arrary.size():
icon.set_face_number(tile_arrary[i])
if tile_arrary.size() > 7:
print("Game Over")
get_tree().call_group("game","on_gameover",true)
#Constants
class_name Constants
const tile_scn = preload("res://Game/Prefabs/MTile.tscn")
const num_of_faces = 5
class_name FileReader
static func read(path,default_data):
var data = default_data
var file = File.new()
file.open(path,File.READ)
var content :String = file.get_as_text()
if not content.empty():
data = str2var(content)
file.close()
return data
#Level
extends Node
#var counter:int = 0
var tiles = []
export var initial_tiles = {
0:10,
1:10,
2:10,
3:10,
4:10,
5:10,
6:10,
7:10,
8:10,
9:10,
10:10,
11:10,
12:10,
13:10,
14:10,
15:10
}
func _init():
for key in initial_tiles:
var num = initial_tiles[key]*3
for i in range(0,num):
tiles.append(key)
tiles.shuffle()
func _ready():
add_to_group("game")
$CounterLabel.text = String(tiles.size())
func distribute_face() -> int:
var face = -1
if tiles.size() > 0:
face = tiles.pop_front()
return face
var tiles_index = -1
func redistribute_face() -> int:
tiles_index += 1
return tiles[tiles_index]
func count_down(num):
tiles.erase(num)
$CounterLabel.text = String(tiles.size())
if tiles.size() == 0:
get_tree().call_group("game","on_game_win")
func shuffle_tiles():
tiles.shuffle()
tiles_index = -1
#MContainerBase
extends Node2D
class_name MContainerBase
export var offset_x = 44
export var offset_y = 44
export var offset_z = 0
export var extra_offset_x = 22
export var extra_offset_y = 22
export var size_x = 5
export var size_y = 5
export var size_z = 3
export var mask_file = ""
var box = []
func _ready():
add_to_group(name)
add_to_group("game")
var Mask = FileReader.read(mask_file,null)
box.resize(size_x)
for i in range(size_x):
box[i] = []
box[i].resize(size_y)
for j in range(size_y):
box[i][j] = []
box[i][j].resize(size_z)
for k in range(size_z):
if Mask == null or Mask[i][j] == 1:
box[i][j][k] = add_tile(i,j,k,get_parent().distribute_face())
else:
box[i][j][k] = null
for x in range(size_x):
for y in range(size_y):
for z in range(size_z):
check_is_on_top(x,y,z)
func check_is_on_top(x,y,z):
print("Not Defined")
func has_tile(x,y,z) -> bool:
if x < size_x and y < size_y and z < size_z and box[x][y][z] is MTile:
return true
else:
return false
func on_refresh():
var children = get_children()
for c in children:
if(c is MTile):
c.set_face_number(get_parent().redistribute_face())
func refresh_children(node:Node):
if(node is MTile):
node.set_face_number(get_parent().redistribute_face())
var children = node.get_children()
for c in children:
refresh_children(c)
func add_tile(x,y,z,face_num):
var tile = Constants.tile_scn.instance()
tile.set_face_number(face_num)
tile.z_index = z
tile.location_x = x
tile.location_y = y
tile.location_z = z
tile.set_container_name(name)
add_child(tile)
if z % 2 == 0:
tile.global_position = global_position + Vector2(x * offset_x,y*offset_y)
else:
tile.global_position = global_position + Vector2(x * offset_x + extra_offset_x,y*offset_y + extra_offset_y)
tile.global_position += Vector2(0,z*offset_z)
return tile
func on_tile_popped(x,y,z):
box[x][y][z] = null
for x in range(size_x):
for y in range(size_y):
for z in range(size_z):
check_is_on_top(x,y,z)
#1 Cover 1
extends MContainerBase
func check_is_on_top(x,y,z):
if has_tile(x,y,z):
if not has_tile(x,y,z + 1) :
(box[x][y][z] as MTile).set_is_on_top(true)
#1 Cover 2
extends MContainerBase
func check_is_on_top(x,y,z):
if has_tile(x,y,z):
if z%2 == 0:
if not has_tile(x,y,z + 1) and not has_tile(x - 1 ,y,z + 1):
(box[x][y][z] as MTile).set_is_on_top(true)
else:
if not has_tile(x,y,z + 1) and not has_tile(x + 1 ,y,z + 1):
(box[x][y][z] as MTile).set_is_on_top(true)
#1 Cover 4
extends MContainerBase
func check_is_on_top(x,y,z):
if has_tile(x,y,z):
if z%2 == 0:
if not has_tile(x,y,z + 1) and not has_tile(x - 1 ,y,z + 1) and not has_tile(x,y - 1 ,z + 1) and not has_tile(x - 1,y - 1,z + 1):
(box[x][y][z] as MTile).set_is_on_top(true)
else:
if not has_tile(x,y,z + 1) and not has_tile(x + 1 ,y,z + 1) and not has_tile(x,y + 1 ,z + 1) and not has_tile(x + 1,y + 1,z + 1):
(box[x][y][z] as MTile).set_is_on_top(true)
#MTile
extends Node2D
class_name MTile
export var face_number : int = -1
export var is_on_top:bool = false
export var is_clickable:bool = true
export var is_on_table:bool = true
var is_gameover = false
var container_name:String = ""
var location_x = -1
var location_y = -1
var location_z = -1
func _ready():
set_is_on_top(is_on_top)
set_face_number(face_number)
add_to_group("game")
func set_container_name(c_name):
container_name = c_name
func get_container_name():
return container_name
func set_face_number(number : int):
face_number = number
$NumberLabel.text = String(face_number)
func get_face_number():
return face_number
func set_is_on_top(is_top:bool):
is_on_top = is_top
$GrayTile.visible = not is_on_top
func get_is_on_top():
return is_on_top
func _input(event):
if event is InputEventMouseButton and event.pressed and is_on_table and is_clickable and event.button_index == BUTTON_LEFT and get_is_on_top() and $ColorTile.get_rect().has_point($ColorTile.to_local(event.position)) and not is_gameover:
_on_clikced()
func _on_tween_completed(object, key):
get_tree().call_group("bottom_panel","_on_tile_received",face_number)
get_tree().call_group("game","count_down",face_number)
queue_free()
func on_gameover(is_over):
is_gameover = is_over
func _on_clikced():
if container_name != "":
get_tree().call_group(container_name,"on_tile_popped",location_x,location_y,location_z)
else:
print("container_name is null")
var size = get_viewport().size
z_index = 100
$Tween.interpolate_property(self,"global_position",global_position,Vector2(size.x*0.5,size.y - 40),0.3,Tween.TRANS_LINEAR, Tween.EASE_IN_OUT)
$Tween.start()
func on_refresh():
if is_on_table:
$AnimationPlayer.play("Shake")
extends Panel
func _ready():
add_to_group("game")
func on_gameover(over):
visible = over
extends Sprite
var counter = 0
func _ready():
counter = 0
func _input(event):
if event is InputEventMouseButton and event.pressed and event.button_index == BUTTON_LEFT and get_rect().has_point(to_local(event.position)):
get_tree().call_group("game","shuffle_tiles")
get_tree().call_group("game","on_refresh")
counter += 1
$Label.text = String(counter)
[gd_resource type="Environment" load_steps=2 format=2]
[sub_resource type="ProceduralSky" id=1]
[resource]
background_mode = 2
background_sky = SubResource( 1 )
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://icon.png"
dest_files=[ "res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
; Engine configuration file.
; It's best edited using the editor UI and not directly,
; since the parameters that go here are not all obvious.
;
; Format:
; [section] ; section goes between []
; param=value ; assign values to parameters
config_version=4
_global_script_classes=[ {
"base": "Reference",
"class": "Constants",
"language": "GDScript",
"path": "res://Game/Scripts/Constants.gd"
}, {
"base": "Reference",
"class": "FileReader",
"language": "GDScript",
"path": "res://Game/Scripts/FileReader.gd"
}, {
"base": "Node2D",
"class": "MContainerBase",
"language": "GDScript",
"path": "res://Game/Scripts/MContainerBase.gd"
}, {
"base": "Node2D",
"class": "MTile",
"language": "GDScript",
"path": "res://Game/Scripts/MTile.gd"
} ]
_global_script_class_icons={
"Constants": "",
"FileReader": "",
"MContainerBase": "",
"MTile": ""
}
[application]
config/name="Sheep A Sheep"
run/main_scene="res://Game/Game.tscn"
config/icon="res://icon.png"
[display]
window/size/resizable=false
[rendering]
environment/default_environment="res://default_env.tres"
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册