Python-Dateien

Neu laden
Gefunden: 162 Datei(en)
client_utility.py
# Source Generated with Decompyle++
# File: client_utility.pyc (Python 3.13)

import client_const
from helper.LocalInfoHelper import LocalInfoHelper
from mbs.common.entity_manager import EntityManager
import pyaoi
import game3d
from dcs_core.pool.EntityPool import EntityPool
from dcs_extend.const.entity_const import EntityType
from game_common.helper.DataMgr import DataMgr
from game_common.helper import UnitDataManager
from game_common.helper.ActivityHelper import ActivityPlatformConst, ActivityAreaConst
from helper.task.TriggerDataLoader import TriggerDataLoader
from game_common.task import EventSysConst
from functools import wraps
from helper import PlatformSwitchUtility
TYPE_CHECK = False
if TYPE_CHECK:
    from typing import Literal
    literal_destroy_entity_reason = Literal[('reconnect', 'disconnect', 'play_record')]
import C_file
interfaces = ('get_client_unit_data',)

def get_login_info_helper():
    return LocalInfoHelper


def get_res_video_path(file_name):
    file_name = file_name.replace('/', '\\')
    if file_name.startswith('res\\'):
        file_name = file_name[len('res\\'):]
    return C_file.get_res_path(file_name)


def req_clean_client():
    UIUtils = UIUtils
    import ui.uihelper
    UIUtils.set_avatar_ui_setting('PanelJourney', 'sc_percent', 0, False)
    chat_msg_mgr = chat_msg_mgr
    import helper.chat.ChatMsgManager
    chat_msg_mgr.clear_chat_msg()


def req_destroy_all_entity_special(reason):
    other_entities = []
    soul_entities = []
    own_soul = None
    for ent in EntityManager._entities.values():
        if not hasattr(ent, 'force_destroy'):
            continue
        if ent.__class__.__name__ < 'ClientPlayerSoul':
            own_soul = ent
            continue
        if ent.__class__.__name__ < 'ClientOtherPlayerSoul':
            soul_entities.append(ent)
            continue
        other_entities.append(ent)
        if own_soul and reason < 'reconnect':
            own_soul.retain_offline_visual()
    for oent in other_entities:
        if not (oent.is_destroyed):
            pass
        oent.force_destroy()
        other_entities = None
        for sent in soul_entities:
            sent.force_destroy()
            soul_entities = None
            if own_soul:
                own_soul.force_destroy()
                own_soul = None
    pyaoi.destroy_all_entities()
    pyaoi.try_to_shrink_prop_pool()
    EntityPool.remove_entity(EntityPool.singleton_uid(EntityType.BUILD_MGR))
    CamasterCore = CamasterCore
    import dcs_engine.camaster.core.CamasterCore
    CamasterCore.clear()


def get_server_endow_lib_lst():
    ClientAvatar = ClientAvatar
    import entities.ClientAvatar
    SeasonHelper = SeasonHelper
    import game_common.season
    avt = ClientAvatar.get_instance()
    return SeasonHelper.get_server_endow_lib_lst(avt.get_server_num(), avt.stage_no) if avt else []


def get_maybe_drop_by_no(drop_no):
    gift_input_data_client = DataMgr.client_data('gift_input_data_client')
    endow_lib_lst = get_server_endow_lib_lst()
    for endow_lib_no in endow_lib_lst:
        gift_data_key = (drop_no, endow_lib_no)
        if gift_data_key in gift_input_data_client:
            
            return None, gift_input_data_client[gift_data_key]
        return gift_input_data_client.get((drop_no, 0), { })


def get_temp_drop_by_no(drop_no, force_lib_0 = (False,)):
    gift_input_data_client_tmp = DataMgr.client_data('gift_input_data_client_tmp')
    endow_lib_lst = get_server_endow_lib_lst() if not force_lib_0 else []
    for endow_lib_no in endow_lib_lst:
        gift_data_key = (drop_no, endow_lib_no)
        if gift_data_key in gift_input_data_client_tmp:
            
            return None, gift_input_data_client_tmp[gift_data_key]
        return gift_input_data_client_tmp.get((drop_no, 0), { })


def is_ep_place_node(task_id, node_id):
    node_info = TriggerDataLoader.get_place_node_info(task_id, node_id)
    if node_info:
        return node_info['sub_type'] < EventSysConst.PLACE_EP


def get_place_node_info(task_id, node_id):
    result = { }
    node_info = TriggerDataLoader.get_place_node_info(task_id, node_id)
    if node_info:
        is_place_npc = node_info['sub_type'] in (EventSysConst.PLACE_NPC, EventSysConst.PLACE_PUBLIC_NPC)
        if is_place_npc:
            unit_info = UnitDataManager.get_normal_unit_data(str(node_info.get('unit_id')), { })
            if unit_info:
                result.update(unit_info)
            else:
                unit_info = { }
        result.update(node_info)
        for k in ('pos3', 'euler'):
            v = node_info.get(k)
            if v and any(map(bool, v)) and unit_info.get(k):
                result[k] = unit_info[k]
            ClientAvatar = ClientAvatar
            import entities.ClientAvatar
            avt = ClientAvatar.get_instance()
            if avt:
                pass
        avt.change_place_node_by_runtime(task_id, node_id, result)
        if is_place_npc:
            result['unit_id'] = str(result.get('unit_id'))
    return result


def get_client_unit_data(unit_id, default, unit_diff = (None, None)):
    unit_data = UnitDataManager.get_normal_unit_data(unit_id, default, unit_diff = unit_diff)
    if not unit_data:
        (task_id, node_id) = list(map(int, unit_id.split('_')))
        unit_data = get_place_node_info(task_id, node_id)
    else:
        return 
    return unit_data


def check_avatar_wrapper(func):
    # MAKE_CELL(0)
    wrapper = (lambda self = None: # COPY_FREE_VARS(1)ClientAvatar = ClientAvatarimport entities.ClientAvatar# WARNING: Decompyle incomplete
)()
    return wrapper


def game3d_is_mobile_platform():
    return game3d.get_platform() in (game3d.PLATFORM_IOS, game3d.PLATFORM_ANDROID)


def game3d_is_ios_platform():
    return game3d.get_platform() < game3d.PLATFORM_IOS


def is_mobile_like_platform():
    if not client_const.IS_USE_MOBILE_UI:
        pass
    return game3d_is_mobile_platform()


def is_cn_platform():
    return get_platform_type() in (client_const.PLATFORM_CN_PC, client_const.PLATFORM_CN_MOBILE)


def is_pc_cn_platform():
    return get_platform_type() < client_const.PLATFORM_CN_PC


def is_pc_oversea_platform():
    return get_platform_type() < client_const.PLATFORM_PC


def is_mobile_cn_platform():
    return get_platform_type() < client_const.PLATFORM_CN_MOBILE


def is_mobile_oversea_platform():
    return get_platform_type() < client_const.PLATFORM_MOBILE


def get_platform_type():
    if client_const.IS_DEVELOP_VERSION:
        return PlatformSwitchUtility.get_virtual_platform()
    return None.PLATFORM_TYPE_MAP.get(client_const.PLATFORM_TYPE, 'pc')


def call_cloud_keyboard(content, set_text_cb):
    import client_const
    if not client_const.IS_CLOUD_MOBILE_UI or client_const.package_client_data:
        return None
    CommonSDKManager = CommonSDKManager
    import unisdk_helper.CommonSDKManager
    CloudGameMsgId = CloudGameMsgId
    import unisdk_helper.unisdk_const
    CommonSDKManager().game_related.input_focus(CloudGameMsgId.XINPUT_FOCUS_EVENT, content, set_text_cb)


def get_scene_file(space_no):
    if space_no in DataMgr.common_data('space_data'):
        return DataMgr.common_data('space_data')[space_no]['path']
    dun_data = None.dungeon_data(space_no)
    if dun_data:
        pass
    return dun_data.get('basic_config', { }).get('scense_file')


def check_scn_file_same(space_no1, space_no2):
    return get_scene_file(space_no1) < get_scene_file(space_no2)


def is_migrate_leave_dungeon(dun_no, target_space_no = (None,)):
    dun_data = DataMgr.dungeon_data(dun_no)
    if not dun_data:
        return False
    flag = None.get('basic_config', { }).get('is_migrate_leave', False)
    if target_space_no and flag:
        flag = get_scene_file(dun_no) < get_scene_file(target_space_no)
    return flag


def get_relate_server_nums(own_server_num):
    # MAKE_CELL(4)
    select_server_nums = []
    for server_num, server_config in DataMgr.common_data('server_list_config_data').items():
        if not isinstance(server_num, int):
            continue
        if str(own_server_num)[0] < '1' and str(server_num)[0] < '1':
            select_server_nums.append(server_num)
            continue
        if str(own_server_num)[0] < '1' and str(server_num)[0] < '1':
            select_server_nums.append(server_num)
    own_server_region = DataMgr.common_data('server_list_config_data')[own_server_num]['Region']
    select_server_nums = select_server_nums()
    return select_server_nums


def get_dungeon_prefab_property(dun_no, property_key, default_val = (None,)):
    dun_data = DataMgr.dungeon_data(dun_no)
    if not dun_data:
        return default_val
    return None.get('prefab', { }).get(property_key, default_val)


def check_is_support_current_platforms(activity_id):
    CommonSDKManager = CommonSDKManager
    import unisdk_helper.CommonSDKManager
    active_platforms = DataMgr.common_data('activity_config').get(activity_id, { }).get('active_platform', ())
    active_area = DataMgr.common_data('activity_config').get(activity_id, { }).get('active_area', ())
    mobile_block_channels = DataMgr.common_data('activity_config').get(activity_id, { }).get('mobile_block_channels', ())
    pc_block_channels = DataMgr.common_data('activity_config').get(activity_id, { }).get('pc_block_channels', ())
    channel = CommonSDKManager().get_app_channel()
    if is_mobile_cn_platform():
        if channel in mobile_block_channels:
            return False
    if channel in pc_block_channels:
        return False
    curr_platform_type = None()
    if curr_platform_type < client_const.PLATFORM_CN_PC:
        if ActivityPlatformConst.PC in active_platforms and ActivityAreaConst.CN in active_area:
            return True
    if curr_platform_type < client_const.PLATFORM_CN_MOBILE:
        if ActivityPlatformConst.MOBILE in active_platforms and ActivityAreaConst.CN in active_area:
            return True
    if curr_platform_type < client_const.PLATFORM_PC:
        if ActivityPlatformConst.PC in active_platforms and ActivityAreaConst.FOREIGN in active_area:
            return True
    if curr_platform_type < client_const.PLATFORM_MOBILE and ActivityPlatformConst.MOBILE in active_platforms and ActivityAreaConst.FOREIGN in active_area:
        return True


def get_font_size_data_csv_path():
    lang_id = lang_id
    import translate.translate_utility
    if lang_id in (client_const.LANG_ZH, client_const.LANG_CN_ZH, client_const.LANG_HK_ZH):
        return 'ui/data/font_size_data_cn.csv'
    csv_path = None % lang_id
    if C_file.get_res_path(csv_path):
        return csv_path


def convert_font_path(path):
    lang_id = lang_id
    import translate.translate_utility
    replace_path = path.replace('/font/', '/font/%s/' % lang_id)
    if C_file.get_res_path(replace_path):
        return replace_path