예제 #1
0
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)
예제 #2
0
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"
예제 #3
0
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
예제 #4
0
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)
예제 #5
0
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"
예제 #6
0
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)
예제 #7
0
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
        )
예제 #8
0
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