Beispiel #1
0
def own_charcter_move(target_scene: list):
    """
    主角寻路至目标场景
    Keyword arguments:
    target_scene -- 寻路目标场景(在地图系统下的绝对坐标)
    """
    while 1:
        character_data: game_type.Character = cache.character_data[0]
        if character_data.position != target_scene:
            (
                move_now,
                now_path_list,
                now_target_position,
                now_need_time,
            ) = character_move(0, target_scene)
            if move_now == "Null":
                break
            character_data.behavior.behavior_id = constant.Behavior.MOVE
            character_data.behavior.move_target = now_target_position
            character_data.behavior.duration = now_need_time
            character_data.state = constant.CharacterStatus.STATUS_MOVE
            update.game_update_flow(now_need_time)
        else:
            break
    cache.character_data[0].target_character_id = 0
    cache.now_panel_id = constant.Panel.IN_SCENE
Beispiel #2
0
def handle_teach_a_lesson():
    """ 处理教课指令 """
    character.init_character_behavior_start_time(0, cache.game_time)
    character_data: game_type.Character = cache.character_data[0]
    end_time = 0
    now_week = cache.game_time.weekday()
    now_time_value = cache.game_time.hour * 100 + cache.game_time.minute
    timetable_list: List[
        game_type.TeacherTimeTable] = cache.teacher_school_timetable[0]
    course = 0
    end_time = 0
    for timetable in timetable_list:
        if timetable.week_day != now_week:
            continue
        if timetable.time <= now_time_value and timetable.end_time <= now_time_value:
            now_value = int(now_time_value / 100) * 60 + now_time_value % 100
            end_value = int(
                timetable.end_time / 100) * 60 + timetable.end_time % 100
            end_time = end_value - now_value + 1
            course = timetable.course
            break
    character_data.behavior.duration = end_time
    character_data.behavior.behavior_id = constant.Behavior.TEACHING
    character_data.state = constant.CharacterStatus.STATUS_TEACHING
    character_data.behavior.course_id = course
    update.game_update_flow(end_time)
Beispiel #3
0
def handle_attend_class():
    """ 处理上课指令 """
    character.init_character_behavior_start_time(0, cache.game_time)
    character_data: game_type.Character = cache.character_data[0]
    end_time = 0
    school_id, phase = course.get_character_school_phase(0)
    now_time_value = cache.game_time.hour * 100 + cache.game_time.minute
    now_course_index = 0
    for session_id in game_config.config_school_session_data[school_id]:
        session_config = game_config.config_school_session[session_id]
        if session_config.start_time <= now_time_value and session_config.end_time >= now_time_value:
            now_value = int(now_time_value / 100) * 60 + now_time_value % 100
            end_value = int(session_config.end_time /
                            100) * 60 + session_config.end_time % 100
            end_time = end_value - now_value + 1
            now_course_index = session_config.session
            break
    now_week = cache.game_time.weekday()
    if not now_course_index:
        now_course = random.choice(
            list(
                game_config.config_school_phase_course_data[school_id][phase]))
    else:
        now_course = cache.course_time_table_data[school_id][phase][now_week][
            now_course_index]
    character_data.behavior.duration = end_time
    character_data.behavior.behavior_id = constant.Behavior.ATTEND_CLASS
    character_data.state = constant.CharacterStatus.STATUS_ATTEND_CLASS
    character_data.behavior.course_id = now_course
    update.game_update_flow(end_time)
Beispiel #4
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"
Beispiel #5
0
def handle_handle_in_handle():
    """ 处理牵手指令 """
    character.init_character_behavior_start_time(0, cache.game_time)
    character_data: game_type.Character = cache.character_data[0]
    character_data.behavior.duration = 10
    character_data.behavior.behavior_id = constant.Behavior.HAND_IN_HAND
    character_data.state = constant.CharacterStatus.STATUS_HAND_IN_HAND
    update.game_update_flow(10)
Beispiel #6
0
def handle_kiss():
    """ 处理亲吻指令 """
    character.init_character_behavior_start_time(0, cache.game_time)
    character_data: game_type.Character = cache.character_data[0]
    character_data.behavior.duration = 2
    character_data.behavior.behavior_id = constant.Behavior.KISS
    character_data.state = constant.CharacterStatus.STATUS_KISS
    update.game_update_flow(2)
Beispiel #7
0
def handle_embrace():
    """ 处理拥抱指令 """
    character.init_character_behavior_start_time(0, cache.game_time)
    character_data: game_type.Character = cache.character_data[0]
    character_data.behavior.duration = 3
    character_data.behavior.behavior_id = constant.Behavior.EMBRACE
    character_data.state = constant.CharacterStatus.STATUS_EMBRACE
    update.game_update_flow(3)
Beispiel #8
0
def handle_touch_head():
    """ 处理摸头指令 """
    character.init_character_behavior_start_time(0, cache.game_time)
    character_data = cache.character_data[0]
    character_data.behavior.duration = 2
    character_data.behavior.behavior_id = constant.Behavior.TOUCH_HEAD
    character_data.state = constant.CharacterStatus.STATUS_TOUCH_HEAD
    update.game_update_flow(2)
Beispiel #9
0
def handle_singing():
    """ 处理唱歌指令 """
    character.init_character_behavior_start_time(0, cache.game_time)
    character_data = cache.character_data[0]
    character_data.behavior.duration = 5
    character_data.behavior.behavior_id = constant.Behavior.SINGING
    character_data.state = constant.CharacterStatus.STATUS_SINGING
    update.game_update_flow(5)
Beispiel #10
0
def handle_touch_chest():
    """ 处理摸胸指令 """
    character.init_character_behavior_start_time(0, cache.game_time)
    character_data: game_type.Character = cache.character_data[0]
    character_data.behavior.duration = 10
    character_data.behavior.behavior_id = constant.Behavior.TOUCH_CHEST
    character_data.state = constant.CharacterStatus.STATUS_TOUCH_CHEST
    update.game_update_flow(10)
Beispiel #11
0
def handle_rest():
    """ 处理休息指令 """
    character.init_character_behavior_start_time(0, cache.game_time)
    character_data = cache.character_data[0]
    character_data.behavior.duration = 10
    character_data.behavior.behavior_id = constant.Behavior.REST
    character_data.state = constant.CharacterStatus.STATUS_REST
    update.game_update_flow(10)
Beispiel #12
0
def handle_play_guitar():
    """ 处理弹吉他指令 """
    character.init_character_behavior_start_time(0, cache.game_time)
    character_data = cache.character_data[0]
    character_data.behavior.duration = 10
    character_data.behavior.behavior_id = constant.Behavior.PLAY_GUITAR
    character_data.state = constant.CharacterStatus.STATUS_PLAY_GUITAR
    update.game_update_flow(10)
Beispiel #13
0
def handle_stroke():
    """ 处理抚摸指令 """
    character.init_character_behavior_start_time(0, cache.game_time)
    character_data: game_type.Character = cache.character_data[0]
    character_data.behavior.duration = 10
    character_data.behavior.behavior_id = constant.Behavior.STROKE
    character_data.state = constant.CharacterStatus.STATUS_STROKE
    update.game_update_flow(10)
Beispiel #14
0
def handle_play_piano():
    """ 处理弹钢琴指令 """
    character.init_character_behavior_start_time(0, cache.game_time)
    character_data = cache.character_data[0]
    character_data.behavior.duration = 30
    character_data.behavior.behavior_id = constant.Behavior.PLAY_PIANO
    character_data.state = constant.CharacterStatus.STATUS_PLAY_PIANO
    update.game_update_flow(30)
Beispiel #15
0
def handle_sleep():
    """ 处理睡觉指令 """
    character.init_character_behavior_start_time(0, cache.game_time)
    character_data: game_type.Character = cache.character_data[0]
    character_data.behavior.duration = 480
    character_data.behavior.behavior_id = constant.Behavior.SLEEP
    character_data.state = constant.CharacterStatus.STATUS_SLEEP
    cache.wframe_mouse.w_frame_skip_wait_mouse = 1
    update.game_update_flow(480)
Beispiel #16
0
 def eat_food(self):
     """ 食用食物 """
     update.game_update_flow(0)
     character_data: game_type.Character = cache.character_data[0]
     now_food = character_data.food_bag[self.text]
     character_data.behavior.behavior_id = constant.Behavior.EAT
     character_data.behavior.eat_food = now_food
     character_data.behavior.duration = 1
     character_data.state = constant.CharacterStatus.STATUS_EAT
     update.game_update_flow(1)
     cache.now_panel_id = constant.Panel.IN_SCENE
Beispiel #17
0
def handle_self_study():
    """ 处理自习指令 """
    character.init_character_behavior_start_time(0, cache.game_time)
    character_data: game_type.Character = cache.character_data[0]
    school_id, phase = course.get_character_school_phase(0)
    now_course_list = list(
        game_config.config_school_phase_course_data[school_id][phase])
    now_course = random.choice(now_course_list)
    character_data.behavior.behavior_id = constant.Behavior.SELF_STUDY
    character_data.behavior.duration = 10
    character_data.state = constant.CharacterStatus.STATUS_SELF_STUDY
    character_data.behavior.course_id = now_course
    update.game_update_flow(10)
Beispiel #18
0
def main_frame_func():
    """
    游戏主页控制流程
    """
    input_s = []
    flow_return = main_frame_panel.main_frame_panel()
    input_s = input_s + flow_return
    character_id = cache_contorl.character_data[0].target_character_id
    character_data = cache_contorl.character_data[character_id]
    character_name = character_data.name
    ans = game_init.askfor_all(input_s)
    py_cmd.clr_cmd()
    cache_contorl.old_flow_id = "main"
    if ans == character_name:
        cache_contorl.now_flow_id = "see_character_attr"
    else:
        if ans == "0":
            clothing.init_character_clothing_put_on()
            update.game_update_flow()
        cache_contorl.now_flow_id = main_frame_goto_data[ans]
Beispiel #19
0
def handle_rest():
    """
    处理休息指令
    """
    character.init_character_behavior_start_time(0)
    character_data = cache_contorl.character_data[0]
    character_data.behavior["Duration"] = 10
    character_data.behavior["BehaviorId"] = constant.Behavior.REST
    character_data.state = constant.CharacterStatus.STATUS_REST
    if character_data.hit_point > character_data.hit_point_max:
        character_data.hit_point = character_data.hit_point_max
    target_character = cache_contorl.character_data[
        character_data.target_character_id]
    if (target_character.state == constant.CharacterStatus.STATUS_ARDER
            and target_character.behavior["BehaviorId"]
            == constant.Behavior.SHARE_BLANKLY):
        target_character.state = constant.CharacterStatus.STATUS_REST
        character.init_character_behavior_start_time(
            character_data.target_character_id)
        target_character.behavior["Duration"] = 10
        target_character.behavior["BehaviorId"] = constant.Behavior.REST
    update.game_update_flow()
    game_time.sub_time_now(10)
    update.game_update_flow()