diff --git a/autoload/database/script/database.gd b/autoload/database/script/database.gd new file mode 100644 index 0000000..cf2dd76 --- /dev/null +++ b/autoload/database/script/database.gd @@ -0,0 +1,268 @@ +extends Node +var texture_json_path:String="res://json/texture.json" +var texture_data:Dictionary +var card_json_path:String="res://json/card.json" +var card_data:Dictionary +var script_json_path:String="res://json/script.json" +var script_data:Dictionary +var script_type_divide_data:Array=[] +var event_json_path:String="res://json/event.json" +var event_data:Dictionary +var scene_json_path:String="res://json/scene.json" +var scene_data:Dictionary +var character_json_path:String="res://json/character.json" +var character_data:Dictionary +var map_json_path:String="res://json/map.json" +var map_data:Dictionary + +var item_json_path:String="res://json/item.json" +var item_data + + +var npc_json_path:String="res://json/npc.json" +var npc_data:Dictionary + +var word_json_path:String="res://json/word.json" +var word_data:Dictionary + +#角色修饰数据的存储路径 +var character_embellish_data_path:String="user://emblish.data" +var character_embellish_data:Dictionary={ + +} + +#加载角色修饰数据(没有则自动创建文件 +func load_character_emblish_data(): + var f=FileAccess.open(character_embellish_data_path,FileAccess.READ) + if f!=null: + var data=f.get_var() + if data is Dictionary: + character_embellish_data=data.duplicate() + f.close() + else: + f=FileAccess.open(character_embellish_data_path,FileAccess.WRITE) + f.store_var(character_embellish_data) + f.close() +#存储角色修饰数据 +func save_character_embellish_data(): + var f=FileAccess.open(character_embellish_data_path,FileAccess.WRITE) + f.store_var(character_embellish_data) + f.close() + +#添加角色修饰数据 +func add_character_embellich_data(character_id:String,embellish_name:String,data): + if character_embellish_data.has(character_id): + character_embellish_data[character_id][embellish_name]=data + else: + character_embellish_data[character_id]={ + embellish_name:data + } + save_character_embellish_data() +func _ready() -> void: + load_texture_data() + load_script_data() + load_event_data() + load_scene_data() + load_card_data() + load_character_data() + load_map_data() + load_npc_data() + load_character_emblish_data() + load_item_data() + load_word_data() +#加载当前图片数据 +func load_texture_data(): + var file=FileAccess.open(texture_json_path,FileAccess.READ) + var str=file.get_as_text() + var dictionary:Dictionary=JSON.parse_string(str) + for i in dictionary.keys(): + var texture=load(dictionary[i]) + if texture is Texture2D: + dictionary[i]=texture + texture_data=dictionary +#加载当前剧本数据 +func load_script_data(): + var file=FileAccess.open(script_json_path,FileAccess.READ) + var str=file.get_as_text() + var dictionary:Dictionary=JSON.parse_string(str) + script_type_divide_data=[{},{},{},{}] + for i in dictionary.keys(): + dictionary[i]["id"]=i + var data=dictionary[i] + if data.has("type"): + var type:int=int(data["type"]) + script_type_divide_data[type][i]=data + script_data=dictionary +#加载当前事件数据 +func load_event_data(): + var file=FileAccess.open(event_json_path,FileAccess.READ) + var str=file.get_as_text() + var dictionary:Dictionary=JSON.parse_string(str) + for i in dictionary.keys(): + dictionary[i]["id"]=i + event_data=dictionary +#加载当前场景数据 +func load_scene_data(): + var file=FileAccess.open(scene_json_path,FileAccess.READ) + var str=file.get_as_text() + var dictionary:Dictionary=JSON.parse_string(str) + for i in dictionary.keys(): + dictionary[i]["id"]=i + scene_data=dictionary + pass +#加载当前角色数据(未被修饰) +func load_character_data(): + var file=FileAccess.open(character_json_path,FileAccess.READ) + var str=file.get_as_text() + var dictionary:Dictionary=JSON.parse_string(str) + for i in dictionary.keys(): + dictionary[i]["id"]=i + #预处理 + dictionary[i]=CharacterTool.pre_process_character_data(dictionary[i]) + character_data=dictionary +#加载当前地图字典 +func load_map_data(): + var file=FileAccess.open(map_json_path,FileAccess.READ) + var str=file.get_as_text() + var dictionary:Dictionary=JSON.parse_string(str) + for i in dictionary.keys(): + dictionary[i]["id"]=i + map_data=dictionary +#加载当前NPC数据(可能废弃) +func load_npc_data(): + var file=FileAccess.open(npc_json_path,FileAccess.READ) + var str=file.get_as_text() + var dictionary:Dictionary=JSON.parse_string(str) + for i in dictionary.keys(): + dictionary[i]["id"]=i + npc_data=dictionary +#加载当前卡牌数据 +func load_card_data(): + var file=FileAccess.open(card_json_path,FileAccess.READ) + var str=file.get_as_text() + var dictionary:Dictionary=JSON.parse_string(str) + for i in dictionary.keys(): + dictionary[i]["id"]=i + card_data=dictionary + + pass +func load_item_data(): + var file=FileAccess.open(item_json_path,FileAccess.READ) + var str=file.get_as_text() + var dictionary:Dictionary=JSON.parse_string(str) + for i in dictionary.keys(): + dictionary[i]["id"]=i + item_data=dictionary +#加载词条数据 +func load_word_data(): + var file=FileAccess.open(word_json_path,FileAccess.READ) + var str=file.get_as_text() + var dictionary:Dictionary=JSON.parse_string(str) + for i in dictionary.keys(): + dictionary[i]["id"]=i + word_data=dictionary +#获取图标 +func get_texture(id:String): + if texture_data.has(id): + return texture_data[id] + else: + return null +#获取剧本数据 +func get_script_data(id:String): + if script_data.has(id): + var dictionary:Dictionary=script_data[id] + return dictionary.duplicate(true) + else: + return null +#获取全部剧本数据,数组 +func get_all_script_data(): + return script_type_divide_data.duplicate() +#获取对应ID的事件数据 +func get_event_data(id:String): + if event_data.has(id): + var dictionary:Dictionary=event_data[id] + return dictionary.duplicate(true) + else: + return null +#获取对应ID的场景数据 +func get_scene_data(id:String): + if scene_data.has(id): + var dictionary:Dictionary=scene_data[id] + return dictionary.duplicate(true) + else: + return null +#获取对应ID的场景字符串 +func get_scene_name(id:String)->String: + if scene_data.has(id): + var dictionary:Dictionary=scene_data[id] + return dictionary["name"] + else: + return "未定义场景" + + pass +#获取对应ID的角色数据 +func get_character_data(id:String): + if character_data.has(id): + var dictionary:Dictionary=character_data[id].duplicate(true) + #如果有修饰数据,则返回修饰后的数据 + if character_embellish_data.has(id): + dictionary=CharacterTool.character_embellish(dictionary,character_embellish_data[id]) + return dictionary.duplicate(true) + else: + return null +#获取全部角色数据 +func get_all_character()->Dictionary: + var all_character:Dictionary=character_data.duplicate(true) + #修饰数据 + for i in all_character.keys(): + if character_embellish_data.has(i): + all_character[i]=CharacterTool.character_embellish(all_character[i],character_embellish_data[i]) + return all_character +#获取对应ID的地图数据 +func get_map_data(id:String): + if map_data.has(id): + var dictionary:Dictionary=map_data[id] + return dictionary.duplicate(true) + else: + return null + pass +#获取NPC数据 +func get_npc_data(id:String): + if npc_data.has(id): + var dictionary:Dictionary=npc_data[id] + return dictionary.duplicate(true) + else: + return null + pass +#获取NPC名字 +func get_npc_name(id:String): + if npc_data.has(id): + var dictionary:Dictionary=npc_data[id] + if dictionary.has("name"): + return dictionary["name"] + else: + return "未命名" + else: + return "未知" + pass +#获取对应ID的卡牌数据 +func get_card_data(id:String): + if card_data.has(id): + var dictionary:Dictionary=card_data[id] + return dictionary.duplicate(true) + else: + return null +#获取物品数据 +func get_item_data(id:String): + if item_data.has(id): + var dictionary:Dictionary=item_data[id] + return ItemTool.re_process_item_data(dictionary) + else: + return null +#获取词条数据 +func get_word_data(id:String): + if word_data.has(id): + var dictionary:Dictionary=word_data[id] + return dictionary.duplicate(true) + else: + return null diff --git a/autoload/database/tscn/database.tscn b/autoload/database/tscn/database.tscn new file mode 100644 index 0000000..7b44d6d --- /dev/null +++ b/autoload/database/tscn/database.tscn @@ -0,0 +1,6 @@ +[gd_scene load_steps=2 format=3 uid="uid://bou2nkackqopj"] + +[ext_resource type="Script" path="res://autoload/database/script/database.gd" id="1_e20p4"] + +[node name="Database" type="Node"] +script = ExtResource("1_e20p4") diff --git a/autoload/global/script/global.gd b/autoload/global/script/global.gd index 3afbc20..cc9fb41 100644 --- a/autoload/global/script/global.gd +++ b/autoload/global/script/global.gd @@ -1,59 +1,45 @@ extends Node -#全局数据json的加载 -var texture_json_path:String="res://json/texture.json" -var texture_data:Dictionary -var card_json_path:String="res://json/card.json" -var card_data:Dictionary -var script_json_path:String="res://json/script.json" -var script_data:Dictionary -var script_type_divide_data:Array=[] -var event_json_path:String="res://json/event.json" -var event_data:Dictionary -var scene_json_path:String="res://json/scene.json" -var scene_data:Dictionary -var character_json_path:String="res://json/character.json" -var character_data:Dictionary -var map_json_path:String="res://json/map.json" -var map_data:Dictionary +#存档路径 +var save_file_path:String="user://save.data" +#加载的存档数据 +var save_data:Array=[] -var item_json_path:String="res://json/item.json" -var item_data - - -var npc_json_path:String="res://json/npc.json" -var npc_data:Dictionary -#角色修饰数据的存储路径 -var character_embellish_data_path:String="user://emblish.data" -var character_embellish_data:Dictionary={ - -} -#加载角色修饰数据(没有则自动创建文件 -func load_character_emblish_data(): - var f=FileAccess.open(character_embellish_data_path,FileAccess.READ) +func load_save_data(): + var f= FileAccess.open(save_file_path,FileAccess.READ) if f!=null: - var data=f.get_var() - if data is Dictionary: - character_embellish_data=data.duplicate() - f.close() + save_data=f.get_var() else: - f=FileAccess.open(character_embellish_data_path,FileAccess.WRITE) - f.store_var(character_embellish_data) - f.close() -#存储角色修饰数据 -func save_character_embellish_data(): - var f=FileAccess.open(character_embellish_data_path,FileAccess.WRITE) - f.store_var(character_embellish_data) - f.close() - -#添加角色修饰数据 -func add_character_embellich_data(character_id:String,embellish_name:String,data): - if character_embellish_data.has(character_id): - character_embellish_data[character_id][embellish_name]=data - else: - character_embellish_data[character_id]={ - embellish_name:data - } - save_character_embellish_data() + f=FileAccess.open(save_file_path,FileAccess.WRITE) + f.store_var(save_data) +#将所有存档数据保存到硬盘 +func save_save_data(): + var f=FileAccess.open(save_file_path,FileAccess.WRITE) + f.store_var(save_data) +#将当前的游戏数据以存档名n的名字添加到存储队列 +func add_now_game_to_save(n:String): + var new_save=now_game_data.duplicate(true) + new_save["name"]=n + save_data.append(new_save) + save_save_data() +#将当前的游戏数据以存档原名覆盖到第ind个存档上 +func cover_now_game_to_save(ind:int): + var n:String=save_data[ind]["name"] + var new_save=now_game_data.duplicate(true) + new_save["name"]=n + save_data[ind]=new_save + save_save_data() +#获取当前存档队列 +func get_all_save(): + return save_data.duplicate(true) +#加载第ind个存档 +func load_save(ind:int): + now_game_data=save_data[ind].duplicate() + SceneManager.change_scene_to("res://scene/game_flow.tscn") + pass +#删除第ind个存档 +func delete_save(ind:int): + save_data.pop_at(ind) + save_save_data() var system_config_data_path:String="user://config.data" #加载配置文件 func load_config(): @@ -333,7 +319,11 @@ var now_game_data:Dictionary={ "map":"map_01", "move_ability":1, "time_unix":0, - "card_in_bag":["card_03","card_03","card_02","card_02","card_01","card_01","card_01","card_01"] + "card_in_bag":["card_03","card_03","card_02","card_02","card_01","card_01","card_01","card_01"], + "condition_triger_randi_dic":{ + + } + } #获取当前局内NPC数据 func get_now_game_npc_data(NPC_id:String): @@ -343,9 +333,9 @@ func get_now_game_npc_data(NPC_id:String): return now_npc_data[NPC_id] else: #填入npc数据,并实例出售卖的道具()可以通过在get item data上施加影响来实现随机 - var n_data=get_npc_data(NPC_id) + var n_data=Database.get_npc_data(NPC_id) for i in n_data["sold_item"].size(): - n_data["sold_item"][i]=get_item_data(n_data["sold_item"][i]) + n_data["sold_item"][i]=Database.get_item_data(n_data["sold_item"][i]) now_game_data["NPC_data"][NPC_id]=n_data return now_npc_data[NPC_id] #获取当前角色与NPC的好感度 @@ -494,20 +484,10 @@ func call_condition_triger(triger_type:String,data): else: return false #记录随机的场景上一次结果,如果时间不变则直接取上一次结果 -var condition_triger_randi_dic:Dictionary={ - "scene_id":{ - "touch_name":{ - "index":{ - "last_time_triger":0000, - "last_rand_result":false, - } - } - } -} -#同上 +#记录在游戏存档内,保证加载数据不改变 func get_rand(scene_id:String,touch_name:String,index:String,condition:float)->bool: - if condition_triger_randi_dic.has(scene_id): - var scene_data=condition_triger_randi_dic[scene_id] + if now_game_data["condition_triger_randi_dic"].has(scene_id): + var scene_data=now_game_data["condition_triger_randi_dic"][scene_id] if scene_data.has(touch_name): var touch_data=scene_data[touch_name] if touch_data.has(index): @@ -517,23 +497,23 @@ func get_rand(scene_id:String,touch_name:String,index:String,condition:float)->b return triger_data["last_rand_result"] else: var dic=recreate_rand_dic(condition) - condition_triger_randi_dic[scene_id][touch_name][index]=dic + now_game_data["condition_triger_randi_dic"][scene_id][touch_name][index]=dic return dic["last_rand_result"] pass else: var dic=recreate_rand_dic(condition) - condition_triger_randi_dic[scene_id][touch_name][index]=dic + now_game_data["condition_triger_randi_dic"][scene_id][touch_name][index]=dic return dic["last_rand_result"] else: var dic=recreate_rand_dic(condition) - condition_triger_randi_dic[scene_id][touch_name]={ + now_game_data["condition_triger_randi_dic"][scene_id][touch_name]={ index:dic } return dic["last_rand_result"] pass else: var dic=recreate_rand_dic(condition) - condition_triger_randi_dic[scene_id]={ + now_game_data["condition_triger_randi_dic"][scene_id]={ touch_name:{ index:dic } @@ -572,180 +552,10 @@ func get_now_character_data(): return now_game_data["character_data"].duplicate() #设置当前角色(游戏内) func set_now_character(id:String): - now_game_data["character_data"]=get_character_data(id) + now_game_data["character_data"]=Database.get_character_data(id) func _ready() -> void: - load_texture_data() - load_script_data() - load_event_data() - load_scene_data() - load_card_data() - load_character_data() - load_map_data() - load_npc_data() - load_character_emblish_data() - load_item_data() + load_config() load_system_game_data() -#加载当前图片数据 -func load_texture_data(): - var file=FileAccess.open(texture_json_path,FileAccess.READ) - var str=file.get_as_text() - var dictionary:Dictionary=JSON.parse_string(str) - for i in dictionary.keys(): - var texture=load(dictionary[i]) - if texture is Texture2D: - dictionary[i]=texture - texture_data=dictionary -#加载当前剧本数据 -func load_script_data(): - var file=FileAccess.open(script_json_path,FileAccess.READ) - var str=file.get_as_text() - var dictionary:Dictionary=JSON.parse_string(str) - script_type_divide_data=[{},{},{},{}] - for i in dictionary.keys(): - dictionary[i]["id"]=i - var data=dictionary[i] - if data.has("type"): - var type:int=int(data["type"]) - script_type_divide_data[type][i]=data - script_data=dictionary -#加载当前事件数据 -func load_event_data(): - var file=FileAccess.open(event_json_path,FileAccess.READ) - var str=file.get_as_text() - var dictionary:Dictionary=JSON.parse_string(str) - for i in dictionary.keys(): - dictionary[i]["id"]=i - event_data=dictionary -#加载当前场景数据 -func load_scene_data(): - var file=FileAccess.open(scene_json_path,FileAccess.READ) - var str=file.get_as_text() - var dictionary:Dictionary=JSON.parse_string(str) - for i in dictionary.keys(): - dictionary[i]["id"]=i - scene_data=dictionary - pass -#加载当前角色数据(未被修饰) -func load_character_data(): - var file=FileAccess.open(character_json_path,FileAccess.READ) - var str=file.get_as_text() - var dictionary:Dictionary=JSON.parse_string(str) - for i in dictionary.keys(): - dictionary[i]["id"]=i - #预处理 - dictionary[i]=CharacterTool.pre_process_character_data(dictionary[i]) - character_data=dictionary -#加载当前地图字典 -func load_map_data(): - var file=FileAccess.open(map_json_path,FileAccess.READ) - var str=file.get_as_text() - var dictionary:Dictionary=JSON.parse_string(str) - for i in dictionary.keys(): - dictionary[i]["id"]=i - map_data=dictionary -#加载当前NPC数据(可能废弃) -func load_npc_data(): - var file=FileAccess.open(npc_json_path,FileAccess.READ) - var str=file.get_as_text() - var dictionary:Dictionary=JSON.parse_string(str) - for i in dictionary.keys(): - dictionary[i]["id"]=i - npc_data=dictionary -#加载当前卡牌数据 -func load_card_data(): - var file=FileAccess.open(card_json_path,FileAccess.READ) - var str=file.get_as_text() - var dictionary:Dictionary=JSON.parse_string(str) - for i in dictionary.keys(): - dictionary[i]["id"]=i - card_data=dictionary - - pass -func load_item_data(): - var file=FileAccess.open(item_json_path,FileAccess.READ) - var str=file.get_as_text() - var dictionary:Dictionary=JSON.parse_string(str) - for i in dictionary.keys(): - dictionary[i]["id"]=i - item_data=dictionary - -#获取图标 -func get_texture(id:String): - if texture_data.has(id): - return texture_data[id] - else: - return null -#获取剧本数据 -func get_script_data(id:String): - if script_data.has(id): - var dictionary:Dictionary=script_data[id] - return dictionary.duplicate(true) - else: - return null -#获取全部剧本数据,数组 -func get_all_script_data(): - return script_type_divide_data.duplicate() -#获取对应ID的事件数据 -func get_event_data(id:String): - if event_data.has(id): - var dictionary:Dictionary=event_data[id] - return dictionary.duplicate(true) - else: - return null -#获取对应ID的场景数据 -func get_scene_data(id:String): - if scene_data.has(id): - var dictionary:Dictionary=scene_data[id] - return dictionary.duplicate(true) - else: - return null -#获取对应ID的角色数据 -func get_character_data(id:String): - if character_data.has(id): - var dictionary:Dictionary=character_data[id].duplicate(true) - #如果有修饰数据,则返回修饰后的数据 - if character_embellish_data.has(id): - dictionary=CharacterTool.character_embellish(dictionary,character_embellish_data[id]) - return dictionary.duplicate(true) - else: - return null -#获取全部角色数据 -func get_all_character()->Dictionary: - var all_character:Dictionary=character_data.duplicate(true) - #修饰数据 - for i in all_character.keys(): - if character_embellish_data.has(i): - all_character[i]=CharacterTool.character_embellish(all_character[i],character_embellish_data[i]) - return all_character -#获取对应ID的地图数据 -func get_map_data(id:String): - if map_data.has(id): - var dictionary:Dictionary=map_data[id] - return dictionary.duplicate(true) - else: - return null - pass - -func get_npc_data(id:String): - if npc_data.has(id): - var dictionary:Dictionary=npc_data[id] - return dictionary.duplicate(true) - else: - return null - pass -#获取对应ID的卡牌数据 -func get_card_data(id:String): - if card_data.has(id): - var dictionary:Dictionary=card_data[id] - return dictionary.duplicate(true) - else: - return null - -func get_item_data(id:String): - if item_data.has(id): - var dictionary:Dictionary=item_data[id] - return dictionary.duplicate(true) - else: - return null + load_save_data() diff --git a/class/character_tool/character_tool.gd b/class/character_tool/character_tool.gd index 6af5586..c15abd6 100644 --- a/class/character_tool/character_tool.gd +++ b/class/character_tool/character_tool.gd @@ -199,6 +199,6 @@ static func get_character_with_npc_favor(character_data:Dictionary,npc_id:String if favor_data.has(npc_id): return favor_data[npc_id] else: - character_data["favor"][npc_id]=Global.get_npc_data(npc_id)["init_favor"] + character_data["favor"][npc_id]=Database.get_npc_data(npc_id)["init_favor"] return favor_data[npc_id] pass diff --git a/class/item_tool/item_tool.gd b/class/item_tool/item_tool.gd new file mode 100644 index 0000000..3a74a0f --- /dev/null +++ b/class/item_tool/item_tool.gd @@ -0,0 +1,92 @@ +class_name ItemTool +#用来进行对物品数据进行处理的工具类 +#对物品数据进行预处理(如随机品质,随机词条等项) +static func re_process_item_data(item_data:Dictionary): + var new_item_data=item_data.duplicate(true) + #随机品质 + if new_item_data.has("quality_lib"): + var quality:Array=new_item_data["quality_lib"] + + new_item_data["quality"]=get_rand_value_weight(quality) + #根据品质及词条库添加词条 + if item_data.has("word_lib"): + var word_num:int=0 + match int(new_item_data["quality"]): + 2: + if randf()>0.5: + word_num=1 + 3: + if randf()>0.5: + word_num=2 + else: + word_num=1 + 4: + if randf()>0.5: + word_num=3 + else: + word_num=2 + 5: + word_num=3 + 6: + word_num=3 + var word_lib=item_data["word_lib"] + var word_arr:Array=[] + for i in word_num: + word_arr.append(get_rand_value_weight(word_lib)) + new_item_data["word"]=word_arr + return new_item_data +static func get_weight(qalib:Dictionary): + return qalib["weight"] +static func sum_weight(acc:float,new:Dictionary): + return acc+get_weight(new) + +static func get_rand_value_weight(weight_arr:Array): + var sum_wight=weight_arr.reduce(sum_weight,0) + #迭代器 + var weight_ind:float=0 + var final_res:Dictionary + var rand=randf_range(0,sum_wight) + + for i in weight_arr: + weight_ind+=get_weight(i) + if weight_ind>=rand: + final_res=i + break + return final_res["value"] + + +static func get_name_from_item_data(item_data:Dictionary)->String: + var n:String=item_data["name"] + if item_data.has("quality"): + var quility:int=item_data["quality"] + #劣质 普通 优秀 稀有 史诗 传说 无双 + match quility: + 0: + return n+"(劣质)" + 1: + return n+"(普通)" + 2: + return n+"(优秀)" + 3: + return n+"(稀有)" + 4: + return n+"(史诗)" + 5: + return n+"(传说)" + 6: + return n+"(无双)" + _: + return n + else: + return n + pass +static func get_introduction_from_item_data(item_data:Dictionary)->String: + var res:String="" + if item_data.has("word"): + var word_arr:Array=item_data["word"] + for i in word_arr: + var word_data=Database.get_word_data(i) + res+=word_data["name"]+":"+word_data["introduction"]+"\n" + res+=item_data["introduction"] + return res + pass diff --git a/json/item.json b/json/item.json index cf98a67..a3f1ea9 100644 --- a/json/item.json +++ b/json/item.json @@ -3,10 +3,30 @@ "type":0, "allow_merge":false, "price":100, - "quality":0, + "quality_lib":[ + { + "value":4, + "weight":10 + }, + { + "value":5, + "weight":1 + } + ], + "word_lib":[ + { + "value":"test_word1", + "weight":10 + }, + { + "value":"test_word2", + "weight":2 + }, + ], "texture":"issuing", "name":"发卡(测试饰品)", "introduction":"用于测试的饰品装备,并没有什么用", + "material":{ } @@ -16,7 +36,16 @@ "type":1, "allow_merge":false, "price":100, - "quality":0, + "quality_lib":[ + { + "value":0, + "weight":10 + }, + { + "value":1, + "weight":1 + } + ], "texture":"bag", "name":"测试手部装备背包", "introduction":"用于测试的手部装备,并没有什么用", @@ -29,7 +58,16 @@ "type":2, "allow_merge":false, "price":100, - "quality":0, + "quality_lib":[ + { + "value":0, + "weight":10 + }, + { + "value":1, + "weight":1 + } + ], "texture":"clothes", "name":"测试身体", "introduction":"用于测试的身体装备,并没有什么用", @@ -43,7 +81,16 @@ "allow_merge":false, "price":100, - "quality":0, + "quality_lib":[ + { + "value":0, + "weight":10 + }, + { + "value":1, + "weight":1 + } + ], "texture":"hat", "name":"测试头部", "introduction":"用于测试的头部装备,并没有什么用", @@ -56,7 +103,16 @@ "type":4, "allow_merge":false, "price":100, - "quality":0, + "quality_lib":[ + { + "value":0, + "weight":10 + }, + { + "value":1, + "weight":1 + } + ], "texture":"knife", "name":"小刀", "introduction":"用于测试的武器,并没有什么用", @@ -69,7 +125,16 @@ "type":5, "allow_merge":true, "price":100, - "quality":0, + "quality_lib":[ + { + "value":0, + "weight":10 + }, + { + "value":1, + "weight":1 + } + ], "name":"绷带", "introduction":"用于测试的道具,并没有什么用", "material":{ @@ -80,7 +145,16 @@ "type":6, "allow_merge":false, "price":100, - "quality":0, + "quality_lib":[ + { + "value":0, + "weight":10 + }, + { + "value":1, + "weight":1 + } + ], "name":"测试技能", "texture":"knife", "introduction":"用于测试的技能,并没有什么用", diff --git a/json/scene.json b/json/scene.json index ad0377b..446c7f0 100644 --- a/json/scene.json +++ b/json/scene.json @@ -33,7 +33,7 @@ ] }, "scene_02":{ - "name":"测试场景1", + "name":"测试场景2", "map":"map_01", "texture":"test_character", "quick_event":[ @@ -78,7 +78,7 @@ ], "touch":{ - "测试互动点1":{ + "测试互动点1(18点后出现)":{ "condition":[ { "type":"time_limit", @@ -89,10 +89,12 @@ } } ], + "triger":[], + "position":[100,100], "event":"event_01" }, - "测试互动点2":{ + "测试互动点2(1970,1,2后出现)":{ "condition":[ { "type":"date_limit", @@ -108,7 +110,7 @@ "position":[200,200], "event":"event_02" }, - "测试互动点3":{ + "测试互动点3(时间变化有50%概率出现)":{ "condition":[ { "type":"rand", diff --git a/json/script.json b/json/script.json index 027fb33..d51c93f 100644 --- a/json/script.json +++ b/json/script.json @@ -16,7 +16,7 @@ "month":2, "day":1, }, - "init_scene":"scene_01", + "init_scene":"scene_02", }, "script_002":{ diff --git a/json/word.json b/json/word.json new file mode 100644 index 0000000..fdc9292 --- /dev/null +++ b/json/word.json @@ -0,0 +1,16 @@ +{ + "test_word1":{ + "name":"百分比加成测试词条", + "introduction":"体质+5%", + "percent":{ + "CON":0.05 + } + }, + "test_word2":{ + "name":"百分比加成测试词条", + "introduction":"敏捷+5%", + "percent":{ + "AGI":0.05 + } + } +} diff --git a/project.godot b/project.godot index a8605c7..dc497e2 100644 --- a/project.godot +++ b/project.godot @@ -21,6 +21,7 @@ PopUpWindow="*res://addons/popupwindow/PopUpWindow.tscn" Global="*res://autoload/global/tscn/global.tscn" SceneManager="*res://autoload/scene_manager/tscn/scene_manager.tscn" Bgm="*res://autoload/BGM/tscn/bgm.tscn" +Database="*res://autoload/database/tscn/database.tscn" [display] diff --git a/scene/bag_side_card.gd b/scene/bag_side_card.gd index 2e7466d..23b322d 100644 --- a/scene/bag_side_card.gd +++ b/scene/bag_side_card.gd @@ -11,7 +11,7 @@ var data:Dictionary={ } # Called when the node enters the scene tree for the first time. func _ready() -> void: - set_data(Global.get_item_data("item_01")) + set_data(Database.get_item_data("item_01")) pass # Replace with function body. @@ -23,7 +23,7 @@ func _input(event: InputEvent) -> void: click.emit(data) func _get_drag_data(at_position: Vector2) -> Variant: var texture_rect=TextureRect.new() - texture_rect.texture=Global.get_texture(data["texture"]) + texture_rect.texture=Database.get_texture(data["texture"]) texture_rect.expand_mode=TextureRect.EXPAND_IGNORE_SIZE texture_rect.stretch_mode=TextureRect.STRETCH_KEEP_ASPECT_CENTERED texture_rect.size=self.size @@ -33,7 +33,7 @@ func _get_drag_data(at_position: Vector2) -> Variant: return new_data func set_data(_data:Dictionary): data=_data - %face.texture=Global.get_texture(data["texture"]) + %face.texture=Database.get_texture(data["texture"]) pass func _on_mouse_entered() -> void: is_mouse_enter=true diff --git a/scene/bag_side_card_introduction.gd b/scene/bag_side_card_introduction.gd index 11284be..c1724e0 100644 --- a/scene/bag_side_card_introduction.gd +++ b/scene/bag_side_card_introduction.gd @@ -4,7 +4,8 @@ var data func _ready() -> void: if data!=null: - %bag_card_face_big.texture=Global.get_texture(data["texture"]) - %bag_card_name.text=data["name"] - %bag_card_introduction.text=data["introduction"] + %bag_card_face_big.texture=Database.get_texture(data["texture"]) + %bag_card_name.text=ItemTool.get_name_from_item_data(data) + + %bag_card_introduction.text=ItemTool.get_introduction_from_item_data(data) get_parent().add_theme_stylebox_override("panel",StyleBoxEmpty.new()) diff --git a/scene/basic_mes_item_drop_data.gd b/scene/basic_mes_item_drop_data.gd index d1bf790..71909fd 100644 --- a/scene/basic_mes_item_drop_data.gd +++ b/scene/basic_mes_item_drop_data.gd @@ -26,7 +26,7 @@ func set_data(_data): item_data=null return item_data=_data - texture.texture=Global.get_texture(_data["texture"]) + texture.texture=Database.get_texture(_data["texture"]) func _on_mouse_entered(): is_mouse_enter=true @@ -39,6 +39,6 @@ func _ready() -> void: func _input(event: InputEvent) -> void: if event.is_action_pressed("mouse_left") and is_mouse_enter: - print("xxx") + #print("xxx") Global.replace_equip_with_data(page,index,null) fresh.emit() diff --git a/scene/basic_mes_skin_card.gd b/scene/basic_mes_skin_card.gd index 50acbba..44bcb4d 100644 --- a/scene/basic_mes_skin_card.gd +++ b/scene/basic_mes_skin_card.gd @@ -23,7 +23,7 @@ var state:int=-2: pass func set_data(_data:Dictionary): data=_data - %skin_head.texture=Global.get_texture(data["skin_card_face"]) + %skin_head.texture=Database.get_texture(data["skin_card_face"]) func _on_btn_pressed() -> void: diff --git a/scene/basic_message.gd b/scene/basic_message.gd index df52099..9daada9 100644 --- a/scene/basic_message.gd +++ b/scene/basic_message.gd @@ -28,7 +28,7 @@ func init_from_data(): i.queue_free() for i in %ability_container.get_children(): i.queue_free() - %character.texture=Global.get_texture(CharacterTool.get_skin_now_use_data(data)["character"]) + %character.texture=Database.get_texture(CharacterTool.get_skin_now_use_data(data)["character"]) var basic_data=data["basic_mes"] match int(basic_data["type"]): 0: @@ -82,7 +82,7 @@ func init_from_data(): new_button.show_mes=i["introduction"] new_button.text=i["name"] %ability_container.add_child(new_button) - %character_name.text=data["name"] + %character_name.text=data["name"] var star_arr=%star_container.get_children() var star_num:int=data["star"] for i in star_arr.size(): @@ -96,7 +96,7 @@ func init_from_data(): i.queue_free() for i in data["favor"].keys(): var new_label=Label.new() - new_label.text=i+":"+str(data["favor"][i]) + new_label.text=Database.get_npc_name(i)+":"+str(data["favor"][i]) %favor.add_child(new_label) new_label.add_theme_font_size_override("font_size",26) #声望 @@ -205,8 +205,8 @@ func start_config_mes_click(mes:StartConfigMes,ind:int): mes.state=1 now_selected_mes=mes #添加开局选择修饰 - Global.add_character_embellich_data(data["id"],"start",ind) - data=Global.get_character_data(data["id"]) + Database.add_character_embellich_data(data["id"],"start",ind) + data=Database.get_character_data(data["id"]) init_from_data() pass var now_selected_skin_card:BasicMesSkinCard @@ -218,7 +218,7 @@ func connect_button(): func skin_card_click(skin:BasicMesSkinCard,skin_index:int): #添加皮肤修饰器 Global.add_character_embellich_data(data["id"],"skin",skin_index) - %character.texture=Global.get_texture(data["skin"][skin_index]["character"]) + %character.texture=Database.get_texture(data["skin"][skin_index]["character"]) now_selected_skin_card.state=0 skin.state=1 now_selected_skin_card=skin @@ -269,12 +269,12 @@ func _ready() -> void: #Global.add_item_to_bag(Global.get_item_data("item_03")) #Global.add_item_to_bag(Global.get_item_data("item_04")) #Global.add_item_to_bag(Global.get_item_data("item_05")) - Global.add_item_to_bag(Global.get_item_data("item_07")) - Global.add_item_to_bag(Global.get_item_data("item_07")) - Global.add_item_to_bag(Global.get_item_data("item_07")) - Global.add_item_to_bag(Global.get_item_data("item_07")) - Global.add_item_to_bag(Global.get_item_data("item_07")) - Global.add_item_to_bag(Global.get_item_data("item_07")) + Global.add_item_to_bag(Database.get_item_data("item_07")) + Global.add_item_to_bag(Database.get_item_data("item_07")) + Global.add_item_to_bag(Database.get_item_data("item_07")) + Global.add_item_to_bag(Database.get_item_data("item_07")) + Global.add_item_to_bag(Database.get_item_data("item_07")) + Global.add_item_to_bag(Database.get_item_data("item_07")) if is_in_game: $VBoxContainer/TextureRect/HBoxContainer/Button6.hide() diff --git a/scene/card.gd b/scene/card.gd index 314fdbe..6701b9b 100644 --- a/scene/card.gd +++ b/scene/card.gd @@ -22,7 +22,7 @@ func _on_fight_card_mouse_exited() -> void: var data:Dictionary ##设置卡牌信息 func set_data(id:String): - var d=Global.get_card_data(id) + var d=Database.get_card_data(id) if d!=null: data=d fight_card.set_data(d) diff --git a/scene/character_bag.gd b/scene/character_bag.gd index db0df5d..ee23d1b 100644 --- a/scene/character_bag.gd +++ b/scene/character_bag.gd @@ -36,7 +36,7 @@ func _on_back_btn_pressed() -> void: get_parent().change_open(false) pass # Replace with function body. func refresh(): - data=Global.get_all_character() + data=Database.get_all_character() select(-1,-1) pass diff --git a/scene/character_bag_card.gd b/scene/character_bag_card.gd index 502addd..bc80e4d 100644 --- a/scene/character_bag_card.gd +++ b/scene/character_bag_card.gd @@ -22,7 +22,7 @@ func set_character_name(n:String): pass func _ready() -> void: set_star_num(CharacterTool.get_character_star_num(data)) - set_face(Global.get_texture(CharacterTool.get_skin_now_use_data(data)["card_face"])) + set_face(Database.get_texture(CharacterTool.get_skin_now_use_data(data)["card_face"])) set_character_name(CharacterTool.get_character_name(data)) diff --git a/scene/character_select.gd b/scene/character_select.gd index d622829..7efaa0b 100644 --- a/scene/character_select.gd +++ b/scene/character_select.gd @@ -25,7 +25,7 @@ func fresh(): for i in Global.system_game_data["unlock_character"]: var new_character=CHARACTER_SELECT_CARD.instantiate() character_add_pos.add_child(new_character) - new_character.set_data(Global.get_character_data(i)) + new_character.set_data(Database.get_character_data(i)) new_character.pressed.connect(pressed) func _ready() -> void: fresh() diff --git a/scene/character_select_card.gd b/scene/character_select_card.gd index da85e87..29b67ba 100644 --- a/scene/character_select_card.gd +++ b/scene/character_select_card.gd @@ -30,14 +30,14 @@ func _on_tool_button_pressed() -> void: func _ready() -> void: - #set_data(Global.get_character_data("test_character_01")) + #set_data(Database.get_character_data("test_character_01")) pass func set_data(_data:Dictionary): data=_data var skin_data=CharacterTool.get_skin_now_use_data(data) - texture_face.texture=Global.get_texture(skin_data["card_face"]) + texture_face.texture=Database.get_texture(skin_data["card_face"]) set_star_num(data["star"]) n.text=data["name"] pass diff --git a/scene/event.gd b/scene/event.gd index b45c84e..0b84071 100644 --- a/scene/event.gd +++ b/scene/event.gd @@ -20,10 +20,10 @@ func _process(delta: float) -> void: pass #通过事件ID初始化界面 func set_event_data(id:String): - data=Global.get_event_data(id) + data=Database.get_event_data(id) for i in choice_add_pos.get_children(): i.queue_free() - event_texture.texture=Global.get_texture(data["texture"]) + event_texture.texture=Database.get_texture(data["texture"]) event_intro.text=data["text"] event_name.text=data["name"] var choice_data=data["choice"] @@ -35,7 +35,7 @@ func set_event_data(id:String): for j in condition_data: enable=enable and Global.call_condition_triger(j["type"],j["data"]) pass - print(enable) + #print(enable) var new_btn=EVENT_CHOICE_BUTTON.instantiate() choice_add_pos.add_child(new_btn) new_btn.set_data(i) @@ -54,7 +54,7 @@ func choice_click(event_data:Dictionary): change_choice(self.choice_data) pass func change_texture(texture_id:String): - event_texture.texture=Global.get_texture(texture_id) + event_texture.texture=Database.get_texture(texture_id) func change_text(text:String): event_intro.text=text @@ -68,7 +68,7 @@ func change_choice(choice_data:Array): var condition_data:Array=i["condition"] for j in condition_data: enable=enable and Global.call_condition_triger(j["type"],j["data"]) - print(enable) + #print(enable) var new_btn=EVENT_CHOICE_BUTTON.instantiate() choice_add_pos.add_child(new_btn) new_btn.set_data(i) diff --git a/scene/fight.gd b/scene/fight.gd index 9273bb8..cf179e9 100644 --- a/scene/fight.gd +++ b/scene/fight.gd @@ -15,10 +15,10 @@ func _ready() -> void: Global.now_fight_scene=self extract_card_arr=Global.get_all_card() extract_card(extract_num) - add_user(Global.get_character_data("test_character_01")) - add_character(Global.get_character_data("test_character_01")) - add_enermy(Global.get_character_data("test_character_01")) - add_enermy(Global.get_character_data("test_character_02")) + add_user(Database.get_character_data("test_character_01")) + add_character(Database.get_character_data("test_character_01")) + add_enermy(Database.get_character_data("test_character_01")) + add_enermy(Database.get_character_data("test_character_02")) pass # Replace with function body. ##抽牌 func extract_card(num:int): diff --git a/scene/fight_card.gd b/scene/fight_card.gd index 1f8c8cc..a3ed85e 100644 --- a/scene/fight_card.gd +++ b/scene/fight_card.gd @@ -6,6 +6,6 @@ extends TextureRect var data:Dictionary func set_data(_data:Dictionary): data=_data - icon.texture=Global.get_texture(_data["icon"]) + icon.texture=Database.get_texture(_data["icon"]) n.text=data["name"] pass diff --git a/scene/fight_character_card.gd b/scene/fight_character_card.gd index c07bf1d..6044889 100644 --- a/scene/fight_character_card.gd +++ b/scene/fight_character_card.gd @@ -35,11 +35,11 @@ var VIT:int=100: %VIT_bar.value=val %VIT_label.text=str(val)+"/"+str(VIT_max) func _ready() -> void: - set_data(Global.get_character_data("test_character_01")) + set_data(Database.get_character_data("test_character_01")) func set_data(_data:Dictionary): data=_data - icon.texture=Global.get_texture(CharacterTool.get_skin_now_use_data(data)["card_face"]) + icon.texture=Database.get_texture(CharacterTool.get_skin_now_use_data(data)["card_face"]) n.text=CharacterTool.get_character_name(data) fight_data=CharacterTool.cacul_fight_attribute(data) HP_max=fight_data["HP"] diff --git a/scene/fight_enermy_card.gd b/scene/fight_enermy_card.gd index 4233728..edb53fb 100644 --- a/scene/fight_enermy_card.gd +++ b/scene/fight_enermy_card.gd @@ -36,11 +36,11 @@ var VIT:int=100: %VIT_bar.value=val %VIT_label.text=str(val)+"/"+str(VIT_max) func _ready() -> void: - set_data(Global.get_character_data("test_character_01")) + set_data(Database.get_character_data("test_character_01")) func set_data(_data:Dictionary): data=_data - icon.texture=Global.get_texture(CharacterTool.get_skin_now_use_data(data)["card_face"]) + icon.texture=Database.get_texture(CharacterTool.get_skin_now_use_data(data)["card_face"]) n.text=CharacterTool.get_character_name(data) fight_data=CharacterTool.cacul_fight_attribute(data) HP_max=fight_data["HP"] diff --git a/scene/game_flow.gd b/scene/game_flow.gd index ed50da4..1225763 100644 --- a/scene/game_flow.gd +++ b/scene/game_flow.gd @@ -18,18 +18,18 @@ const GAME_FLOW_EVENT = preload("res://scene/game_flow_event.tscn") const GAME_FLOW_PLACE = preload("res://scene/game_flow_place.tscn") var scene_data:Dictionary func _ready() -> void: - set_scene("scene_01") + set_scene(Global.get_now_scene()) update_date() Global.time_changed.connect(update_date) Global.now_game_flow=self var character_data=Global.get_now_character_data() - character_texture.texture=Global.get_texture(CharacterTool.get_head(character_data)) + character_texture.texture=Database.get_texture(CharacterTool.get_head(character_data)) character_name.text=CharacterTool.get_character_name(character_data) update_game_currency() Global.game_currency_changed.connect(update_game_currency) func set_scene(id:String): - scene_data=Global.get_scene_data(id) - back.texture=Global.get_texture(scene_data["texture"]) + scene_data=Database.get_scene_data(id) + back.texture=Database.get_texture(scene_data["texture"]) for i in event.get_children(): i.queue_free() for i in place_add.get_children(): @@ -116,3 +116,13 @@ func update_game_currency(): func show_trade(NPC_id:String): %trade.set_data(NPC_id) %trade.show() + + +func _on_save_pressed() -> void: + %save_and_load.show() + %save_and_load.fresh() + pass # Replace with function body. + + +func _on_load_pressed() -> void: + pass # Replace with function body. diff --git a/scene/game_flow.tscn b/scene/game_flow.tscn index ced0c3e..6b0c64a 100644 --- a/scene/game_flow.tscn +++ b/scene/game_flow.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=27 format=3 uid="uid://bht5sd88340s5"] +[gd_scene load_steps=28 format=3 uid="uid://bht5sd88340s5"] [ext_resource type="Texture2D" uid="uid://5vyvaedcfv38" path="res://res/ui/ui_019_game_flow/tuceng1.png" id="1_gjw3y"] [ext_resource type="Script" path="res://scene/game_flow.gd" id="1_w6afk"] @@ -20,6 +20,7 @@ [ext_resource type="PackedScene" uid="uid://ccsaeb8hm5lsu" path="res://scene/map.tscn" id="19_fok85"] [ext_resource type="PackedScene" uid="uid://chh7gr3qbkr8u" path="res://scene/basic_message.tscn" id="19_xvka5"] [ext_resource type="PackedScene" uid="uid://cewsjbnll1iol" path="res://scene/trade.tscn" id="20_ql26d"] +[ext_resource type="PackedScene" uid="uid://ln0ri824gh2c" path="res://scene/save_and_load.tscn" id="21_2j45w"] [sub_resource type="Gradient" id="Gradient_4wq1v"] @@ -372,7 +373,7 @@ layout_mode = 2 size_flags_horizontal = 10 texture = ExtResource("12_ddt74") -[node name="ToolButton" parent="HBoxContainer/TextureRect" instance=ExtResource("8_q6ple")] +[node name="save" parent="HBoxContainer/TextureRect" instance=ExtResource("8_q6ple")] layout_mode = 1 [node name="TextureRect2" type="TextureRect" parent="HBoxContainer"] @@ -380,7 +381,7 @@ layout_mode = 2 size_flags_horizontal = 8 texture = ExtResource("13_ll8xc") -[node name="ToolButton" parent="HBoxContainer/TextureRect2" instance=ExtResource("8_q6ple")] +[node name="load" parent="HBoxContainer/TextureRect2" instance=ExtResource("8_q6ple")] layout_mode = 1 [node name="TextureRect3" type="TextureRect" parent="HBoxContainer"] @@ -453,5 +454,14 @@ unique_name_in_owner = true visible = false layout_mode = 1 +[node name="save_and_load" parent="." instance=ExtResource("21_2j45w")] +unique_name_in_owner = true +visible = false +layout_mode = 1 +need_save = true + [connection signal="pressed" from="hbox/TextureRect/head_btn" to="." method="_on_head_btn_pressed"] +[connection signal="pressed" from="HBoxContainer/TextureRect/save" to="." method="_on_save_pressed"] +[connection signal="pressed" from="HBoxContainer/TextureRect2/load" to="." method="_on_load_pressed"] [connection signal="pressed" from="HBoxContainer/TextureRect3/map" to="." method="_on_map_pressed"] +[connection signal="close" from="save_and_load" to="save_and_load" method="hide"] diff --git a/scene/game_flow_touch.gd b/scene/game_flow_touch.gd index 484cfaa..4f3a7b9 100644 --- a/scene/game_flow_touch.gd +++ b/scene/game_flow_touch.gd @@ -7,7 +7,7 @@ var scene_id:String var ind:String func set_data(_data:Dictionary): data=_data - name_debug.text==data["name"] + name_debug.text=data["name"] position=Vector2(data["position"][0],data["position"][1]) pass @@ -33,4 +33,10 @@ func judge(): self.hide() func _on_tool_button_pressed() -> void: + if data.has("triger"): + for i in data["triger"]: + var type=data["triger"]["type"] + var data=data["triger"]["data"] + Global.call_triger(type,data) + pass pass # Replace with function body. diff --git a/scene/game_flow_touch.tscn b/scene/game_flow_touch.tscn index 6d3b840..9b30b1d 100644 --- a/scene/game_flow_touch.tscn +++ b/scene/game_flow_touch.tscn @@ -65,6 +65,11 @@ texture = ExtResource("5_oqc0n") [node name="name_debug" type="Label" parent="."] layout_mode = 2 +theme_override_colors/font_color = Color(0, 0, 0, 1) +theme_override_font_sizes/font_size = 38 +text = "名字" +horizontal_alignment = 1 +vertical_alignment = 1 [node name="ToolButton" parent="." instance=ExtResource("7_xebjv")] layout_mode = 2 diff --git a/scene/map.gd b/scene/map.gd index 01d607b..7b36360 100644 --- a/scene/map.gd +++ b/scene/map.gd @@ -65,7 +65,7 @@ var map_data:Dictionary func set_map(id:String): set_process(true) scale_rag=1 - map_data=Global.get_map_data(id) + map_data=Database.get_map_data(id) var map_index:Array=map_data["index"] for i in map_add_pos.get_children(): if i is MapIndex: diff --git a/scene/save_and_load.gd b/scene/save_and_load.gd index a1d4176..072c130 100644 --- a/scene/save_and_load.gd +++ b/scene/save_and_load.gd @@ -1,11 +1,48 @@ extends Control - - +signal close +const SAVE_AND_LOAD_MONO = preload("res://scene/save_and_load_mono.tscn") +@export var need_save:bool=false # Called when the node enters the scene tree for the first time. func _ready() -> void: + if need_save: + %back.show() + %debug_add.show() + else: + %back.hide() + %debug_add.hide() +#刷新 +func fresh(): + for i in %mono_add_pos.get_children(): + i.queue_free() + var all_save=Global.get_all_save() + for i in all_save.size(): + var new_mono=SAVE_AND_LOAD_MONO.instantiate() + %mono_add_pos.add_child(new_mono) + new_mono.cover.connect(cover.bind(i)) + new_mono.load.connect(load_save.bind(i)) + new_mono.delete.connect(delete_save.bind(i)) + new_mono.set_data(all_save[i]) + pass + pass + +func _on_tool_button_pressed() -> void: + close.emit() pass # Replace with function body. - -# Called every frame. 'delta' is the elapsed time since the previous frame. -func _process(delta: float) -> void: +func cover(ind:int): + Global.cover_now_game_to_save(ind) + fresh() + pass +func load_save(ind:int): + Global.load_save(ind) + pass +func delete_save(ind:int): + Global.delete_save(ind) + fresh() + + +func _on_button_pressed() -> void: + Global.add_now_game_to_save("测试存档") + fresh() + pass # Replace with function body. diff --git a/scene/save_and_load.tscn b/scene/save_and_load.tscn index 0e44e09..3e80fd7 100644 --- a/scene/save_and_load.tscn +++ b/scene/save_and_load.tscn @@ -24,6 +24,7 @@ grow_vertical = 2 script = ExtResource("1_db4b7") [node name="back" type="TextureRect" parent="."] +unique_name_in_owner = true layout_mode = 1 anchors_preset = 15 anchor_right = 1.0 @@ -55,15 +56,16 @@ grow_horizontal = 2 grow_vertical = 2 horizontal_scroll_mode = 0 -[node name="VBoxContainer" type="VBoxContainer" parent="Panel/ScrollContainer"] +[node name="mono_add_pos" type="VBoxContainer" parent="Panel/ScrollContainer"] +unique_name_in_owner = true layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 0 -[node name="save_and_load_mono" parent="Panel/ScrollContainer/VBoxContainer" instance=ExtResource("3_exjxy")] +[node name="save_and_load_mono" parent="Panel/ScrollContainer/mono_add_pos" instance=ExtResource("3_exjxy")] layout_mode = 2 -[node name="save_and_load_mono2" parent="Panel/ScrollContainer/VBoxContainer" instance=ExtResource("3_exjxy")] +[node name="save_and_load_mono2" parent="Panel/ScrollContainer/mono_add_pos" instance=ExtResource("3_exjxy")] layout_mode = 2 [node name="TextureRect" type="TextureRect" parent="."] @@ -83,3 +85,13 @@ stretch_mode = 3 [node name="ToolButton" parent="TextureRect" instance=ExtResource("4_ohaxm")] layout_mode = 1 + +[node name="debug_add" type="Button" parent="."] +unique_name_in_owner = true +layout_mode = 0 +offset_right = 343.0 +offset_bottom = 115.0 +text = "添加存档(debug)" + +[connection signal="pressed" from="TextureRect/ToolButton" to="." method="_on_tool_button_pressed"] +[connection signal="pressed" from="debug_add" to="." method="_on_button_pressed"] diff --git a/scene/save_and_load_mono.gd b/scene/save_and_load_mono.gd index 959f04d..d37cbe1 100644 --- a/scene/save_and_load_mono.gd +++ b/scene/save_and_load_mono.gd @@ -1,6 +1,12 @@ extends NinePatchRect var need_save:bool=true +func set_data(data:Dictionary): + %name.text=data["name"] + %date.text=Time.get_datetime_string_from_unix_time(data["time_unix"]) + %place.text=Database.get_scene_name(data["now_scene"]) + + pass func _ready() -> void: if need_save: @@ -8,10 +14,21 @@ func _ready() -> void: else: $TextureRect3.hide() +signal cover -func _on_save_pressed() -> void: - pass # Replace with function body. - +signal load +signal delete func _on_load_pressed() -> void: + load.emit() + pass # Replace with function body. + + +func _on_cover_pressed() -> void: + cover.emit() + pass # Replace with function body. + + +func _on_delete_pressed() -> void: + delete.emit() pass # Replace with function body. diff --git a/scene/save_and_load_mono.tscn b/scene/save_and_load_mono.tscn index 782004e..ff37cfb 100644 --- a/scene/save_and_load_mono.tscn +++ b/scene/save_and_load_mono.tscn @@ -36,7 +36,8 @@ offset_top = 26.0 offset_right = 425.0 offset_bottom = 174.0 -[node name="Label" type="Label" parent="VBoxContainer"] +[node name="name" type="Label" parent="VBoxContainer"] +unique_name_in_owner = true layout_mode = 2 size_flags_vertical = 3 theme_override_font_sizes/font_size = 24 @@ -53,7 +54,8 @@ size_flags_vertical = 1 theme_override_font_sizes/font_size = 24 text = "存档时间:" -[node name="Label2" type="Label" parent="VBoxContainer/HBoxContainer"] +[node name="date" type="Label" parent="VBoxContainer/HBoxContainer"] +unique_name_in_owner = true layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 1 @@ -71,7 +73,8 @@ size_flags_vertical = 1 theme_override_font_sizes/font_size = 24 text = "存档地点:" -[node name="Label2" type="Label" parent="VBoxContainer/HBoxContainer2"] +[node name="place" type="Label" parent="VBoxContainer/HBoxContainer2"] +unique_name_in_owner = true layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 1 @@ -108,7 +111,7 @@ expand_mode = 1 stretch_mode = 5 metadata/_edit_use_anchors_ = true -[node name="ToolButton" parent="TextureRect2" instance=ExtResource("4_i5nwn")] +[node name="delete" parent="TextureRect2" instance=ExtResource("4_i5nwn")] layout_mode = 1 [node name="TextureRect3" type="TextureRect" parent="."] @@ -136,7 +139,7 @@ horizontal_alignment = 1 vertical_alignment = 1 metadata/_edit_use_anchors_ = true -[node name="save" parent="TextureRect3" instance=ExtResource("4_i5nwn")] +[node name="cover" parent="TextureRect3" instance=ExtResource("4_i5nwn")] layout_mode = 1 [node name="TextureRect4" type="TextureRect" parent="."] @@ -167,5 +170,6 @@ metadata/_edit_use_anchors_ = true [node name="load" parent="TextureRect4" instance=ExtResource("4_i5nwn")] layout_mode = 1 -[connection signal="pressed" from="TextureRect3/save" to="." method="_on_save_pressed"] +[connection signal="pressed" from="TextureRect2/delete" to="." method="_on_delete_pressed"] +[connection signal="pressed" from="TextureRect3/cover" to="." method="_on_cover_pressed"] [connection signal="pressed" from="TextureRect4/load" to="." method="_on_load_pressed"] diff --git a/scene/select.gd b/scene/select.gd index 97946c8..76c2cd1 100644 --- a/scene/select.gd +++ b/scene/select.gd @@ -37,7 +37,7 @@ func load_now_script(): var new_btn=SELECT_BUTTON.instantiate() new_btn.id=now_select_array[i]["id"] %btn_add_pos.add_child(new_btn) - new_btn.set_texture(Global.get_texture(now_select_array[i]["side_texture"])) + new_btn.set_texture(Database.get_texture(now_select_array[i]["side_texture"])) new_btn.pressed.connect(side_btn_clicked.bind(i)) btn_group.append(new_btn) side_btn_clicked(0) @@ -57,14 +57,14 @@ func side_btn_clicked(ind:int): btn.is_selected=true selected_button=btn var now_select_array:Array=data[now_selected_script] - set_script_texture(Global.get_texture(now_select_array[ind]["texture"])) + set_script_texture(Database.get_texture(now_select_array[ind]["texture"])) %script_name.text=now_select_array[ind]["name"] %script_introduction.text=now_select_array[ind]["introduction"] now_selected_script_id=btn.id pass func get_global_script_data(): - var glbdt=Global.get_all_script_data() + var glbdt=Database.get_all_script_data() data["history"]=glbdt[0].values() data["fantasy"]=glbdt[1].values() data["reality"]=glbdt[2].values() @@ -142,7 +142,7 @@ func init_button_connection(): func _on_enter_button_pressed() -> void: enter_script.emit(now_selected_script_id) - var script_data=Global.get_script_data(now_selected_script_id) + var script_data=Database.get_script_data(now_selected_script_id) if script_data!=null: Global.now_game_data["script_data"]=script_data Global.set_now_scene(script_data["init_scene"]) diff --git a/scene/skill_config_card_down.gd b/scene/skill_config_card_down.gd index 9c36a6f..de6f734 100644 --- a/scene/skill_config_card_down.gd +++ b/scene/skill_config_card_down.gd @@ -7,7 +7,7 @@ var data:Dictionary func set_data(_data:Dictionary): data=_data - %face.texture=Global.get_texture(data["texture"]) + %face.texture=Database.get_texture(data["texture"]) %name.text=data["name"] %introduction.text=data["introduction"] diff --git a/scene/skill_config_card_up.gd b/scene/skill_config_card_up.gd index 3100294..393ebb2 100644 --- a/scene/skill_config_card_up.gd +++ b/scene/skill_config_card_up.gd @@ -7,7 +7,7 @@ var data:Dictionary func set_data(_data:Dictionary): data=_data - %face.texture=Global.get_texture(data["texture"]) + %face.texture=Database.get_texture(data["texture"]) func _on_tool_button_pressed() -> void: diff --git a/scene/start_the_game.gd b/scene/start_the_game.gd index a530326..d82143a 100644 --- a/scene/start_the_game.gd +++ b/scene/start_the_game.gd @@ -59,3 +59,19 @@ func _on_button_4_pressed() -> void: func _on_button_pressed() -> void: SceneManager.change_scene_to("res://scene/main.tscn") pass # Replace with function body. + + +func _on_save_and_load_close() -> void: + %save_load_container.change_open(false) + pass # Replace with function body. + + +func _on_button_2_pressed() -> void: + %save_and_load.fresh() + %save_load_container.change_open(true) + pass # Replace with function body. + + +func _on_button_3_pressed() -> void: + %config_container.change_open(true) + pass # Replace with function body. diff --git a/scene/start_the_game.tscn b/scene/start_the_game.tscn index 4e47132..07fc0cc 100644 --- a/scene/start_the_game.tscn +++ b/scene/start_the_game.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=9 format=3 uid="uid://vd8ovfqb4bkq"] +[gd_scene load_steps=11 format=3 uid="uid://vd8ovfqb4bkq"] [ext_resource type="Script" path="res://scene/start_the_game.gd" id="1_ivvmj"] [ext_resource type="Texture2D" uid="uid://bxpr6jpaoc851" path="res://res/ui/ui_001_start/bg.png" id="1_nr2kd"] @@ -6,6 +6,8 @@ [ext_resource type="Texture2D" uid="uid://bbamxd1q6qwkd" path="res://res/ui/ui_001_start/button_0.png" id="3_ljvo4"] [ext_resource type="Texture2D" uid="uid://syusk0q7y0jv" path="res://res/ui/ui_001_start/choice.png" id="5_yiext"] [ext_resource type="PackedScene" uid="uid://ln0ri824gh2c" path="res://scene/save_and_load.tscn" id="6_8wpd4"] +[ext_resource type="Script" path="res://class/tool/DrawerContainer.gd" id="6_ljpln"] +[ext_resource type="PackedScene" uid="uid://bp04hbeued2uo" path="res://scene/config.tscn" id="8_xtg6p"] [sub_resource type="StyleBoxTexture" id="StyleBoxTexture_m4deq"] content_margin_left = 102.0 @@ -155,13 +157,49 @@ pivot_offset = Vector2(38, 42) mouse_filter = 2 texture = ExtResource("5_yiext") -[node name="save_and_load" parent="." instance=ExtResource("6_8wpd4")] -visible = false +[node name="save_load_container" type="Container" parent="."] +unique_name_in_owner = true layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 +script = ExtResource("6_ljpln") +disable_button = true +is_open = false +rag = 1.0 + +[node name="save_and_load" parent="save_load_container" instance=ExtResource("6_8wpd4")] +unique_name_in_owner = true +layout_mode = 2 + +[node name="config_container" type="Container" parent="."] +unique_name_in_owner = true +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 +script = ExtResource("6_ljpln") +button_model = 3 +disable_button = true +is_open = false +rag = 1.0 + +[node name="Config" parent="config_container" instance=ExtResource("8_xtg6p")] +unique_name_in_owner = true +layout_mode = 2 [connection signal="mouse_entered" from="MarginContainer/VBoxContainer2/VBoxContainer/Button" to="." method="_on_button_mouse_entered"] [connection signal="pressed" from="MarginContainer/VBoxContainer2/VBoxContainer/Button" to="." method="_on_button_pressed"] [connection signal="mouse_entered" from="MarginContainer/VBoxContainer2/VBoxContainer/Button2" to="." method="_on_button_2_mouse_entered"] +[connection signal="pressed" from="MarginContainer/VBoxContainer2/VBoxContainer/Button2" to="." method="_on_button_2_pressed"] [connection signal="mouse_entered" from="MarginContainer/VBoxContainer2/VBoxContainer/Button3" to="." method="_on_button_3_mouse_entered"] +[connection signal="pressed" from="MarginContainer/VBoxContainer2/VBoxContainer/Button3" to="." method="_on_button_3_pressed"] [connection signal="mouse_entered" from="MarginContainer/VBoxContainer2/VBoxContainer/Button4" to="." method="_on_button_4_mouse_entered"] [connection signal="pressed" from="MarginContainer/VBoxContainer2/VBoxContainer/Button4" to="." method="_on_button_4_pressed"] +[connection signal="close" from="save_load_container/save_and_load" to="." method="_on_save_and_load_close"] diff --git a/scene/trade.gd b/scene/trade.gd index c36950e..fcd95c2 100644 --- a/scene/trade.gd +++ b/scene/trade.gd @@ -55,7 +55,7 @@ func other_bag_card_click(arr:Array): var item_data=npc_data["sold_item"][ind] %other_item_panel.show() %self_item_panel.hide() - %other_item_icon.texture=Global.get_texture(item_data["texture"]) + %other_item_icon.texture=Database.get_texture(item_data["texture"]) %other_item_introduction.text=item_data["introduction"] if int(item_data["price"]*clamp((2-float(favor)/100),0.5,2))>Global.get_currency_game(1): %other_item_accept_btn.disable(true) @@ -69,13 +69,13 @@ func self_bag_card_click(arr:Array): var item_data=data %self_item_panel.show() %other_item_panel.hide() - %self_item_icon.texture=Global.get_texture(item_data["texture"]) + %self_item_icon.texture=Database.get_texture(item_data["texture"]) %self_item_introduction.text=item_data["introduction"] if int(item_data["price"]*clamp(0.5+float(favor)/100,0.5,1.5))>npc_data["gold"]: %self_item_accept_btn.disable(true) else: %self_item_accept_btn.disable(false) - + func _on_other_item_accept_btn_pressed() -> void: @@ -149,5 +149,7 @@ func _on_self_item_accept_btn_pressed() -> void: func _on_back_pressed() -> void: + %self_item_panel.hide() + %other_item_panel.hide() self.hide() pass # Replace with function body. diff --git a/scene/trade_card.gd b/scene/trade_card.gd index 1a5a581..e56c87a 100644 --- a/scene/trade_card.gd +++ b/scene/trade_card.gd @@ -6,9 +6,9 @@ var discount:float=0 var data:Dictionary func set_item(item_data:Dictionary): data=item_data - %face.texture=Global.get_texture(data["texture"]) + %face.texture=Database.get_texture(data["texture"]) %price.text="价格:"+str(int(data["price"]*discount)) - + func _on_trade_card_btn_spec_pressed() -> void: click.emit()