def init_character_position(): """ 初始化角色位置 """ for character_id in cache.character_data: character_position = cache.character_data[character_id].position character_dormitory = cache.character_data[character_id].dormitory character_dormitory = map_handle.get_map_system_path_for_str(character_dormitory) map_handle.character_move_scene(character_position, character_dormitory, character_id)
def own_charcter_move(target_scene: list): """ 主角寻路至目标场景 Keyword arguments: target_scene -- 寻路目标场景(在地图系统下的绝对坐标) """ ( move_now, now_path_list, now_target_position, now_need_time, ) = character_move(0, target_scene) if move_now == "Null": null_message = text_loading.get_text_data( constant.FilePath.MESSAGE_PATH, "30" ) era_print.normal_print(null_message) else: map_handle.character_move_scene( cache_contorl.character_data[0].position, now_target_position, 0, ) game_time.sub_time_now(now_need_time) if cache_contorl.character_data[0].position != target_scene: own_charcter_move(target_scene) update.game_update_flow() cache_contorl.character_data[0].target_character_id = 0 cache_contorl.now_flow_id = "in_scene"
def settle_move( character_id: int, now_time: datetime.datetime) -> game_type.CharacterStatusChange: """ 结算角色移动行为 Keyword arguments: character_id -- 角色id now_time -- 结算时间 Return arguments: game_type.CharacterStatusChange -- 行为改变的角色状态 """ character_data: game_type.Character = cache.character_data[character_id] character_data.target_character_id = character_id now_change_data = game_type.CharacterStatusChange() start_time = character_data.behavior.start_time add_time = int((now_time - start_time).seconds / 60) if character_data.mana_point >= add_time: character_data.mana_point -= add_time add_time -= add_time else: add_time -= character_data.mana_point now_change_data.mana_point -= character_data.mana_point character_data.mana_point = 0 character_data.hit_point -= add_time * 10 map_handle.character_move_scene( character_data.position, character_data.behavior.move_target, character_id, ) return now_change_data
def settle_move(character_id: int): """ 结算角色移动行为 Keyword arguments: character_id -- 角色id """ character_data = cache_contorl.character_data[character_id] if (character_data.behavior["MoveTarget"] == cache_contorl.character_data[0].position or character_data.position == cache_contorl.character_data[0].position): talk_cache.tg = character_data talk_cache.me = cache_contorl.character_data[0] scene_path_str = map_handle.get_map_system_path_str_for_list( character_data.behavior["MoveTarget"]) scene_data = cache_contorl.scene_data[scene_path_str] talk_cache.scene = scene_data["SceneName"] talk_cache.scene_tag = scene_data["SceneTag"] talk.handle_talk(constant.Behavior.MOVE) map_handle.character_move_scene( character_data.position, character_data.behavior["MoveTarget"], character_id, ) character_data.status["BodyFeeling"]["Hunger"] += ( character_data.behavior["Duration"] * 0.02) character_data.status["BodyFeeling"]["Thirsty"] += ( character_data.behavior["Duration"] * 0.02)
def init_game_start(): """ 用于结束角色创建正式开始游戏的初始化流程 """ character_handle.init_character_dormitory() character_handle.init_character_position() course.init_phase_course_hour() interest.init_character_interest() course.init_character_knowledge() course.init_class_teacher() course.init_class_time_table() character_position = cache_contorl.character_data["character"][0].position map_handle.character_move_scene(["0"], character_position, 0) cache_contorl.now_flow_id = "main"
def game_start(): """ 初始化游戏数据 """ character_handle.init_character_dormitory() character_handle.init_character_position() course.init_phase_course_hour() interest.init_character_interest() course.init_character_knowledge() course.init_class_teacher() course.init_class_time_table() course.init_teacher_table() cooking.init_recipes() cooking.init_restaurant_data() character_position = cache.character_data[0].position map_handle.character_move_scene(["0"], character_position, 0) cache.school_longitude = random.uniform(120.9, 122.12) cache.school_latitude = random.uniform(30.7, 31.53)
def handle_move_to_target_scene( character_id: int, add_time: int, change_data: game_type.CharacterStatusChange ): """ 移动至目标场景 Keyword arguments: character_id -- 角色id add_time -- 结算时间 change_data -- 状态变更信息记录对象 """ if not add_time: return character_data: game_type.Character = cache.character_data[character_id] if character_data.dead: return if len(character_data.behavior.move_target): map_handle.character_move_scene( character_data.position, character_data.behavior.move_target, character_id )
def move_action(character_id: int, target_path: list): """ 移动行为执行 Keyword arguments: character_id -- 角色id target_path -- 目标地点 """ character_data = cache_contorl.character_data["character"][character_id] character_data.behavior[ "BehaviorId"] = constant.CharacterStatus.STATUS_MOVE if character_data.position == target_path: character_data.behavior["StartTime"] = 0 character_data.behavior["Duration"] = 0 character_data.behavior[ "BehaviorId"] = constant.CharacterStatus.STATUS_ARDER else: if character_data.behavior["MoveTarget"] != []: end_time = game_time.get_sub_date( character_data.behavior["Duration"], 0, 0, 0, 0, character_data.behavior["StartTime"], ) time_judge = game_time.judge_date_big_or_small( end_time, cache_contorl.game_time) if time_judge == 0: map_handle.character_move_scene( character_data.position, character_data.behavior["MoveTarget"], character_id, ) character_data.behavior["StartTime"] = end_time elif time_judge == 1: need_time = (game_time.timetuple_to_datetime(end_time) - game_time.game_time_to_time_tuple( cache_contorl.game_time)).minutes character_data.behavior["Duration"] = need_time character_data.behavior[ "BehaviorId"] = constant.Behavior.SHARE_BLANKLY character_data.state = constant.CharacterStatus.STATUS_ARDER else: map_handle.character_move_scene( character_data.position, character_data.behavior["MoveTarget"], character_id, ) character_data.behavior["StartTime"] = end_time else: ( move_status, _, now_target_position, now_need_time, ) = character_move.character_move(character_id, target_path) if move_status != "Null": character_data.behavior["MoveTarget"] = now_target_position character_data.behavior["StartTime"] = cache_contorl.game_time character_data.behavior["Duration"] = now_need_time else: character_data.behavior["StartTime"] = cache_contorl.game_time character_data.state = constant.CharacterStatus.STATUS_ARDER character_data.behavior[ "BehaviorId"] = constant.Behavior.SHARE_BLANKLY cache_contorl.character_data["character"][character_id] = character_data