Merge branch 'main/gingo-test' into feature/compatibility-old-gcc

feature/compatibility-old-gcc^2
Nuno 3 years ago
commit b64f0dbeee

@ -6,7 +6,7 @@ BraceWrapping:
AfterControlStatement: true
AfterEnum: true
AfterFunction: true
AfterNamespace: true
AfterNamespace: false
AfterObjCDeclaration: true
AfterStruct: true
AfterUnion: true

@ -17,3 +17,7 @@ indent_size = 4
[*.py]
indent_style = tab
indent_size = 4
[*.cfg]
indent_style = tab
indent_size = 4

185
.gitignore vendored

@ -90,6 +90,7 @@ ylwrap
*.mk
# Visual Studio garbage
.vscode/
*.opensdf
UpgradeLog*.XML
_UpgradeReport_Files
@ -127,6 +128,9 @@ aes_state.txt
# intellij project folder
.idea/
# VSCode project folder
.vscode/
# Python cache
*.pyd
*.pyc
@ -151,88 +155,90 @@ Thumbs.db
.SyncArchive
# build
code/nel/build/*
code/nelns/build/*
code/snowballs/build/*
code/ryzom/build/*
code/build/*
code/build-2010/*
nel/build/*
nelns/build/*
snowballs/build/*
ryzom/build/*
build/*
build-2010/*
build/*
install/*
win-build/
build_*
code/nel/tools/build_gamedata/configuration/buildsite.py
install_*
nel/tools/build_gamedata/configuration/buildsite.py
# Linux nel compile
code/nel/build/nel-config
code/nel/config.status
code/nel/include/nelconfig.h
code/nel/include/stamp-h1
code/nel/libtool
code/nel/nel-config
code/nel/samples/3d/cluster_viewer/cluster_viewer
code/nel/samples/3d/font/font
code/nel/samples/georges/georges
code/nel/samples/misc/command/command
code/nel/samples/misc/configfile/configfile
code/nel/samples/misc/debug/debug
code/nel/samples/misc/i18n/i18n
code/nel/samples/misc/log/log
code/nel/samples/misc/strings/strings
code/nel/samples/net/chat/chatclient
code/nel/samples/net/chat/chatserver
code/nel/samples/net/login_system/nls_frontend_service
code/nel/samples/net/login_system/nls_login_client
code/nel/samples/net/udp/udp_bench_client
code/nel/samples/net/udp/udp_bench_service
code/nel/samples/pacs/pacs_sample
code/nel/tools/3d/build_coarse_mesh/build_coarse_mesh
code/nel/tools/3d/build_far_bank/build_far_bank
code/nel/tools/3d/build_smallbank/build_smallbank
code/nel/tools/3d/ig_lighter/ig_lighter
code/nel/tools/3d/zone_dependencies/zone_dependencies
code/nel/tools/3d/zone_ig_lighter/zone_ig_lighter
code/nel/tools/3d/zone_lighter/zone_lighter
code/nel/tools/3d/zone_welder/zone_welder
code/nel/tools/misc/bnp_make/bnp_make
code/nel/tools/misc/disp_sheet_id/disp_sheet_id
code/nel/tools/misc/make_sheet_id/make_sheet_id
code/nel/tools/misc/xml_packer/xml_packer
code/nel/tools/pacs/build_ig_boxes/build_ig_boxes
code/nel/tools/pacs/build_indoor_rbank/build_indoor_rbank
code/nel/tools/pacs/build_rbank/build_rbank
code/ryzom/common/data_leveldesign/leveldesign/game_element/xp_table/skills.skill_tree
code/ryzom/common/data_leveldesign/leveldesign/game_element/xp_table/xptable.xp_table
code/ryzom/tools/server/sql/ryzom_admin_default_data.sql
nel/build/nel-config
nel/config.status
nel/include/nelconfig.h
nel/include/stamp-h1
nel/libtool
nel/nel-config
nel/samples/3d/cluster_viewer/cluster_viewer
nel/samples/3d/font/font
nel/samples/georges/georges
nel/samples/misc/command/command
nel/samples/misc/configfile/configfile
nel/samples/misc/debug/debug
nel/samples/misc/i18n/i18n
nel/samples/misc/log/log
nel/samples/misc/strings/strings
nel/samples/net/chat/chatclient
nel/samples/net/chat/chatserver
nel/samples/net/login_system/nls_frontend_service
nel/samples/net/login_system/nls_login_client
nel/samples/net/udp/udp_bench_client
nel/samples/net/udp/udp_bench_service
nel/samples/pacs/pacs_sample
nel/tools/3d/build_coarse_mesh/build_coarse_mesh
nel/tools/3d/build_far_bank/build_far_bank
nel/tools/3d/build_smallbank/build_smallbank
nel/tools/3d/ig_lighter/ig_lighter
nel/tools/3d/zone_dependencies/zone_dependencies
nel/tools/3d/zone_ig_lighter/zone_ig_lighter
nel/tools/3d/zone_lighter/zone_lighter
nel/tools/3d/zone_welder/zone_welder
nel/tools/misc/bnp_make/bnp_make
nel/tools/misc/disp_sheet_id/disp_sheet_id
nel/tools/misc/make_sheet_id/make_sheet_id
nel/tools/misc/xml_packer/xml_packer
nel/tools/pacs/build_ig_boxes/build_ig_boxes
nel/tools/pacs/build_indoor_rbank/build_indoor_rbank
nel/tools/pacs/build_rbank/build_rbank
ryzom/common/data_leveldesign/leveldesign/game_element/xp_table/skills.skill_tree
ryzom/common/data_leveldesign/leveldesign/game_element/xp_table/xptable.xp_table
ryzom/tools/server/sql/ryzom_admin_default_data.sql
# Linux server compile
code/ryzom/server/src/entities_game_service/entities_game_service
code/ryzom/server/src/frontend_service/frontend_service
code/ryzom/server/src/gpm_service/gpm_service
code/ryzom/server/src/input_output_service/input_output_service
code/ryzom/server/src/mirror_service/mirror_service
code/ryzom/server/src/ryzom_admin_service/ryzom_admin_service
code/ryzom/server/src/ryzom_naming_service/ryzom_naming_service
code/ryzom/server/src/ryzom_welcome_service/ryzom_welcome_service
code/ryzom/server/src/tick_service/tick_service
ryzom/server/src/entities_game_service/entities_game_service
ryzom/server/src/frontend_service/frontend_service
ryzom/server/src/gpm_service/gpm_service
ryzom/server/src/input_output_service/input_output_service
ryzom/server/src/mirror_service/mirror_service
ryzom/server/src/ryzom_admin_service/ryzom_admin_service
ryzom/server/src/ryzom_naming_service/ryzom_naming_service
ryzom/server/src/ryzom_welcome_service/ryzom_welcome_service
ryzom/server/src/tick_service/tick_service
# WebTT temp dir
code/ryzom/tools/server/www/webtt/app/tmp
ryzom/tools/server/www/webtt/app/tmp
# AMS ignore
code/web/public_php/ams/is_installed
code/web/docs/ams/html
code/web/public_php/ams/templates_c
code/ryzom/tools/server/ryzom_ams/drupal
code/ryzom/tools/server/ryzom_ams/drupal_module/ryzommanage/ams_lib/autoload
code/ryzom/tools/server/ryzom_ams/drupal_module/ryzommanage/ams_lib/configs
code/ryzom/tools/server/ryzom_ams/drupal_module/ryzommanage/ams_lib/cron
code/ryzom/tools/server/ryzom_ams/drupal_module/ryzommanage/ams_lib/img
code/ryzom/tools/server/ryzom_ams/drupal_module/ryzommanage/ams_lib/plugins
code/ryzom/tools/server/ryzom_ams/drupal_module/ryzommanage/ams_lib/smarty
code/ryzom/tools/server/ryzom_ams/drupal_module/ryzommanage/ams_lib/translations
code/ryzom/tools/server/ryzom_ams/drupal_module/ryzommanage/ams_lib/libinclude.php
code/ryzom/tools/server/ryzom_ams/old
web/public_php/ams/is_installed
web/docs/ams/html
web/public_php/ams/templates_c
ryzom/tools/server/ryzom_ams/drupal
ryzom/tools/server/ryzom_ams/drupal_module/ryzommanage/ams_lib/autoload
ryzom/tools/server/ryzom_ams/drupal_module/ryzommanage/ams_lib/configs
ryzom/tools/server/ryzom_ams/drupal_module/ryzommanage/ams_lib/cron
ryzom/tools/server/ryzom_ams/drupal_module/ryzommanage/ams_lib/img
ryzom/tools/server/ryzom_ams/drupal_module/ryzommanage/ams_lib/plugins
ryzom/tools/server/ryzom_ams/drupal_module/ryzommanage/ams_lib/smarty
ryzom/tools/server/ryzom_ams/drupal_module/ryzommanage/ams_lib/translations
ryzom/tools/server/ryzom_ams/drupal_module/ryzommanage/ams_lib/libinclude.php
ryzom/tools/server/ryzom_ams/old
@ -242,24 +248,27 @@ external_stlport
nel_tools*
ryzom_tools*
#personal projects
personal/
# Dumps
*.dmp
code/nel/tools/build_gamedata/processes/ai_wmap/ai_build_wmap.cfg
code/nel/tools/build_gamedata/processes/sheets/sheets_packer.cfg
code/nel/tools/build_gamedata/processes/rbank/build_rbank.cfg
code/nel/tools/build_gamedata/processes/zone/debug_zone_dependencies.cfg
code/web/public_php/config.php
code/web/public_php/is_installed
code/web/public_php/ams/files
code/web/public_php/db_version_lib
code/web/public_php/db_version_shard
code/web/public_php/db_version_tool
code/web/public_php/db_version_web
code/web/public_php/role_service
code/web/public_php/role_support
code/web/public_php/role_domain
code/web/public_php/db_version_ring
code/web/public_php/config_user.php
code/nel/tools/build_gamedata/processes/pz/build_world_packed_col.cfg
code/nel/tools/build_gamedata/processes/cartographer/island_screenshots.cfg
nel/tools/build_gamedata/processes/ai_wmap/ai_build_wmap.cfg
nel/tools/build_gamedata/processes/sheets/sheets_packer.cfg
nel/tools/build_gamedata/processes/rbank/build_rbank.cfg
nel/tools/build_gamedata/processes/zone/debug_zone_dependencies.cfg
web/public_php/config.php
web/public_php/is_installed
web/public_php/ams/files
web/public_php/db_version_lib
web/public_php/db_version_shard
web/public_php/db_version_tool
web/public_php/db_version_web
web/public_php/role_service
web/public_php/role_support
web/public_php/role_domain
web/public_php/db_version_ring
web/public_php/config_user.php
nel/tools/build_gamedata/processes/pz/build_world_packed_col.cfg
nel/tools/build_gamedata/processes/cartographer/island_screenshots.cfg

@ -152,87 +152,87 @@ Thumbs.db
.SyncArchive
# build
code/nel/build/*
code/nelns/build/*
code/snowballs/build/*
code/ryzom/build/*
code/build/*
code/build-2010/*
nel/build/*
nelns/build/*
snowballs/build/*
ryzom/build/*
build/*
build-2010/*
build/*
install/*
build_vc*
code/nel/tools/build_gamedata/configuration/buildsite.py
nel/tools/build_gamedata/configuration/buildsite.py
# Linux nel compile
code/nel/build/nel-config
code/nel/config.status
code/nel/include/nelconfig.h
code/nel/include/stamp-h1
code/nel/libtool
code/nel/nel-config
code/nel/samples/3d/cluster_viewer/cluster_viewer
code/nel/samples/3d/font/font
code/nel/samples/georges/georges
code/nel/samples/misc/command/command
code/nel/samples/misc/configfile/configfile
code/nel/samples/misc/debug/debug
code/nel/samples/misc/i18n/i18n
code/nel/samples/misc/log/log
code/nel/samples/misc/strings/strings
code/nel/samples/net/chat/chatclient
code/nel/samples/net/chat/chatserver
code/nel/samples/net/login_system/nls_frontend_service
code/nel/samples/net/login_system/nls_login_client
code/nel/samples/net/udp/udp_bench_client
code/nel/samples/net/udp/udp_bench_service
code/nel/samples/pacs/pacs_sample
code/nel/tools/3d/build_coarse_mesh/build_coarse_mesh
code/nel/tools/3d/build_far_bank/build_far_bank
code/nel/tools/3d/build_smallbank/build_smallbank
code/nel/tools/3d/ig_lighter/ig_lighter
code/nel/tools/3d/zone_dependencies/zone_dependencies
code/nel/tools/3d/zone_ig_lighter/zone_ig_lighter
code/nel/tools/3d/zone_lighter/zone_lighter
code/nel/tools/3d/zone_welder/zone_welder
code/nel/tools/misc/bnp_make/bnp_make
code/nel/tools/misc/disp_sheet_id/disp_sheet_id
code/nel/tools/misc/make_sheet_id/make_sheet_id
code/nel/tools/misc/xml_packer/xml_packer
code/nel/tools/pacs/build_ig_boxes/build_ig_boxes
code/nel/tools/pacs/build_indoor_rbank/build_indoor_rbank
code/nel/tools/pacs/build_rbank/build_rbank
code/ryzom/common/data_leveldesign/leveldesign/game_element/xp_table/skills.skill_tree
code/ryzom/common/data_leveldesign/leveldesign/game_element/xp_table/xptable.xp_table
code/ryzom/tools/server/sql/ryzom_admin_default_data.sql
nel/build/nel-config
nel/config.status
nel/include/nelconfig.h
nel/include/stamp-h1
nel/libtool
nel/nel-config
nel/samples/3d/cluster_viewer/cluster_viewer
nel/samples/3d/font/font
nel/samples/georges/georges
nel/samples/misc/command/command
nel/samples/misc/configfile/configfile
nel/samples/misc/debug/debug
nel/samples/misc/i18n/i18n
nel/samples/misc/log/log
nel/samples/misc/strings/strings
nel/samples/net/chat/chatclient
nel/samples/net/chat/chatserver
nel/samples/net/login_system/nls_frontend_service
nel/samples/net/login_system/nls_login_client
nel/samples/net/udp/udp_bench_client
nel/samples/net/udp/udp_bench_service
nel/samples/pacs/pacs_sample
nel/tools/3d/build_coarse_mesh/build_coarse_mesh
nel/tools/3d/build_far_bank/build_far_bank
nel/tools/3d/build_smallbank/build_smallbank
nel/tools/3d/ig_lighter/ig_lighter
nel/tools/3d/zone_dependencies/zone_dependencies
nel/tools/3d/zone_ig_lighter/zone_ig_lighter
nel/tools/3d/zone_lighter/zone_lighter
nel/tools/3d/zone_welder/zone_welder
nel/tools/misc/bnp_make/bnp_make
nel/tools/misc/disp_sheet_id/disp_sheet_id
nel/tools/misc/make_sheet_id/make_sheet_id
nel/tools/misc/xml_packer/xml_packer
nel/tools/pacs/build_ig_boxes/build_ig_boxes
nel/tools/pacs/build_indoor_rbank/build_indoor_rbank
nel/tools/pacs/build_rbank/build_rbank
ryzom/common/data_leveldesign/leveldesign/game_element/xp_table/skills.skill_tree
ryzom/common/data_leveldesign/leveldesign/game_element/xp_table/xptable.xp_table
ryzom/tools/server/sql/ryzom_admin_default_data.sql
# Linux server compile
code/ryzom/server/src/entities_game_service/entities_game_service
code/ryzom/server/src/frontend_service/frontend_service
code/ryzom/server/src/gpm_service/gpm_service
code/ryzom/server/src/input_output_service/input_output_service
code/ryzom/server/src/mirror_service/mirror_service
code/ryzom/server/src/ryzom_admin_service/ryzom_admin_service
code/ryzom/server/src/ryzom_naming_service/ryzom_naming_service
code/ryzom/server/src/ryzom_welcome_service/ryzom_welcome_service
code/ryzom/server/src/tick_service/tick_service
ryzom/server/src/entities_game_service/entities_game_service
ryzom/server/src/frontend_service/frontend_service
ryzom/server/src/gpm_service/gpm_service
ryzom/server/src/input_output_service/input_output_service
ryzom/server/src/mirror_service/mirror_service
ryzom/server/src/ryzom_admin_service/ryzom_admin_service
ryzom/server/src/ryzom_naming_service/ryzom_naming_service
ryzom/server/src/ryzom_welcome_service/ryzom_welcome_service
ryzom/server/src/tick_service/tick_service
# WebTT temp dir
code/ryzom/tools/server/www/webtt/app/tmp
ryzom/tools/server/www/webtt/app/tmp
# AMS ignore
code/web/public_php/ams/is_installed
code/web/docs/ams/html
code/web/public_php/ams/templates_c
code/ryzom/tools/server/ryzom_ams/drupal
code/ryzom/tools/server/ryzom_ams/drupal_module/ryzommanage/ams_lib/autoload
code/ryzom/tools/server/ryzom_ams/drupal_module/ryzommanage/ams_lib/configs
code/ryzom/tools/server/ryzom_ams/drupal_module/ryzommanage/ams_lib/cron
code/ryzom/tools/server/ryzom_ams/drupal_module/ryzommanage/ams_lib/img
code/ryzom/tools/server/ryzom_ams/drupal_module/ryzommanage/ams_lib/plugins
code/ryzom/tools/server/ryzom_ams/drupal_module/ryzommanage/ams_lib/smarty
code/ryzom/tools/server/ryzom_ams/drupal_module/ryzommanage/ams_lib/translations
code/ryzom/tools/server/ryzom_ams/drupal_module/ryzommanage/ams_lib/libinclude.php
code/ryzom/tools/server/ryzom_ams/old
web/public_php/ams/is_installed
web/docs/ams/html
web/public_php/ams/templates_c
ryzom/tools/server/ryzom_ams/drupal
ryzom/tools/server/ryzom_ams/drupal_module/ryzommanage/ams_lib/autoload
ryzom/tools/server/ryzom_ams/drupal_module/ryzommanage/ams_lib/configs
ryzom/tools/server/ryzom_ams/drupal_module/ryzommanage/ams_lib/cron
ryzom/tools/server/ryzom_ams/drupal_module/ryzommanage/ams_lib/img
ryzom/tools/server/ryzom_ams/drupal_module/ryzommanage/ams_lib/plugins
ryzom/tools/server/ryzom_ams/drupal_module/ryzommanage/ams_lib/smarty
ryzom/tools/server/ryzom_ams/drupal_module/ryzommanage/ams_lib/translations
ryzom/tools/server/ryzom_ams/drupal_module/ryzommanage/ams_lib/libinclude.php
ryzom/tools/server/ryzom_ams/old
@ -248,21 +248,21 @@ personal/
#Dumps
*.dmp
code/nel/tools/build_gamedata/processes/ai_wmap/ai_build_wmap.cfg
code/nel/tools/build_gamedata/processes/sheets/sheets_packer.cfg
code/nel/tools/build_gamedata/processes/rbank/build_rbank.cfg
code/nel/tools/build_gamedata/processes/zone/debug_zone_dependencies.cfg
code/web/public_php/config.php
code/web/public_php/is_installed
code/web/public_php/ams/files
code/web/public_php/db_version_lib
code/web/public_php/db_version_shard
code/web/public_php/db_version_tool
code/web/public_php/db_version_web
code/web/public_php/role_service
code/web/public_php/role_support
code/web/public_php/role_domain
code/web/public_php/db_version_ring
code/web/public_php/config_user.php
code/nel/tools/build_gamedata/processes/pz/build_world_packed_col.cfg
code/nel/tools/build_gamedata/processes/cartographer/island_screenshots.cfg
nel/tools/build_gamedata/processes/ai_wmap/ai_build_wmap.cfg
nel/tools/build_gamedata/processes/sheets/sheets_packer.cfg
nel/tools/build_gamedata/processes/rbank/build_rbank.cfg
nel/tools/build_gamedata/processes/zone/debug_zone_dependencies.cfg
web/public_php/config.php
web/public_php/is_installed
web/public_php/ams/files
web/public_php/db_version_lib
web/public_php/db_version_shard
web/public_php/db_version_tool
web/public_php/db_version_web
web/public_php/role_service
web/public_php/role_support
web/public_php/role_domain
web/public_php/db_version_ring
web/public_php/config_user.php
nel/tools/build_gamedata/processes/pz/build_world_packed_col.cfg
nel/tools/build_gamedata/processes/cartographer/island_screenshots.cfg

@ -30,7 +30,7 @@ addons:
before_script:
- mkdir build
- cmake --version
- cmake -Hcode -Bbuild $CMAKE_CONFIGURE_OPTIONS
- cmake -H. -Bbuild $CMAKE_CONFIGURE_OPTIONS
- cat build/CMakeCache.txt
script:

@ -34,11 +34,37 @@ IF(COMMAND cmake_policy)
ENDIF()
ENDIF()
#-----------------------------------------------------------------------------
# Downloads and install Hunger into HUNTER_ROOT directory.
OPTION(HUNTER_ENABLED "Enable Hunter package manager" OFF)
IF(HUNTER_ENABLED)
INCLUDE("CMakeModules/HunterGate.cmake")
HunterGate(
URL "https://github.com/cpp-pm/hunter/archive/v0.23.317.tar.gz"
SHA1 "fbdd94b1966d351384e27b02c8d134915b1131d6"
FILEPATH "${CMAKE_CURRENT_LIST_DIR}/CMakeModules/HunterConfig.cmake"
)
# default options for hunterized build
SET(WITH_STATIC ON CACHE BOOL "static" FORCE)
SET(WITH_STATIC_DRIVERS ON CACHE BOOL "static drivers" FORCE)
SET(WITH_STATIC_CURL ON CACHE BOOL "static curl" FORCE)
SET(WITH_STATIC_LIBXML2 ON CACHE BOOL "static libxml2" FORCE)
SET(WITH_STATIC_EXTERNAL ON CACHE BOOL "static external" FORCE)
SET(WITH_EXTERNAL OFF CACHE BOOL "external libs" FORCE)
ENDIF()
#-----------------------------------------------------------------------------
INCLUDE(nel)
INCLUDE(ConfigureChecks)
INCLUDE(CheckDepends)
INCLUDE(${CMAKE_ROOT}/Modules/Documentation.cmake OPTIONAL)
MESSAGE("EXTERNAL ${WITH_EXTERNAL}")
# Force out of source builds.
CHECK_OUT_OF_SOURCE()
@ -54,8 +80,8 @@ ENDIF()
CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
PROJECT(RyzomCore CXX C)
SET(NL_VERSION_MAJOR 1)
SET(NL_VERSION_MINOR 0)
SET(NL_VERSION_PATCH 2)
SET(NL_VERSION_MINOR 1)
SET(NL_VERSION_PATCH 0 CACHE STRING "Patch version")
SET(YEAR "2001-${CURRENT_YEAR}")
SET(AUTHOR "Winch Gate and The Ryzom Core Community")
@ -111,9 +137,9 @@ SET(RYZOM_WEBIG_TRUSTED_DOMAIN "open.ryzom.dev" CACHE STRING "Ryzom Client
# urls when compiling ryzom live client
IF(WITH_RYZOM_LIVE)
MESSAGE("Using RYZOM_LIVE urls")
SET(RYZOM_CLIENT_CREATE_ACCOUNT_URL "https://account.ryzom.com/signup/from_client.php")
SET(RYZOM_CLIENT_EDIT_ACCOUNT_URL "https://account.ryzom.com/payment_profile/index.php")
SET(RYZOM_CLIENT_FORGET_PASSWORD_URL "https://account.ryzom.com/payment_profile/lost_secure_password.php")
SET(RYZOM_CLIENT_CREATE_ACCOUNT_URL "https://me.ryzom.com")
SET(RYZOM_CLIENT_EDIT_ACCOUNT_URL "https://me.ryzom.com")
SET(RYZOM_CLIENT_FORGET_PASSWORD_URL "https://me.ryzom.com/?forget_password=1")
SET(RYZOM_CLIENT_PATCH_URL "http://dl.ryzom.com/patch_live")
SET(RYZOM_CLIENT_APP_NAME "ryzom_live")
@ -134,6 +160,28 @@ IF(WIN32)
ENDIF()
ENDIF()
IF(HUNTER_ENABLED)
## TODO: hack for freetype hunter package
SET(ON 1)
##
HUNTER_ADD_PACKAGE(ZLIB)
FIND_PACKAGE(ZLIB CONFIG REQUIRED)
SET(ZLIB_LIBRARY ZLIB::zlib)
HUNTER_ADD_PACKAGE(libxml2)
FIND_PACKAGE(libxml2 CONFIG REQUIRED)
SET(LIBXML2_LIBRARIES ${LIBXML2_LIBRARIES} libxml2::libxml2)
HUNTER_ADD_PACKAGE(OpenSSL)
FIND_PACKAGE(OpenSSL REQUIRED)
# TODO: is OpenSSL::Crypto only needed for WIN32?
SET(OPENSSL_LIBRARIES OpenSSL::SSL OpenSSL::Crypto)
# for precompiled headers, not needed if using TARGET_PRECOMPILE_HEADERS() from cmake 3.16+
SET(ZLIB_INCLUDE_DIR ZLIB_ROOT/include)
SET(LIBXML2_INCLUDE_DIR ${LIBXML2_ROOT}/include/libxml2)
ELSE()
FIND_PACKAGE(ZLIB REQUIRED)
FIND_PACKAGE(LibXml2 REQUIRED)
FIND_PACKAGE(PNG REQUIRED)
@ -144,6 +192,7 @@ FIND_PACKAGE(Jpeg)
IF(WIN32)
SET(OPENSSL_LIBRARIES ${OPENSSL_LIBRARIES} Crypt32.lib)
ENDIF()
ENDIF() #hunter
IF(WITH_LIBOVR)
FIND_PACKAGE(LibOVR)
@ -237,6 +286,7 @@ ENDIF()
INCLUDE(FindHelpers)
#TODO: hunter qt package
IF(WITH_QT5)
FIND_QT5()
ENDIF()
@ -248,6 +298,7 @@ IF(WITH_QT)
FIND_PACKAGE(Qt4 COMPONENTS QtCore QtGui QtXml QtOpenGL REQUIRED)
ENDIF()
#TODO: hunter assimp package
IF(WITH_ASSIMP)
FIND_PACKAGE(assimp REQUIRED)
ENDIF()
@ -257,6 +308,17 @@ IF(WITH_NEL)
FIND_PACKAGE(CppTest)
ENDIF()
IF(HUNTER_ENABLED)
IF(WITH_GUI)
HUNTER_ADD_PACKAGE(luabind)
FIND_PACKAGE(Luabind REQUIRED)
ENDIF()
HUNTER_ADD_PACKAGE(CURL)
FIND_PACKAGE(CURL CONFIG REQUIRED)
# TODO: for nelgui
SET(CURL_LIBRARIES CURL::libcurl libxml2::libxml2)
ELSE()
IF(WITH_GUI)
FIND_PACKAGE(Luabind REQUIRED)
ENDIF()
@ -310,6 +372,7 @@ IF(WITH_NEL)
ENDIF()
ENDIF()
ENDIF()
ENDIF() #hunter
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/nel/include)
ADD_SUBDIRECTORY(nel)

@ -69,7 +69,13 @@ MACRO(FIND_CORRECT_LUA_VERSION)
ENDIF()
ELSE()
# TODO: find a way to detect Lua version
IF(WITH_LUA53)
IF(HUNTER_ENABLED)
HUNTER_ADD_PACKAGE(Lua)
FIND_PACKAGE(Lua CONFIG REQUIRED)
SET(LUA_LIBRARIES Lua::lua_lib)
ELSEIF(WITH_LUA54)
FIND_PACKAGE(Lua54 REQUIRED)
ELSEIF(WITH_LUA53)
FIND_PACKAGE(Lua53 REQUIRED)
ELSEIF(WITH_LUA52)
FIND_PACKAGE(Lua52 REQUIRED)
@ -89,6 +95,21 @@ ENDIF()
SET(LIBRARY_NAME_RELEASE)
SET(LIBRARY_NAME_DEBUG)
IF(WITH_LUA54)
IF(WITH_STLPORT)
LIST(APPEND LIBRARY_NAME_RELEASE luabind_stlport_lua54)
LIST(APPEND LIBRARY_NAME_DEBUG luabind_stlport_lua54d)
ENDIF()
LIST(APPEND LIBRARY_NAME_RELEASE luabind_lua54)
LIST(APPEND LIBRARY_NAME_DEBUG luabind_lua54d)
ENDIF()
IF(HUNTER_ENABLED)
LIST(APPEND LIBRARY_NAME_RELEASE luabind luabind09)
LIST(APPEND LIBRARY_NAME_DEBUG luabindd luabind09-d)
ENDIF()
IF(WITH_LUA53)
IF(WITH_STLPORT)
LIST(APPEND LIBRARY_NAME_RELEASE luabind_stlport_lua53)

@ -501,6 +501,17 @@ IF(WINSDK_INCLUDE_DIR)
IF(WINSDK_VERSION STREQUAL "7.1" AND (MSVC11 OR MSVC12 OR MSVC14))
ADD_DEFINITIONS(-D_USING_V110_SDK71_)
ENDIF()
IF(NOT DXSDK_DIR)
MESSAGE("Using DirectX from Windows SDK (${WINSDK_LIBRARY_DIRS})")
SET(DXSDK_DIR ${WINSDK_DIR})
FIND_LIBRARY(DXSDK_GUID_LIBRARY dxguid ${WINSDK_LIBRARY_DIRS})
FIND_LIBRARY(DXSDK_DINPUT_LIBRARY dinput8 ${WINSDK_LIBRARY_DIRS})
FIND_LIBRARY(DXSDK_DSOUND_LIBRARY dsound ${WINSDK_LIBRARY_DIRS})
FIND_LIBRARY(DXSDK_XAUDIO_LIBRARY xaudio2 ${WINSDK_LIBRARY_DIRS})
# TODO: FIND_LIBRARY(DXSDK_D3DX9_LIBRARY d3dx9)
FIND_LIBRARY(DXSDK_D3D9_LIBRARY d3d9 ${WINSDK_LIBRARY_DIRS})
ENDIF()
ELSE()
IF(NOT WindowsSDK_FIND_QUIETLY)
MESSAGE(STATUS "Warning: Unable to find Windows SDK!")

@ -0,0 +1,8 @@
# This file is parsed by HunterGate command
hunter_config(luabind
VERSION 0.9.1
URL "https://github.com/nimetu/luabind/tarball/2fa4606"
SHA1 "3b4646bab9f0b2362d7b8d71d78e40deaf3cc747"
)

@ -0,0 +1,537 @@
# Copyright (c) 2013-2019, Ruslan Baratov
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice, this
# list of conditions and the following disclaimer.
#
# * Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
# This is a gate file to Hunter package manager.
# Include this file using `include` command and add package you need, example:
#
# cmake_minimum_required(VERSION 3.2)
#
# include("cmake/HunterGate.cmake")
# HunterGate(
# URL "https://github.com/path/to/hunter/archive.tar.gz"
# SHA1 "798501e983f14b28b10cda16afa4de69eee1da1d"
# )
#
# project(MyProject)
#
# hunter_add_package(Foo)
# hunter_add_package(Boo COMPONENTS Bar Baz)
#
# Projects:
# * https://github.com/hunter-packages/gate/
# * https://github.com/ruslo/hunter
option(HUNTER_ENABLED "Enable Hunter package manager support" ON)
if(HUNTER_ENABLED)
if(CMAKE_VERSION VERSION_LESS "3.2")
message(
FATAL_ERROR
"At least CMake version 3.2 required for Hunter dependency management."
" Update CMake or set HUNTER_ENABLED to OFF."
)
endif()
endif()
include(CMakeParseArguments) # cmake_parse_arguments
option(HUNTER_STATUS_PRINT "Print working status" ON)
option(HUNTER_STATUS_DEBUG "Print a lot info" OFF)
option(HUNTER_TLS_VERIFY "Enable/disable TLS certificate checking on downloads" ON)
set(HUNTER_ROOT "" CACHE FILEPATH "Override the HUNTER_ROOT.")
set(HUNTER_ERROR_PAGE "https://hunter.readthedocs.io/en/latest/reference/errors")
function(hunter_gate_status_print)
if(HUNTER_STATUS_PRINT OR HUNTER_STATUS_DEBUG)
foreach(print_message ${ARGV})
message(STATUS "[hunter] ${print_message}")
endforeach()
endif()
endfunction()
function(hunter_gate_status_debug)
if(HUNTER_STATUS_DEBUG)
foreach(print_message ${ARGV})
string(TIMESTAMP timestamp)
message(STATUS "[hunter *** DEBUG *** ${timestamp}] ${print_message}")
endforeach()
endif()
endfunction()
function(hunter_gate_error_page error_page)
message("------------------------------ ERROR ------------------------------")
message(" ${HUNTER_ERROR_PAGE}/${error_page}.html")
message("-------------------------------------------------------------------")
message("")
message(FATAL_ERROR "")
endfunction()
function(hunter_gate_internal_error)
message("")
foreach(print_message ${ARGV})
message("[hunter ** INTERNAL **] ${print_message}")
endforeach()
message("[hunter ** INTERNAL **] [Directory:${CMAKE_CURRENT_LIST_DIR}]")
message("")
hunter_gate_error_page("error.internal")
endfunction()
function(hunter_gate_fatal_error)
cmake_parse_arguments(hunter "" "ERROR_PAGE" "" "${ARGV}")
if("${hunter_ERROR_PAGE}" STREQUAL "")
hunter_gate_internal_error("Expected ERROR_PAGE")
endif()
message("")
foreach(x ${hunter_UNPARSED_ARGUMENTS})
message("[hunter ** FATAL ERROR **] ${x}")
endforeach()
message("[hunter ** FATAL ERROR **] [Directory:${CMAKE_CURRENT_LIST_DIR}]")
message("")
hunter_gate_error_page("${hunter_ERROR_PAGE}")
endfunction()
function(hunter_gate_user_error)
hunter_gate_fatal_error(${ARGV} ERROR_PAGE "error.incorrect.input.data")
endfunction()
function(hunter_gate_self root version sha1 result)
string(COMPARE EQUAL "${root}" "" is_bad)
if(is_bad)
hunter_gate_internal_error("root is empty")
endif()
string(COMPARE EQUAL "${version}" "" is_bad)
if(is_bad)
hunter_gate_internal_error("version is empty")
endif()
string(COMPARE EQUAL "${sha1}" "" is_bad)
if(is_bad)
hunter_gate_internal_error("sha1 is empty")
endif()
string(SUBSTRING "${sha1}" 0 7 archive_id)
if(EXISTS "${root}/cmake/Hunter")
set(hunter_self "${root}")
else()
set(
hunter_self
"${root}/_Base/Download/Hunter/${version}/${archive_id}/Unpacked"
)
endif()
set("${result}" "${hunter_self}" PARENT_SCOPE)
endfunction()
# Set HUNTER_GATE_ROOT cmake variable to suitable value.
function(hunter_gate_detect_root)
# Check CMake variable
if(HUNTER_ROOT)
set(HUNTER_GATE_ROOT "${HUNTER_ROOT}" PARENT_SCOPE)
hunter_gate_status_debug("HUNTER_ROOT detected by cmake variable")
return()
endif()
# Check environment variable
if(DEFINED ENV{HUNTER_ROOT})
set(HUNTER_GATE_ROOT "$ENV{HUNTER_ROOT}" PARENT_SCOPE)
hunter_gate_status_debug("HUNTER_ROOT detected by environment variable")
return()
endif()
# Check HOME environment variable
if(DEFINED ENV{HOME})
set(HUNTER_GATE_ROOT "$ENV{HOME}/.hunter" PARENT_SCOPE)
hunter_gate_status_debug("HUNTER_ROOT set using HOME environment variable")
return()
endif()
# Check SYSTEMDRIVE and USERPROFILE environment variable (windows only)
if(WIN32)
if(DEFINED ENV{SYSTEMDRIVE})
set(HUNTER_GATE_ROOT "$ENV{SYSTEMDRIVE}/.hunter" PARENT_SCOPE)
hunter_gate_status_debug(
"HUNTER_ROOT set using SYSTEMDRIVE environment variable"
)
return()
endif()
if(DEFINED ENV{USERPROFILE})
set(HUNTER_GATE_ROOT "$ENV{USERPROFILE}/.hunter" PARENT_SCOPE)
hunter_gate_status_debug(
"HUNTER_ROOT set using USERPROFILE environment variable"
)
return()
endif()
endif()
hunter_gate_fatal_error(
"Can't detect HUNTER_ROOT"
ERROR_PAGE "error.detect.hunter.root"
)
endfunction()
function(hunter_gate_download dir)
string(
COMPARE
NOTEQUAL
"$ENV{HUNTER_DISABLE_AUTOINSTALL}"
""
disable_autoinstall
)
if(disable_autoinstall AND NOT HUNTER_RUN_INSTALL)
hunter_gate_fatal_error(
"Hunter not found in '${dir}'"
"Set HUNTER_RUN_INSTALL=ON to auto-install it from '${HUNTER_GATE_URL}'"
"Settings:"
" HUNTER_ROOT: ${HUNTER_GATE_ROOT}"
" HUNTER_SHA1: ${HUNTER_GATE_SHA1}"
ERROR_PAGE "error.run.install"
)
endif()
string(COMPARE EQUAL "${dir}" "" is_bad)
if(is_bad)
hunter_gate_internal_error("Empty 'dir' argument")
endif()
string(COMPARE EQUAL "${HUNTER_GATE_SHA1}" "" is_bad)
if(is_bad)
hunter_gate_internal_error("HUNTER_GATE_SHA1 empty")
endif()
string(COMPARE EQUAL "${HUNTER_GATE_URL}" "" is_bad)
if(is_bad)
hunter_gate_internal_error("HUNTER_GATE_URL empty")
endif()
set(done_location "${dir}/DONE")
set(sha1_location "${dir}/SHA1")
set(build_dir "${dir}/Build")
set(cmakelists "${dir}/CMakeLists.txt")
hunter_gate_status_debug("Locking directory: ${dir}")
file(LOCK "${dir}" DIRECTORY GUARD FUNCTION)
hunter_gate_status_debug("Lock done")
if(EXISTS "${done_location}")
# while waiting for lock other instance can do all the job
hunter_gate_status_debug("File '${done_location}' found, skip install")
return()
endif()
file(REMOVE_RECURSE "${build_dir}")
file(REMOVE_RECURSE "${cmakelists}")
file(MAKE_DIRECTORY "${build_dir}") # check directory permissions
# Disabling languages speeds up a little bit, reduces noise in the output
# and avoids path too long windows error
file(
WRITE
"${cmakelists}"
"cmake_minimum_required(VERSION 3.2)\n"
"project(HunterDownload LANGUAGES NONE)\n"
"include(ExternalProject)\n"
"ExternalProject_Add(\n"
" Hunter\n"
" URL\n"
" \"${HUNTER_GATE_URL}\"\n"
" URL_HASH\n"
" SHA1=${HUNTER_GATE_SHA1}\n"
" DOWNLOAD_DIR\n"
" \"${dir}\"\n"
" TLS_VERIFY\n"
" ${HUNTER_TLS_VERIFY}\n"
" SOURCE_DIR\n"
" \"${dir}/Unpacked\"\n"
" CONFIGURE_COMMAND\n"
" \"\"\n"
" BUILD_COMMAND\n"
" \"\"\n"
" INSTALL_COMMAND\n"
" \"\"\n"
")\n"
)
if(HUNTER_STATUS_DEBUG)
set(logging_params "")
else()
set(logging_params OUTPUT_QUIET)
endif()
hunter_gate_status_debug("Run generate")
# Need to add toolchain file too.
# Otherwise on Visual Studio + MDD this will fail with error:
# "Could not find an appropriate version of the Windows 10 SDK installed on this machine"
if(EXISTS "${CMAKE_TOOLCHAIN_FILE}")
get_filename_component(absolute_CMAKE_TOOLCHAIN_FILE "${CMAKE_TOOLCHAIN_FILE}" ABSOLUTE)
set(toolchain_arg "-DCMAKE_TOOLCHAIN_FILE=${absolute_CMAKE_TOOLCHAIN_FILE}")
else()
# 'toolchain_arg' can't be empty
set(toolchain_arg "-DCMAKE_TOOLCHAIN_FILE=")
endif()
string(COMPARE EQUAL "${CMAKE_MAKE_PROGRAM}" "" no_make)
if(no_make)
set(make_arg "")
else()
# Test case: remove Ninja from PATH but set it via CMAKE_MAKE_PROGRAM
set(make_arg "-DCMAKE_MAKE_PROGRAM=${CMAKE_MAKE_PROGRAM}")
endif()
execute_process(
COMMAND
"${CMAKE_COMMAND}"
"-H${dir}"
"-B${build_dir}"
"-G${CMAKE_GENERATOR}"
"${toolchain_arg}"
${make_arg}
WORKING_DIRECTORY "${dir}"
RESULT_VARIABLE download_result
${logging_params}
)
if(NOT download_result EQUAL 0)
hunter_gate_internal_error(
"Configure project failed."
"To reproduce the error run: ${CMAKE_COMMAND} -H${dir} -B${build_dir} -G${CMAKE_GENERATOR} ${toolchain_arg} ${make_arg}"
"In directory ${dir}"
)
endif()
hunter_gate_status_print(
"Initializing Hunter workspace (${HUNTER_GATE_SHA1})"
" ${HUNTER_GATE_URL}"
" -> ${dir}"
)
execute_process(
COMMAND "${CMAKE_COMMAND}" --build "${build_dir}"
WORKING_DIRECTORY "${dir}"
RESULT_VARIABLE download_result
${logging_params}
)
if(NOT download_result EQUAL 0)
hunter_gate_internal_error("Build project failed")
endif()
file(REMOVE_RECURSE "${build_dir}")
file(REMOVE_RECURSE "${cmakelists}")
file(WRITE "${sha1_location}" "${HUNTER_GATE_SHA1}")
file(WRITE "${done_location}" "DONE")
hunter_gate_status_debug("Finished")
endfunction()
# Must be a macro so master file 'cmake/Hunter' can
# apply all variables easily just by 'include' command
# (otherwise PARENT_SCOPE magic needed)
macro(HunterGate)
if(HUNTER_GATE_DONE)
# variable HUNTER_GATE_DONE set explicitly for external project
# (see `hunter_download`)
set_property(GLOBAL PROPERTY HUNTER_GATE_DONE YES)
endif()
# First HunterGate command will init Hunter, others will be ignored
get_property(_hunter_gate_done GLOBAL PROPERTY HUNTER_GATE_DONE SET)
if(NOT HUNTER_ENABLED)
# Empty function to avoid error "unknown function"
function(hunter_add_package)
endfunction()
set(
_hunter_gate_disabled_mode_dir
"${CMAKE_CURRENT_LIST_DIR}/cmake/Hunter/disabled-mode"
)
if(EXISTS "${_hunter_gate_disabled_mode_dir}")
hunter_gate_status_debug(
"Adding \"disabled-mode\" modules: ${_hunter_gate_disabled_mode_dir}"
)
list(APPEND CMAKE_PREFIX_PATH "${_hunter_gate_disabled_mode_dir}")
endif()
elseif(_hunter_gate_done)
hunter_gate_status_debug("Secondary HunterGate (use old settings)")
hunter_gate_self(
"${HUNTER_CACHED_ROOT}"
"${HUNTER_VERSION}"
"${HUNTER_SHA1}"
_hunter_self
)
include("${_hunter_self}/cmake/Hunter")
else()
set(HUNTER_GATE_LOCATION "${CMAKE_CURRENT_SOURCE_DIR}")
string(COMPARE NOTEQUAL "${PROJECT_NAME}" "" _have_project_name)
if(_have_project_name)
hunter_gate_fatal_error(
"Please set HunterGate *before* 'project' command. "
"Detected project: ${PROJECT_NAME}"
ERROR_PAGE "error.huntergate.before.project"
)
endif()
cmake_parse_arguments(
HUNTER_GATE "LOCAL" "URL;SHA1;GLOBAL;FILEPATH" "" ${ARGV}
)
string(COMPARE EQUAL "${HUNTER_GATE_SHA1}" "" _empty_sha1)
string(COMPARE EQUAL "${HUNTER_GATE_URL}" "" _empty_url)
string(
COMPARE
NOTEQUAL
"${HUNTER_GATE_UNPARSED_ARGUMENTS}"
""
_have_unparsed
)
string(COMPARE NOTEQUAL "${HUNTER_GATE_GLOBAL}" "" _have_global)
string(COMPARE NOTEQUAL "${HUNTER_GATE_FILEPATH}" "" _have_filepath)
if(_have_unparsed)
hunter_gate_user_error(
"HunterGate unparsed arguments: ${HUNTER_GATE_UNPARSED_ARGUMENTS}"
)
endif()
if(_empty_sha1)
hunter_gate_user_error("SHA1 suboption of HunterGate is mandatory")
endif()
if(_empty_url)
hunter_gate_user_error("URL suboption of HunterGate is mandatory")
endif()
if(_have_global)
if(HUNTER_GATE_LOCAL)
hunter_gate_user_error("Unexpected LOCAL (already has GLOBAL)")
endif()
if(_have_filepath)
hunter_gate_user_error("Unexpected FILEPATH (already has GLOBAL)")
endif()
endif()
if(HUNTER_GATE_LOCAL)
if(_have_global)
hunter_gate_user_error("Unexpected GLOBAL (already has LOCAL)")
endif()
if(_have_filepath)
hunter_gate_user_error("Unexpected FILEPATH (already has LOCAL)")
endif()
endif()
if(_have_filepath)
if(_have_global)
hunter_gate_user_error("Unexpected GLOBAL (already has FILEPATH)")
endif()
if(HUNTER_GATE_LOCAL)
hunter_gate_user_error("Unexpected LOCAL (already has FILEPATH)")
endif()
endif()
hunter_gate_detect_root() # set HUNTER_GATE_ROOT
# Beautify path, fix probable problems with windows path slashes
get_filename_component(
HUNTER_GATE_ROOT "${HUNTER_GATE_ROOT}" ABSOLUTE
)
hunter_gate_status_debug("HUNTER_ROOT: ${HUNTER_GATE_ROOT}")
if(NOT HUNTER_ALLOW_SPACES_IN_PATH)
string(FIND "${HUNTER_GATE_ROOT}" " " _contain_spaces)
if(NOT _contain_spaces EQUAL -1)
hunter_gate_fatal_error(
"HUNTER_ROOT (${HUNTER_GATE_ROOT}) contains spaces."
"Set HUNTER_ALLOW_SPACES_IN_PATH=ON to skip this error"
"(Use at your own risk!)"
ERROR_PAGE "error.spaces.in.hunter.root"
)
endif()
endif()
string(
REGEX
MATCH
"[0-9]+\\.[0-9]+\\.[0-9]+[-_a-z0-9]*"
HUNTER_GATE_VERSION
"${HUNTER_GATE_URL}"
)
string(COMPARE EQUAL "${HUNTER_GATE_VERSION}" "" _is_empty)
if(_is_empty)
set(HUNTER_GATE_VERSION "unknown")
endif()
hunter_gate_self(
"${HUNTER_GATE_ROOT}"
"${HUNTER_GATE_VERSION}"
"${HUNTER_GATE_SHA1}"
_hunter_self
)
set(_master_location "${_hunter_self}/cmake/Hunter")
if(EXISTS "${HUNTER_GATE_ROOT}/cmake/Hunter")
# Hunter downloaded manually (e.g. by 'git clone')
set(_unused "xxxxxxxxxx")
set(HUNTER_GATE_SHA1 "${_unused}")
set(HUNTER_GATE_VERSION "${_unused}")
else()
get_filename_component(_archive_id_location "${_hunter_self}/.." ABSOLUTE)
set(_done_location "${_archive_id_location}/DONE")
set(_sha1_location "${_archive_id_location}/SHA1")
# Check Hunter already downloaded by HunterGate
if(NOT EXISTS "${_done_location}")
hunter_gate_download("${_archive_id_location}")
endif()
if(NOT EXISTS "${_done_location}")
hunter_gate_internal_error("hunter_gate_download failed")
endif()
if(NOT EXISTS "${_sha1_location}")
hunter_gate_internal_error("${_sha1_location} not found")
endif()
file(READ "${_sha1_location}" _sha1_value)
string(TOLOWER "${_sha1_value}" _sha1_value_lower)
string(TOLOWER "${HUNTER_GATE_SHA1}" _HUNTER_GATE_SHA1_lower)
string(COMPARE EQUAL "${_sha1_value_lower}" "${_HUNTER_GATE_SHA1_lower}" _is_equal)
if(NOT _is_equal)
hunter_gate_internal_error(
"Short SHA1 collision:"
" ${_sha1_value} (from ${_sha1_location})"
" ${HUNTER_GATE_SHA1} (HunterGate)"
)
endif()
if(NOT EXISTS "${_master_location}")
hunter_gate_user_error(
"Master file not found:"
" ${_master_location}"
"try to update Hunter/HunterGate"
)
endif()
endif()
include("${_master_location}")
set_property(GLOBAL PROPERTY HUNTER_GATE_DONE YES)
endif()
endmacro()

@ -121,6 +121,22 @@ MACRO(NL_ADD_RUNTIME_FLAGS name)
ENDMACRO(NL_ADD_RUNTIME_FLAGS)
MACRO(NL_ADD_STATIC_VID_DRIVERS name)
IF(HUNTER_ENABLED)
IF(WIN32)
SET(drv_suffix "_win")
ELSE()
SET(drv_suffix "")
ENDIF()
IF(WIN32 AND WITH_DRIVER_DIRECT3D)
TARGET_LINK_LIBRARIES(${name} nel_drv_direct3d${drv_suffix})
ENDIF()
IF(WITH_DRIVER_OPENGL)
TARGET_LINK_LIBRARIES(${name} nel_drv_opengl${drv_suffix})
ENDIF()
IF(WITH_DRIVER_OPENGLES)
TARGET_LINK_LIBRARIES(${name} nel_drv_opengles${drv_suffix})
ENDIF()
ELSE()
IF(WITH_STATIC_DRIVERS)
IF(WIN32)
IF(WITH_DRIVER_DIRECT3D)
@ -144,9 +160,29 @@ MACRO(NL_ADD_STATIC_VID_DRIVERS name)
ENDIF()
ENDIF()
ENDIF()
ENDIF()#hunter
ENDMACRO(NL_ADD_STATIC_VID_DRIVERS)
MACRO(NL_ADD_STATIC_SND_DRIVERS name)
IF(HUNTER_ENABLED)
IF(WIN32)
SET(drv_suffix "_win")
ELSE()
SET(drv_suffix "")
ENDIF()
IF(WIN32 AND WITH_DRIVER_DSOUND)
TARGET_LINK_LIBRARIES(${name} nel_drv_dsound${drv_suffix})
ENDIF()
IF(WIN32 AND WITH_DRIVER_XAUDIO2)
TARGET_LINK_LIBRARIES(${name} nel_drv_xaudio2${drv_suffix})
ENDIF()
IF(WITH_DRIVER_FMOD)
TARGET_LINK_LIBRARIES(${name} nel_drv_fmod${drv_suffix})
ENDIF()
IF(WITH_DRIVER_OPENAL)
TARGET_LINK_LIBRARIES(${name} nel_drv_openal${drv_suffix})
ENDIF()
ELSE()
IF(WITH_STATIC_DRIVERS)
IF(WIN32)
IF(WITH_DRIVER_DSOUND)
@ -175,6 +211,7 @@ MACRO(NL_ADD_STATIC_SND_DRIVERS name)
ENDIF()
ENDIF()
ENDIF() #hunter
ENDMACRO(NL_ADD_STATIC_SND_DRIVERS)
###
@ -249,6 +286,8 @@ MACRO(NL_SETUP_DEFAULT_OPTIONS)
OPTION(WITH_ASSIMP "Use assimp exporter" OFF)
OPTION(WITH_LIBGSF "Use libgsf for max file library" OFF)
OPTION(WITH_FFMPEG "Use ffmpeg for audio decoder" OFF)
###
# GUI toolkits
###
@ -1193,7 +1232,11 @@ MACRO(SETUP_EXTERNAL)
ENDIF()
IF(WIN32)
IF (HUNTER_ENABLED)
FIND_PACKAGE(External QUIET)
ELSE()
FIND_PACKAGE(External REQUIRED)
ENDIF()
# If using custom boost, we need to define the right variables used by official boost CMake module
IF(DEFINED BOOST_DIR)
@ -1236,7 +1279,7 @@ MACRO(SETUP_EXTERNAL)
IF(WIN32)
# Must include DXSDK before WINSDK
FIND_PACKAGE(DirectXSDK REQUIRED)
FIND_PACKAGE(DirectXSDK)
# IF(DXSDK_INCLUDE_DIR)
# INCLUDE_DIRECTORIES(${DXSDK_INCLUDE_DIR})
# ENDIF()
@ -1245,5 +1288,8 @@ MACRO(SETUP_EXTERNAL)
IF(MSVC)
FIND_PACKAGE(MSVC REQUIRED)
FIND_PACKAGE(WindowsSDK REQUIRED)
IF(NOT DXSDK_DIR)
MESSAGE(FATAL_ERROR "DirectX SDK or DirectX files from Windows SDK not found.")
ENDIF()
ENDIF()
ENDMACRO()

@ -1,42 +1,164 @@
jobs:
- job: ubuntu16
- job: ubuntu18
timeoutInMinutes: 120
pool:
vmImage: 'Ubuntu-16.04'
vmImage: 'ubuntu-18.04'
steps:
- script: |
sudo apt-get update
sudo apt-get install -y software-properties-common
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install cmake build-essential -y
sudo apt-get install gcc-8 g++-8 -y
sudo apt update
sudo apt install -y software-properties-common
# sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt update
sudo apt install cmake build-essential -y
sudo apt install gcc-8 g++-8 -y
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 60
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-8 60
sudo apt-get install bison autoconf automake -y
sudo apt-get install libpng12-dev -y
sudo apt-get install libjpeg-dev -y
sudo apt-get install libgif-dev libfreetype6-dev -y
sudo apt-get install freeglut3-dev -y
sudo apt-get install liblua5.1-dev libluabind-dev libcpptest-dev -y
sudo apt-get install libogg-dev libvorbis-dev libopenal-dev -y
sudo apt-get install libavcodec-dev libavformat-dev libavdevice-dev libswscale-dev libpostproc-dev -y
sudo apt-get install libmysqlclient-dev -y
sudo apt-get install libxml2-dev -y
sudo apt-get install libcurl4-openssl-dev libssl-dev -y
sudo apt-get install libsquish-dev -y
sudo apt-get install liblzma-dev -y
sudo apt-get install libgsf-1-dev -y
sudo apt-get install qtbase5-dev qttools5-dev qttools5-dev-tools
sudo apt install bison autoconf automake -y
sudo apt install libpng-dev -y
sudo apt install libjpeg-dev -y
sudo apt install libgif-dev libfreetype6-dev -y
sudo apt install freeglut3-dev -y
sudo apt install liblua5.2-dev libluabind-dev libcpptest-dev -y
sudo apt install libogg-dev libvorbis-dev libopenal-dev -y
sudo apt install libavcodec-dev libavformat-dev libavdevice-dev libswscale-dev libpostproc-dev -y
sudo apt install libmysqlclient-dev -y
sudo apt install libxml2-dev -y
sudo apt install libcurl4-openssl-dev libssl-dev -y
sudo apt install libsquish-dev -y
sudo apt install liblzma-dev -y
sudo apt install libgsf-1-dev -y
sudo apt install qtbase5-dev qttools5-dev qttools5-dev-tools
displayName: 'Dependencies'
- script: |
mkdir build
cmake --version
cd build
cmake -DWITH_STATIC=ON -DWITH_NEL_TESTS=OFF -DWITH_NEL_SAMPLES=ON -DWITH_LUA51=OFF -DWITH_LUA52=ON -DWITH_RYZOM=ON -DWITH_RYZOM_SERVER=ON -DWITH_RYZOM_CLIENT=ON -DWITH_RYZOM_TOOLS=ON -DWITH_NEL_TOOLS=ON -DWITH_NELNS=ON -DWITH_NELNS_LOGIN_SYSTEM=ON -DWITH_NELNS_SERVER=ON -DWITH_QT5=ON -DWITH_LIBGSF=ON ..
cat CMakeCache.txt
displayName: 'CMake'
- script: |
cd build
make -j`nproc`
displayName: 'Make'
- job: ubuntu20
timeoutInMinutes: 120
pool:
vmImage: 'ubuntu-20.04'
steps:
- script: |
sudo apt update
sudo apt install -y software-properties-common
sudo apt update
sudo apt install cmake build-essential -y
sudo apt install bison autoconf automake -y
sudo apt install libpng-dev -y
sudo apt install libjpeg-dev -y
sudo apt install libgif-dev libfreetype6-dev -y
sudo apt install freeglut3-dev -y
sudo apt install liblua5.2-dev libluabind-dev libcpptest-dev -y
sudo apt install libogg-dev libvorbis-dev libopenal-dev -y
sudo apt install libavcodec-dev libavformat-dev libavdevice-dev libswscale-dev libpostproc-dev -y
sudo apt install libmysqlclient-dev -y
sudo apt install libxml2-dev -y
sudo apt install libcurl4-openssl-dev libssl-dev -y
sudo apt install libsquish-dev -y
sudo apt install liblzma-dev -y
sudo apt install libgsf-1-dev -y
sudo apt install qtbase5-dev qttools5-dev qttools5-dev-tools
displayName: 'Dependencies'
- script: |
mkdir build
cmake --version
cd build
cmake -DWITH_STATIC=ON -DWITH_NEL_TESTS=OFF -DWITH_NEL_SAMPLES=ON -DWITH_LUA51=ON -DWITH_RYZOM=ON -DWITH_RYZOM_SERVER=ON -DWITH_RYZOM_CLIENT=ON -DWITH_RYZOM_TOOLS=ON -DWITH_NEL_TOOLS=ON -DWITH_NELNS=ON -DWITH_NELNS_LOGIN_SYSTEM=ON -DWITH_NELNS_SERVER=ON -DWITH_QT5=ON -DWITH_LIBGSF=ON ../code
cmake -DWITH_STATIC=ON -DWITH_NEL_TESTS=OFF -DWITH_NEL_SAMPLES=ON -DWITH_LUA51=OFF -DWITH_LUA52=ON -DWITH_RYZOM=ON -DWITH_RYZOM_SERVER=ON -DWITH_RYZOM_CLIENT=ON -DWITH_RYZOM_TOOLS=ON -DWITH_NEL_TOOLS=ON -DWITH_NELNS=ON -DWITH_NELNS_LOGIN_SYSTEM=ON -DWITH_NELNS_SERVER=ON -DWITH_QT5=ON -DWITH_LIBGSF=ON ..
cat CMakeCache.txt
displayName: 'CMake'
- script: |
cd build
make -j`nproc`
displayName: 'Make'
- job: windows2019
timeoutInMinutes: 120
pool:
vmImage: 'windows-2019'
steps:
- checkout: self
fetchDepth: 1
- task: Cache@2
inputs:
key: 'hunter-win2019-x64-rel'
path: "c:/.hunter/_Base/Cache"
- task: CmdLine@2
inputs:
script: |
aria2c https://download.microsoft.com/download/A/E/7/AE743F1F-632B-4809-87A9-AA1BB3458E31/DXSDK_Jun10.exe
7z x DXSDK_Jun10.exe -oC:\ -r -y
del DXSDK_Jun10.exe
- task: CMake@1
inputs:
workingDirectory: build.release
cmakeArgs: '-DCMAKE_CONFIGURATION_TYPES=Release -DHUNTER_ENABLED=ON -DHUNTER_CONFIGURATION_TYPES=Release -DFINAL_VERSION=OFF -DWITH_NEL_TESTS=OFF -DWITH_NEL_SAMPLES=OFF -DWITH_NEL_TOOLS=OFF -DWITH_RYZOM_TOOLS=OFF -DWITH_RYZOM_SERVER=OFF -DWITH_RYZOM_CLIENT=ON -DWITH_DRIVER_OPENGL=ON -DWITH_DRIVER_OPENAL=ON -DWITH_DRIVER_DIRECT3D=ON -DWITH_DRIVER_XAUDIO2=ON -DDXSDK_DIR=C:/DXSDK ..'
- task: MSBuild@1
inputs:
solution: build.release/ALL_BUILD.vcxproj
maximumCpuCount: true
configuration: release
platform: 'x64'
- job: ubuntu18hunter
timeoutInMinutes: 120
pool:
vmImage: ubuntu-18.04
steps:
- checkout: self
fetchDepth: 0
- script: |
sudo apt-get update
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends libasound2-dev libgl1-mesa-dev libjack-dev libpulse-dev libxrandr-dev libxrender-dev libxxf86vm-dev
displayName: 'Dependencies'
- task: Cache@2
inputs:
key: 'hunter317-ubuntu18-rel"'
path: "$(Pipeline.Workspace)/.hunter/_Base/Cache"
- script: |
mkdir build.release
cmake --version
cd build.release
unset SYSTEM
export MAKEFLAGS=-j`nproc`
cmake -DCMAKE_BUILD_TYPE=Release -DHUNTER_ENABLED=ON -DHUNTER_CONFIGURATION_TYPES=Release -DHUNTER_ROOT="$(Pipeline.Workspace)/.hunter" -DFINAL_VERSION=OFF -DWITH_NEL_TESTS=OFF -DWITH_NEL_SAMPLES=OFF -DWITH_NEL_TOOLS=OFF -DWITH_RYZOM_TOOLS=OFF -DWITH_RYZOM_SERVER=OFF -DWITH_RYZOM_CLIENT=ON -DWITH_DRIVER_OPENGL=ON -DWITH_DRIVER_OPENAL=ON ..
displayName: 'CMake, release'
- script: |
cd build.release
make -j`nproc`
displayName: 'Make, release'
#- task: PublishPipelineArtifact@1
# inputs:
# targetPath: build.release/bin
# artifactName: RyzomUbuntu18Release
- job: macOS11
timeoutInMinutes: 120
pool:
vmImage: 'macOS-11'
steps:
- checkout: self
fetchDepth: 0
- task: Cache@2
inputs:
key: 'hunter317-macOS11-rel"'
path: "$(Pipeline.Workspace)/.hunter/_Base/Cache"
- task: CMake@1
inputs:
workingDirectory: build.release
cmakeArgs: '-GXcode -DCMAKE_CONFIGURATION_TYPES=Release -DHUNTER_ENABLED=ON -DHUNTER_STATUS_DEBUG=ON -DHUNTER_CONFIGURATION_TYPES=Release -DHUNTER_ROOT="$(Pipeline.Workspace)/.hunter" -DWITH_LIBXML2_ICONV=OFF -DFINAL_VERSION=OFF -DWITH_NEL_TESTS=OFF -DWITH_NEL_SAMPLES=OFF -DWITH_NEL_TOOLS=OFF -DWITH_RYZOM_TOOLS=OFF -DWITH_RYZOM_SERVER=OFF -DWITH_RYZOM_CLIENT=ON -DWITH_DRIVER_OPENGL=ON -DWITH_DRIVER_OPENAL=ON -DWITH_DRIVER_DIRECT3D=OFF -DWITH_DRIVER_XAUDIO2=OFF ..'
- task: Xcode@5
inputs:
actions: 'build'
configuration: Release
sdk: macosx12.0
xcWorkspacePath: 'build.release/RyzomCore.xcodeproj'
scheme: 'ALL_BUILD'
packageApp: false
#- task: PublishPipelineArtifact@1
# inputs:
# targetPath: build.release/bin/
# artifactName: RyzomClientMacOS11Release

@ -1,23 +0,0 @@
; Top-most EditorConfig file
root = true
; 4-column tab indentation
[*.cpp]
indent_style = tab
indent_size = 4
[*.c]
indent_style = tab
indent_size = 4
[*.h]
indent_style = tab
indent_size = 4
[*.py]
indent_style = tab
indent_size = 4
[*.config]
indent_style = space
indent_size = 2

@ -1,94 +0,0 @@
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
// Copyright (C) 2010 Winch Gate Property Limited
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#ifndef NL_CSS_BORDER_RENDERER_H
#define NL_CSS_BORDER_RENDERER_H
#include "nel/misc/types_nl.h"
#include "nel/misc/rgba.h"
#include "nel/misc/geom_ext.h"
#include "nel/gui/css_types.h"
namespace NLGUI
{
/**
* \brief Border renderer for GUI classes
* \date 2019-09-03 10:50 GMT
* \author Meelis Mägi (Nimetu)
*/
class CSSBorderRenderer
{
private:
// parent element screen coordinates
sint32 _XReal, _YReal;
sint32 _WReal, _HReal;
NLMISC::CQuadUV _QuadT;
NLMISC::CQuadUV _QuadR;
NLMISC::CQuadUV _QuadB;
NLMISC::CQuadUV _QuadL;
uint8 _RenderLayer;
bool _ModulateGlobalColor;
// if true, then updateCoords() is called from draw()
bool _Dirty;
// if true, then at least one border is set
bool _Border;
bool _BorderTop, _BorderRight, _BorderBottom, _BorderLeft;
public:
uint32 TopWidth, RightWidth, BottomWidth, LeftWidth;
NLMISC::CRGBA TopColor, RightColor, BottomColor, LeftColor;
CSSLineStyle TopStyle, RightStyle, BottomStyle, LeftStyle;
// alpha value from parent
uint8 CurrentAlpha;
public:
CSSBorderRenderer();
void setRenderLayer(sint layer);
void setModulateGlobalColor(bool m);
void setRect(sint32 x, sint32 y, sint32 w, sint32 h);
void setWidth(uint32 top, uint32 right, uint32 bottom, uint32 left);
void setStyle(CSSLineStyle top, CSSLineStyle right, CSSLineStyle bottom, CSSLineStyle left);
void setColor(const NLMISC::CRGBA &top, const NLMISC::CRGBA &right, const NLMISC::CRGBA &bottom, const NLMISC::CRGBA &left);
void updateCoords();
void invalidateCoords() { _Dirty = _Border = true; }
void invalidateContent() { _Dirty = _Border = true; };
uint32 getTopWidth() const;
uint32 getRightWidth() const;
uint32 getBottomWidth() const;
uint32 getLeftWidth() const;
uint32 getLeftRightWidth() const;
uint32 getTopBottomWidth() const;
void draw();
}; // CSSBorderRenderer
}//namespace
#endif // NL_CSS_BORDER_RENDERER_H

@ -1,393 +0,0 @@
// NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
// Copyright (C) 2010 Winch Gate Property Limited
//
// This source file has been modified by the following contributors:
// Copyright (C) 2015 Jan BOON (Kaetemi) <jan.boon@kaetemi.be>
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#ifndef NL_UCSTRING_H
#define NL_UCSTRING_H
#include "types_nl.h"
#include "debug.h"
#include <string>
/**
* \typedef ucstring
* An unicode string class (16 bits per character).
* Add features to convert and assign \c ucstring to \c string and \c string to \c ucstring.
*/
typedef std::basic_string<ucchar> ucstringbase;
class ucstring : public ucstringbase
{
public:
ucstring () {}
ucstring (const ucstringbase &str) : ucstringbase (str) {}
ucstring (const std::string &str) : ucstringbase ()
{
rawCopy(str);
}
~ucstring () {}
ucstring &operator= (ucchar c)
{
resize (1);
operator[](0) = c;
return *this;
}
ucstring &operator= (const char *str)
{
resize (strlen (str));
for (uint i = 0; i < strlen (str); i++)
{
operator[](i) = uint8(str[i]);
}
return *this;
}
ucstring &operator= (const std::string &str)
{
resize (str.size ());
for (uint i = 0; i < str.size (); i++)
{
operator[](i) = uint8(str[i]);
}
return *this;
}
ucstring &operator= (const ucstringbase &str)
{
ucstringbase::operator =(str);
return *this;
}
ucstring& operator= (const ucchar *str)
{
ucstringbase::operator =(str);
return *this;
}
ucstring &operator+= (ucchar c)
{
resize (size() + 1);
operator[](size()-1) = c;
return *this;
}
ucstring &operator+= (const char *str)
{
size_t s = size();
resize (s + strlen(str));
for (uint i = 0; i < strlen(str); i++)
{
operator[](s+i) = uint8(str[i]);
}
return *this;
}
ucstring &operator+= (const std::string &str)
{
size_t s = size();
resize (s + str.size());
for (uint i = 0; i < str.size(); i++)
{
operator[](s+i) = uint8(str[i]);
}
return *this;
}
ucstring &operator+= (const ucstringbase &str)
{
ucstringbase::operator +=(str);
return *this;
}
const ucchar *c_str() const
{
const ucchar *tmp = ucstringbase::c_str();
const_cast<ucchar*>(tmp)[size()] = 0;
return tmp;
}
/// Converts the controlled ucstring to a string str
void toString (std::string &str) const
{
str.resize (size ());
for (uint i = 0; i < str.size (); i++)
{
if (operator[](i) > 255)
str[i] = '?';
else
str[i] = (char) operator[](i);
}
}
/// Converts the controlled ucstring and returns the resulting string
std::string toString () const
{
std::string str;
toString(str);
return str;
}
/// Convert this ucstring (16bits char) into a utf8 string
std::string toUtf8() const
{
std::string res;
ucstring::const_iterator first(begin()), last(end());
for (; first != last; ++first)
{
//ucchar c = *first;
uint nbLoop = 0;
if (*first < 0x80)
res += char(*first);
else if (*first < 0x800)
{
ucchar c = *first;
c = c >> 6;
c = c & 0x1F;
res += char(c) | 0xC0;
nbLoop = 1;
}
else /*if (*first < 0x10000)*/
{
ucchar c = *first;
c = c >> 12;
c = c & 0x0F;
res += char(c) | 0xE0;
nbLoop = 2;
}
for (uint i=0; i<nbLoop; ++i)
{
ucchar c = *first;
c = c >> ((nbLoop - i - 1) * 6);
c = c & 0x3F;
res += char(c) | 0x80;
}
}
return res;
}
ucstring substr(size_type pos = 0, size_type n = npos) const
{
return ucstringbase::substr(pos, n);
}
// for luabind (can't bind to 'substr' else ...)
ucstring luabind_substr(size_type pos = 0, size_type n = npos) const
{
return ucstringbase::substr(pos, n);
}
/// Convert the utf8 string into this ucstring (16 bits char)
void fromUtf8(const std::string &stringUtf8)
{
// clear the string
erase();
uint8 c;
ucchar code;
sint iterations = 0;
std::string::const_iterator first(stringUtf8.begin()), last(stringUtf8.end());
for (; first != last; )
{
c = *first++;
code = c;
if ((code & 0xFE) == 0xFC)
{
code &= 0x01;
iterations = 5;
}
else if ((code & 0xFC) == 0xF8)
{
code &= 0x03;
iterations = 4;
}
else if ((code & 0xF8) == 0xF0)
{
code &= 0x07;
iterations = 3;
}
else if ((code & 0xF0) == 0xE0)
{
code &= 0x0F;
iterations = 2;
}
else if ((code & 0xE0) == 0xC0)
{
code &= 0x1F;
iterations = 1;
}
else if ((code & 0x80) == 0x80)
{
// If it's not a valid UTF8 string, just copy the line without utf8 conversion
rawCopy(stringUtf8);
return;
}
else
{
push_back(code);
iterations = 0;
}
if (iterations)
{
for (sint i = 0; i < iterations; i++)
{
if (first == last)
{
// If it's not a valid UTF8 string, just copy the line without utf8 conversion
rawCopy(stringUtf8);
return;
}
uint8 ch;
ch = *first ++;
if ((ch & 0xC0) != 0x80)
{
// If it's not a valid UTF8 string, just copy the line without utf8 conversion
rawCopy(stringUtf8);
return;
}
code <<= 6;
code |= (ucchar)(ch & 0x3F);
}
push_back(code);
}
}
}
static ucstring makeFromUtf8(const std::string &stringUtf8)
{
ucstring ret;
ret.fromUtf8(stringUtf8);
return ret;
}
private:
void rawCopy(const std::string &str)
{
// We need to convert the char into 8bits unsigned int before promotion to 16 bits
// otherwise, as char are signed on some compiler (MSCV for ex), the sign bit is extended to 16 bits.
resize(str.size());
std::string::const_iterator first(str.begin()), last(str.end());
iterator dest(begin());
for (;first != last; ++first, ++dest)
{
*dest = uint8(*first);
}
}
};
inline ucstring operator+(const ucstringbase &ucstr, ucchar c)
{
ucstring ret;
ret= ucstr;
ret+= c;
return ret;
}
inline ucstring operator+(const ucstringbase &ucstr, const char *c)
{
ucstring ret;
ret= ucstr;
ret+= c;
return ret;
}
inline ucstring operator+(const ucstringbase &ucstr, const std::string &c)
{
ucstring ret;
ret= ucstr;
ret+= c;
return ret;
}
inline ucstring operator+(ucchar c, const ucstringbase &ucstr)
{
ucstring ret;
ret= c;
ret += ucstr;
return ret;
}
inline ucstring operator+(const char *c, const ucstringbase &ucstr)
{
ucstring ret;
ret= c;
ret += ucstr;
return ret;
}
inline ucstring operator+(const std::string &c, const ucstringbase &ucstr)
{
ucstring ret;
ret= c;
ret += ucstr;
return ret;
}
namespace NLMISC
{
// Traits for hash_map using CEntityId
struct CUCStringHashMapTraits
{
enum { bucket_size = 4, min_buckets = 8 };
CUCStringHashMapTraits() { }
size_t operator() (const ucstring &id ) const
{
return id.size();
}
bool operator() (const ucstring &id1, const ucstring &id2) const
{
return id1 < id2;
}
};
/** Convert an unicode string in lower case.
* Characters with accent are converted in a lowercase character with accent
* \param a string or a char to transform to lower case
*/
ucstring toLower (const ucstring &str);
void toLower (ucchar *str);
ucchar toLower (ucchar c);
/** Convert an unicode string in upper case.
* Characters with accent are converted in a uppercase character without accent
* \param a string or a char to transform to upper case
*/
ucstring toUpper (const ucstring &str);
void toUpper (ucchar *str);
ucchar toUpper (ucchar c);
};
#endif // NL_UCSTRING_H

@ -1,320 +0,0 @@
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
// Copyright (C) 2010 Winch Gate Property Limited
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "stdpch.h"
#include "nel/gui/css_border_renderer.h"
#include "nel/gui/view_renderer.h"
#include "nel/gui/widget_manager.h"
using namespace std;
using namespace NLMISC;
#ifdef DEBUG_NEW
#define new DEBUG_NEW
#endif
namespace NLGUI
{
// ----------------------------------------------------------------------------
CSSBorderRenderer::CSSBorderRenderer()
{
TopWidth = RightWidth = BottomWidth = LeftWidth = 0;
TopColor = RightColor = BottomColor = LeftColor = CRGBA(128, 128, 128, 255);
TopStyle = RightStyle = BottomStyle = LeftStyle = CSS_LINE_STYLE_SOLID;
CurrentAlpha = 255;
_RenderLayer = 0;
_ModulateGlobalColor = false;
_Border = true;
_Dirty = true;
_BorderTop = _BorderRight = _BorderBottom = _BorderLeft = false;
//
_QuadT.Uv0.set(0.f, 0.f);
_QuadT.Uv1.set(0.f, 0.f);
_QuadT.Uv2.set(1.f, 1.f);
_QuadT.Uv3.set(0.f, 1.f);
//
_QuadR.Uv0.set(0.f, 0.f);
_QuadR.Uv1.set(0.f, 0.f);
_QuadR.Uv2.set(1.f, 1.f);
_QuadR.Uv3.set(0.f, 1.f);
//
_QuadB.Uv0.set(0.f, 0.f);
_QuadB.Uv1.set(0.f, 0.f);
_QuadB.Uv2.set(1.f, 1.f);
_QuadB.Uv3.set(0.f, 1.f);
//
_QuadL.Uv0.set(0.f, 0.f);
_QuadL.Uv1.set(0.f, 0.f);
_QuadL.Uv2.set(1.f, 1.f);
_QuadL.Uv3.set(0.f, 1.f);
}
// ----------------------------------------------------------------------------
void CSSBorderRenderer::setRenderLayer(sint layer)
{
_RenderLayer = layer;
}
// ----------------------------------------------------------------------------
void CSSBorderRenderer::setModulateGlobalColor(bool s)
{
_ModulateGlobalColor = s;
}
// ----------------------------------------------------------------------------
void CSSBorderRenderer::setRect(sint32 x, sint32 y, sint32 w, sint32 h)
{
_XReal = x;
_YReal = y;
_WReal = w;
_HReal = h;
_Dirty = _Border = (w > 0 && h > 0);
}
// ----------------------------------------------------------------------------
void CSSBorderRenderer::setWidth(uint32 top, uint32 right, uint32 bottom, uint32 left)
{
TopWidth = top;
RightWidth = right;
BottomWidth = bottom;
LeftWidth = left;
_Dirty = _Border = (top > 0 || right > 0 || bottom > 0 || left > 0);
}
// ----------------------------------------------------------------------------
void CSSBorderRenderer::setStyle(CSSLineStyle top, CSSLineStyle right, CSSLineStyle bottom, CSSLineStyle left)
{
TopStyle = top;
RightStyle = right;
BottomStyle = bottom;
LeftStyle = left;
_Dirty = _Border = true;
}
// ----------------------------------------------------------------------------
void CSSBorderRenderer::setColor(const NLMISC::CRGBA &top, const NLMISC::CRGBA &right, const NLMISC::CRGBA &bottom, const NLMISC::CRGBA &left)
{
TopColor = top;
RightColor = right;
BottomColor = bottom;
LeftColor = left;
_Dirty = true;
}
// ----------------------------------------------------------------------------
uint32 CSSBorderRenderer::getTopWidth() const
{
if (TopStyle == CSS_LINE_STYLE_NONE || TopStyle == CSS_LINE_STYLE_HIDDEN)
return 0;
return TopWidth;
}
// ----------------------------------------------------------------------------
uint32 CSSBorderRenderer::getRightWidth() const
{
if (RightStyle == CSS_LINE_STYLE_NONE || RightStyle == CSS_LINE_STYLE_HIDDEN)
return 0;
return RightWidth;
}
// ----------------------------------------------------------------------------
uint32 CSSBorderRenderer::getBottomWidth() const
{
if (BottomStyle == CSS_LINE_STYLE_NONE || BottomStyle == CSS_LINE_STYLE_HIDDEN)
return 0;
return BottomWidth;
}
// ----------------------------------------------------------------------------
uint32 CSSBorderRenderer::getLeftWidth() const
{
if (LeftStyle == CSS_LINE_STYLE_NONE || LeftStyle == CSS_LINE_STYLE_HIDDEN)
return 0;
return LeftWidth;
}
// ----------------------------------------------------------------------------
uint32 CSSBorderRenderer::getLeftRightWidth() const
{
return getLeftWidth() + getRightWidth();
}
// ----------------------------------------------------------------------------
uint32 CSSBorderRenderer::getTopBottomWidth() const
{
return getTopWidth() + getBottomWidth();
}
// ----------------------------------------------------------------------------
void CSSBorderRenderer::updateCoords()
{
_Dirty = false;
if (!_Border) return;
sint dTop = getTopWidth(); _BorderTop = dTop > 0;
sint dRight = getRightWidth(); _BorderRight = dRight > 0;
sint dBottom = getBottomWidth(); _BorderBottom = dBottom > 0;
sint dLeft = getLeftWidth(); _BorderLeft = dLeft > 0;
_Border = _BorderTop || _BorderRight || _BorderBottom || _BorderLeft;
if (!_Border) return;
if (_BorderTop)
{
// top-left
_QuadT.V3.x = _XReal;
_QuadT.V3.y = _YReal + _HReal;
// top-right
_QuadT.V2.x = _XReal + _WReal;
_QuadT.V2.y = _YReal + _HReal;
// bottom-right
_QuadT.V1.x = _XReal + _WReal - dRight;
_QuadT.V1.y = _YReal + _HReal - dTop;
// bottom-left
_QuadT.V0.x = _XReal + dLeft;
_QuadT.V0.y = _YReal + _HReal - dTop;
}
if (_BorderRight)
{
// top-left
_QuadR.V3.x = _XReal + _WReal - dRight;
_QuadR.V3.y = _YReal + _HReal - dTop;
// top-right
_QuadR.V2.x = _XReal + _WReal;
_QuadR.V2.y = _YReal + _HReal;
// bottom-right
_QuadR.V1.x = _XReal + _WReal;
_QuadR.V1.y = _YReal;
// bottom-left
_QuadR.V0.x = _XReal + _WReal - dRight;
_QuadR.V0.y = _YReal + dBottom;
}
if (_BorderBottom)
{
// top-left
_QuadB.V3.x = _XReal + dLeft;
_QuadB.V3.y = _YReal + dBottom;
// top-right
_QuadB.V2.x = _XReal + _WReal - dRight;
_QuadB.V2.y = _YReal + dBottom;
// bottom-right
_QuadB.V1.x = _XReal + _WReal;
_QuadB.V1.y = _YReal;
// bottom-left
_QuadB.V0.x = _XReal;
_QuadB.V0.y = _YReal;
}
if (_BorderLeft)
{
// top-left
_QuadL.V3.x = _XReal;
_QuadL.V3.y = _YReal + _HReal;
// top-right
_QuadL.V2.x = _XReal + dLeft;
_QuadL.V2.y = _YReal + _HReal - dTop;
// bottom-right
_QuadL.V1.x = _XReal + dLeft;
_QuadL.V1.y = _YReal + dBottom;
// bottom-left
_QuadL.V0.x = _XReal;
_QuadL.V0.y = _YReal;
}
}
// ----------------------------------------------------------------------------
void CSSBorderRenderer::draw() {
if (_Dirty) updateCoords();
if (!_Border) return;
CViewRenderer &rVR = *CViewRenderer::getInstance();
// TODO: no need for widget manager, if global color is set from parent
CRGBA globalColor;
if (_ModulateGlobalColor)
globalColor = CWidgetManager::getInstance()->getGlobalColor();
// TODO: monitor ModulateGlobalColor and CurrentAlpha in table checkCoords and recalculate colors on change only
// OUTSET - bottom/right darker than normal (default table style)
// INSET - top/left darker than normal
if (_BorderTop)
{
CRGBA borderColorT = TopColor;
if (TopStyle == CSS_LINE_STYLE_INSET)
borderColorT = blend(borderColorT, CRGBA::Black, 0.5f);
if (_ModulateGlobalColor)
borderColorT.modulateFromColor (borderColorT, globalColor);
borderColorT.A = (uint8) (((uint16) CurrentAlpha * (uint16) borderColorT.A) >> 8);
rVR.drawQuad(_RenderLayer, _QuadT, rVR.getBlankTextureId(), borderColorT, false);
}
if (_BorderRight)
{
CRGBA borderColorR = RightColor;
if (RightStyle == CSS_LINE_STYLE_OUTSET)
borderColorR = blend(borderColorR, CRGBA::Black, 0.5f);
if (_ModulateGlobalColor)
borderColorR.modulateFromColor (borderColorR, globalColor);
borderColorR.A = (uint8) (((uint16) CurrentAlpha * (uint16) borderColorR.A) >> 8);
rVR.drawQuad(_RenderLayer, _QuadR, rVR.getBlankTextureId(), borderColorR, false);
}
if (_BorderBottom)
{
CRGBA borderColorB = BottomColor;
if (BottomStyle == CSS_LINE_STYLE_OUTSET)
borderColorB = blend(borderColorB, CRGBA::Black, 0.5f);
if (_ModulateGlobalColor)
borderColorB.modulateFromColor (borderColorB, globalColor);
borderColorB.A = (uint8) (((uint16) CurrentAlpha * (uint16) borderColorB.A) >> 8);
rVR.drawQuad(_RenderLayer, _QuadB, rVR.getBlankTextureId(), borderColorB, false);
}
if (_BorderLeft)
{
CRGBA borderColorL = LeftColor;
if (LeftStyle == CSS_LINE_STYLE_INSET)
borderColorL = blend(borderColorL, CRGBA::Black, 0.5f);
if (_ModulateGlobalColor)
borderColorL.modulateFromColor (borderColorL, globalColor);
borderColorL.A = (uint8) (((uint16) CurrentAlpha * (uint16) borderColorL.A) >> 8);
rVR.drawQuad(_RenderLayer, _QuadL, rVR.getBlankTextureId(), borderColorL, false);
}
}
}//namespace

File diff suppressed because it is too large Load Diff

@ -1,5 +0,0 @@
MainDirectory = "w:\database";
MirrorDirectory = "q:\database";
LogDirectory = "";
BinaryCompare = "false";
IgnoreDirectory = "";

@ -1 +0,0 @@
build_soundbank_r L:\leveldesign\ L:\leveldesign\dfn\ L:\build\sound_sheets\

@ -1,43 +0,0 @@
*HASH_VALUE bodypartID name pro daa ia da p pia pda description
_ACB9BC721BA65099 HHead Kopf deinen den ein der Köpfe die
_278A7C5D654814CD HChest Oberkörper deinen den ein der Oberkörper die
_A2D940906B29B889 HArms Arme deine die die Arme die
_B1CAFC85DB767C9C HHands Hände deine die die Hände die
_20A8389BAC987C9F HLegs Beine deine die die Beine die
_E18820962C586494 HFeet Füße deine die die Füße die
_ACB9BC7B1B375099 QHead Kopf deinen den ein der Köpfe die
_E80BB4A21A9838B5 QBody Körper deinen den ein der Körper die
_C96F0919D2F8DC71 QFrontPaws Vorderbeine deinen die die Vorderbeine die
_08A1A8FEABC3CD11 QFrontHooves Vorderbeine deine die die Vorderbeine die
_23B95F02A87957B0 QRearPaws Hinterbeine deine die die Hinterbeine die
_D880990C5BE9DCB7 QRearHooves Hinterbeine deine die die Hinterbeine die
_2836645DDE8874AD LKHead Kopf deinen den ein der Köpfe die
_ED86C05FE298A4B9 LKBody Körper deinen den ein der Körper die
_39BFC0EBE486B512 LKFrontPaws1 Vorderbeine deine die die Vorderbeine die
_79BFC0EBE486B512 LKFrontPaws2 Vorderbeine deine die die Vorderbeine die
_D92BB508D8F884A6 LKRearPaws1 Hinterbeine deine die die Hinterbeine die
_D93BB508D8F884A6 LKRearPaws2 Hinterbeine deine die die Hinterbeine die
_283664575C8874AD FKHead Kopf deinen den ein der Köpfe die
_ED86C0596098A4B9 FKBody Körper deinen den ein der Körper die
_DBBA7473640310B0 FKPaws1 Beine deine die die Beine die
_1BBA7473641310B0 FKPaws2 Beine deine die die Beine die
_66B6A47A4A7ADCC2 FKWings1 Flügel deine die die Flügel die
_66B6A47ACA7ADCC2 FKWings2 Flügel deine die die Flügel die
_ACB9BC701B865099 FHead Kopf deinen den ein der Köpfe die
_E80BB4971AE738B5 FBody Körper deinen den ein der Körper die
_C40D15A82A36DF2C FFrontFins1 Vorderflossen deine die die Vorderflossen die
_C41D15A82A36DF2C FFrontFins2 Vorderflossen deine die die Vorderflossen die
_67B624EBAAF630A4 FRearFins1 Hinterflossen deine die die Hinterflossen die
_67B628EBAAF630A4 FRearFins2 Hinterflossen deine die die Hinterflossen die
_ACB9BC6C1B465099 BHead Kopf deinen den ein der Köpfe die
_E80BB4931AA738B5 BBody Körper deinen den ein der Körper die
_25897F8F25594780 BFeet1 Füße deine die die Füße die
_2589838F25594B80 BFeet2 Füße deine die die Füße die
_2C68746BA436D3C2 BWings1 Flügel deine die die Flügel die
_2C68746BA446D7C2 BWings2 Flügel deine die die Flügel die
_8061E6E18C3EA521 PUpperTrunk Stiel deinen den ein die Stiele die
_ECEA3087A666CCC3 Ptrunk Rüssel deinen den ein die Rüssel die
_E7469C4D9B5A0C9D PLeaves1 Blatt dein das ein die Blätter die
_E7469C4DDB5A0C9D PLeaves2 Blatt dein das ein die Blätter die
_C3EE9906771FB524 PLowerTrunk Stamm deinen den ein die Stämme die
_DFA67A5CC7DECDE6 PVisibleRoots Wurzel deine die eine die Wurzeln die

@ -1,43 +0,0 @@
*HASH_VALUE bodypartID name ia da p pia pda description
_ACB9BC721BA65099 HHead head a the heads \d the
_278A7C5D654814CD HChest chest a the chests \d the
_A2D940906B29B889 HArms arms \d the arms \d the
_B1CAFC85DB767C9C HHands hands \d the hands \d the
_20A8389BAC987C9F HLegs legs \d the legs \d the
_E18820962C586494 HFeet feet \d the feet \d the
_ACB9BC7B1B375099 QHead head a the heads \d the
_E80BB4A21A9838B5 QBody body a the bodies \d the
_C96F0919D2F8DC71 QFrontPaws forelegs \d the forelegs \d the
_08A1A8FEABC3CD11 QFrontHooves forelegs \d the forelegs \d the
_23B95F02A87957B0 QRearPaws hind legs \d the hind legs \d the
_D880990C5BE9DCB7 QRearHooves hind legs \d the hind legs \d the
_2836645DDE8874AD LKHead head a the heads \d the
_ED86C05FE298A4B9 LKBody body a the bodies \d the
_39BFC0EBE486B512 LKFrontPaws1 forelegs \d the forelegs \d the
_79BFC0EBE486B512 LKFrontPaws2 forelegs \d the forelegs \d the
_D92BB508D8F884A6 LKRearPaws1 hind legs \d the hind legs \d the
_D93BB508D8F884A6 LKRearPaws2 hind legs \d the hind legs \d the
_283664575C8874AD FKHead head a the heads \d the
_ED86C0596098A4B9 FKBody body a the bodies \d the
_DBBA7473640310B0 FKPaws1 legs \d the legs \d the
_1BBA7473641310B0 FKPaws2 legs \d the legs \d the
_66B6A47A4A7ADCC2 FKWings1 wings \d the wings \d the
_66B6A47ACA7ADCC2 FKWings2 wings \d the wings \d the
_ACB9BC701B865099 FHead head a the heads \d the
_E80BB4971AE738B5 FBody body a the bodies \d the
_C40D15A82A36DF2C FFrontFins1 fore fins \d the fore fins \d the
_C41D15A82A36DF2C FFrontFins2 fore fins \d the fore fins \d the
_67B624EBAAF630A4 FRearFins1 hind fins \d the hind fins \d the
_67B628EBAAF630A4 FRearFins2 hind fins \d the hind fins \d the
_ACB9BC6C1B465099 BHead head a the heads \d the
_E80BB4931AA738B5 BBody body a the bodies \d the
_25897F8F25594780 BFeet1 feet \d the feet \d the
_2589838F25594B80 BFeet2 feet \d the feet \d the
_2C68746BA436D3C2 BWings1 wings \d the wings \d the
_2C68746BA446D7C2 BWings2 wings \d the wings \d the
_8061E6E18C3EA521 PUpperTrunk upper trunk an the upper trunks \d the
_ECEA3087A666CCC3 Ptrunk trunk a the trunks \d the
_E7469C4D9B5A0C9D PLeaves1 leaf a the leaves \d the
_E7469C4DDB5A0C9D PLeaves2 leaf a the leaves \d the
_C3EE9906771FB524 PLowerTrunk lower trunk a the lower trunks \d the
_DFA67A5CC7DECDE6 PVisibleRoots visible root a the visible roots \d the

@ -1,43 +0,0 @@
*HASH_VALUE bodypartID name ia da p pia pda description
_ACB9BC721BA65099 HHead cabeza una la cabezas las
_278A7C5D654814CD HChest torso un el torsos los
_A2D940906B29B889 HArms brazo un el brazos los
_B1CAFC85DB767C9C HHands mano una la manos las
_20A8389BAC987C9F HLegs pierna una la piernas las
_E18820962C586494 HFeet pie un el pies los
_ACB9BC7B1B375099 QHead cabeza una la cabezas las
_E80BB4A21A9838B5 QBody cuerpo un el cuerpos los
_C96F0919D2F8DC71 QFrontPaws pata delantera una la patas delanteras las
_08A1A8FEABC3CD11 QFrontHooves pezuña delantera una la pezuñas delanteras las
_23B95F02A87957B0 QRearPaws pata trasera una la patas traseras las
_D880990C5BE9DCB7 QRearHooves pezuña trasera una la pezuñas traseras las
_2836645DDE8874AD LKHead cabeza una la cabezas las
_ED86C05FE298A4B9 LKBody cuerpo un el cuerpos los
_39BFC0EBE486B512 LKFrontPaws1 pata delantera una la patas delanteras las
_79BFC0EBE486B512 LKFrontPaws2 pata delantera una la pata delanteras las
_D92BB508D8F884A6 LKRearPaws1 pata trasera una la patas traseras las
_D93BB508D8F884A6 LKRearPaws2 pata trasera una la patas traseras las
_283664575C8874AD FKHead cabeza una la cabezas las
_ED86C0596098A4B9 FKBody cuerpo un el cuerpos los
_DBBA7473640310B0 FKPaws1 pierna una la piernas las
_1BBA7473641310B0 FKPaws2 pierna una la piernas las
_66B6A47A4A7ADCC2 FKWings1 ala un el alas las
_66B6A47ACA7ADCC2 FKWings2 ala un el alas las
_ACB9BC701B865099 FHead cabeza una la cabezas las
_E80BB4971AE738B5 FBody cuerpo un el cuerpos los
_C40D15A82A36DF2C FFrontFins1 aleta delantera una la aletas delanteras las
_C41D15A82A36DF2C FFrontFins2 aleta delantera una la aletas delanteras las
_67B624EBAAF630A4 FRearFins1 aleta trasera una la aletas traseras las
_67B628EBAAF630A4 FRearFins2 aleta trasera una la aletas traseras las
_ACB9BC6C1B465099 BHead cabeza una la cabezas las
_E80BB4931AA738B5 BBody cuerpo un el cuerpos los
_25897F8F25594780 BFeet1 pie un el pies los
_2589838F25594B80 BFeet2 pie un el pies los
_2C68746BA436D3C2 BWings1 ala un el alas las
_2C68746BA446D7C2 BWings2 ala un el alas las
_8061E6E18C3EA521 PUpperTrunk tronco superior un el troncos superiores los
_ECEA3087A666CCC3 Ptrunk tronco un el troncos los
_E7469C4D9B5A0C9D PLeaves1 hoja una la hojas las
_E7469C4DDB5A0C9D PLeaves2 hoja una la hojas las
_C3EE9906771FB524 PLowerTrunk tronco inferior un el troncos inferiores los
_DFA67A5CC7DECDE6 PVisibleRoots raíz visible una la raíces visibles las

@ -1,43 +0,0 @@
*HASH_VALUE bodypartID name ia da p pia pda description
_ACB9BC721BA65099 HHead tête une la têtes des les
_278A7C5D654814CD HChest poitrine une la poitrines des les
_A2D940906B29B889 HArms bras un le bras des les
_B1CAFC85DB767C9C HHands main une la mains des les
_20A8389BAC987C9F HLegs jambe une la jambes des les
_E18820962C586494 HFeet pied un le pieds des les
_ACB9BC7B1B375099 QHead tête une la têtes des les
_E80BB4A21A9838B5 QBody corps un le corps des les
_C96F0919D2F8DC71 QFrontPaws patte avant une la pattes avant des les
_08A1A8FEABC3CD11 QFrontHooves sabot avant un le sabots avant des les
_23B95F02A87957B0 QRearPaws patte arrière une la pattes arrière des les
_D880990C5BE9DCB7 QRearHooves sabot arrière un le sabots arrière des les
_2836645DDE8874AD LKHead tête une la têtes des les
_ED86C05FE298A4B9 LKBody corps un le corps des les
_39BFC0EBE486B512 LKFrontPaws1 patte avant une la pattes avant des les
_79BFC0EBE486B512 LKFrontPaws2 patte avant une la pattes avant des les
_D92BB508D8F884A6 LKRearPaws1 patte arrière une la pattes arrière des les
_D93BB508D8F884A6 LKRearPaws2 patte arrière une la pattes arrière des les
_283664575C8874AD FKHead tête une la têtes des les
_ED86C0596098A4B9 FKBody corps un le corps des les
_DBBA7473640310B0 FKPaws1 patte une la pattes des les
_1BBA7473641310B0 FKPaws2 patte une la pattes des les
_66B6A47A4A7ADCC2 FKWings1 aile une l'\d ailes des les
_66B6A47ACA7ADCC2 FKWings2 aile une l'\d ailes des les
_ACB9BC701B865099 FHead tête une la têtes des les
_E80BB4971AE738B5 FBody corps un le corps des les
_C40D15A82A36DF2C FFrontFins1 nageoire avant une la nageoires avant des les
_C41D15A82A36DF2C FFrontFins2 nageoire avant une la nageoires avant des les
_67B624EBAAF630A4 FRearFins1 nageoire arrière une la nageoires arrière des les
_67B628EBAAF630A4 FRearFins2 nageoire arrière une la nageoires arrière des les
_ACB9BC6C1B465099 BHead tête une la têtes des les
_E80BB4931AA738B5 BBody corps un le corps des les
_25897F8F25594780 BFeet1 pied un le pieds des les
_2589838F25594B80 BFeet2 pied un le pieds des les
_2C68746BA436D3C2 BWings1 aile un l'\d ailes des les
_2C68746BA446D7C2 BWings2 aile un l'\d ailes des les
_8061E6E18C3EA521 PUpperTrunk tige supérieure une la tiges supérieures des les
_ECEA3087A666CCC3 Ptrunk tige une la tiges des les
_E7469C4D9B5A0C9D PLeaves1 feuille une la feuilles des les
_E7469C4DDB5A0C9D PLeaves2 feuille une la feuilles des les
_C3EE9906771FB524 PLowerTrunk tige inférieure une la tiges inférieures des les
_DFA67A5CC7DECDE6 PVisibleRoots racine visible une la racines visibles des les

@ -1,43 +0,0 @@
*HASH_VALUE bodypartID name p description prp
_ACB9BC721BA65099 HHead голове головы по
_278A7C5D654814CD HChest грудь груди в
_A2D940906B29B889 HArms предплечью предплечья по
_B1CAFC85DB767C9C HHands руке руки по
_20A8389BAC987C9F HLegs ноге ноги по
_E18820962C586494 HFeet ступне ступни по
_ACB9BC7B1B375099 QHead голове головы по
_E80BB4A21A9838B5 QBody туловище туловища в
_C96F0919D2F8DC71 QFrontPaws передней лапе передние лапы по
_08A1A8FEABC3CD11 QFrontHooves передней ноге передние ноги по
_23B95F02A87957B0 QRearPaws задней лапе задние лапы по
_D880990C5BE9DCB7 QRearHooves задней ноге задние ноги по
_2836645DDE8874AD LKHead голове головы по
_ED86C05FE298A4B9 LKBody туловище туловища по
_39BFC0EBE486B512 LKFrontPaws1 передней лапе передние лапы по
_79BFC0EBE486B512 LKFrontPaws2 передней лапе передние лапы по
_D92BB508D8F884A6 LKRearPaws1 задней лапе задние лапы по
_D93BB508D8F884A6 LKRearPaws2 задняя лапе задние лапы по
_283664575C8874AD FKHead голове головы по
_ED86C0596098A4B9 FKBody туловище туловища в
_DBBA7473640310B0 FKPaws1 лапе лапы по
_1BBA7473641310B0 FKPaws2 ноге ноги по
_66B6A47A4A7ADCC2 FKWings1 крылу крылья по
_66B6A47ACA7ADCC2 FKWings2 крылу крылья по
_ACB9BC701B865099 FHead голове головы по
_E80BB4971AE738B5 FBody туловище туловища в
_C40D15A82A36DF2C FFrontFins1 переднему плавнику передние плавники по
_C41D15A82A36DF2C FFrontFins2 переднему плавнику передние плавники по
_67B624EBAAF630A4 FRearFins1 заднему плавнику задние плавники по
_67B628EBAAF630A4 FRearFins2 заднему плавнику задние плавники по
_ACB9BC6C1B465099 BHead голове головы по
_E80BB4931AA738B5 BBody туловище туловища в
_25897F8F25594780 BFeet1 ноге ноги по
_2589838F25594B80 BFeet2 ноге ноги по
_2C68746BA436D3C2 BWings1 крылу крылья по
_2C68746BA446D7C2 BWings2 крылу крылья по
_8061E6E18C3EA521 PUpperTrunk верху стебля верхние стебли по
_ECEA3087A666CCC3 Ptrunk стеблю стебли по
_E7469C4D9B5A0C9D PLeaves1 листу листья по
_E7469C4DDB5A0C9D PLeaves2 листу листья по
_C3EE9906771FB524 PLowerTrunk низу стебля нижние стебли по
_DFA67A5CC7DECDE6 PVisibleRoots корень корни в

@ -1,43 +0,0 @@
*HASH_VALUE bodypartID name ia da p pia pda description
_ACB9BC721BA65099 HHead head an the heads the
_278A7C5D654814CD HChest chest a the chests the
_A2D940906B29B889 HArms arms the arms the
_B1CAFC85DB767C9C HHands hands the hands the
_20A8389BAC987C9F HLegs legs the legs the
_E18820962C586494 HFeet feet the feet the
_ACB9BC7B1B375099 QHead head an the heads the
_E80BB4A21A9838B5 QBody body a the bodies the
_C96F0919D2F8DC71 QFrontPaws front legs the front legs the
_08A1A8FEABC3CD11 QFrontHooves front legs the front legs the
_23B95F02A87957B0 QRearPaws rear legs the rear legs the
_D880990C5BE9DCB7 QRearHooves rear legs the rear legs the
_2836645DDE8874AD LKHead head an the heads the
_ED86C05FE298A4B9 LKBody body a the bodies the
_39BFC0EBE486B512 LKFrontPaws1 front legs the front legs the
_79BFC0EBE486B512 LKFrontPaws2 front legs the front legs the
_D92BB508D8F884A6 LKRearPaws1 rear legs the rear legs the
_D93BB508D8F884A6 LKRearPaws2 rear legs the rear legs the
_283664575C8874AD FKHead head an the heads the
_ED86C0596098A4B9 FKBody body a the bodies the
_DBBA7473640310B0 FKPaws1 legs the legs the
_1BBA7473641310B0 FKPaws2 legs the legs the
_66B6A47A4A7ADCC2 FKWings1 wings the wings the
_66B6A47ACA7ADCC2 FKWings2 wings the wings the
_ACB9BC701B865099 FHead head an the heads the
_E80BB4971AE738B5 FBody body a the bodies the
_C40D15A82A36DF2C FFrontFins1 front fins the front fins the
_C41D15A82A36DF2C FFrontFins2 front fins the front fins the
_67B624EBAAF630A4 FRearFins1 rear fins the rear fins the
_67B628EBAAF630A4 FRearFins2 rear fins the rear fins the
_ACB9BC6C1B465099 BHead head an the heads the
_E80BB4931AA738B5 BBody body a the bodies the
_25897F8F25594780 BFeet1 feet the feet the
_2589838F25594B80 BFeet2 feet the feet the
_2C68746BA436D3C2 BWings1 wings the wings the
_2C68746BA446D7C2 BWings2 wings the wings the
_CCD189BCC86AD11B PUpperTrunk Upper Trunk an the Upper Trunks the
_F1EA0CAEA90BB4B5 Ptrunk Trunk a the Trunks the
_60C70C89DC1C7CB6 PLeaves1 Leaf a the Leaves the
_60C70C891C1C7CB6 PLeaves2 Leaf a the Leaves the
_0CAF41BCC86AED1A PLowerTrunk Lower Trunk a the Lower Trunks the
_DFA6C25CC7DECDE6 PVisibleRoots Visible Root a the Visible Roots the

@ -1,9 +0,0 @@
*HASH_VALUE career ID name named * noms français ia da p pd pia pda
_1700C956C37FB64F MeleeFighter Nahkämpfer Nahkämpfer Combattant Contact ein der Nahkämpfer die die
_9720B95DC35FBA54 RangeFighter Fernkämpfer Fernkämpfer Combattant Distance ein der Fernkämpfer die die
_D32171700AD23D57 AttackCaster Kampfmagier Kampfmagier Caster Attaque ein der Kampfmagier die die
_9A511D668371AE04 BufferCaster Schutzmagier Schutzmagier Caster Buffer ein der Schutzmagier die die
_1C01F56701816E0A HealerCaster Heiler Heiler Caster Healer ein der Heiler die die
_A6473C7A6A380099 Ranger Ranger Ranger Ranger ein der Ranger die die
_EA665D00EAE788B3 Shopkeeper Händler Händler Marchand ein der Händler die die
_2D28B08D636AEC9E Artisan Handwerker Handwerker Crafter ein der Handwerker die die

@ -1,9 +0,0 @@
*HASH_VALUE career ID name * noms français ia da p pia pda
_1700C956C37FB64F MeleeFighter Melee Fighter Combattant Contact a the Melee Fighters the
_9720B95DC35FBA54 RangeFighter Range Fighter Combattant Distance a the Range Fighters the
_D32171700AD23D57 AttackCaster Attack Caster Caster Attaque an the Attack Casters the
_9A511D668371AE04 BufferCaster Buffer Caster Caster Buffer a the Buffer Casters the
_1C01F56701816E0A HealerCaster Healer Caster Caster Healer a the Healer Casters the
_A6473C7A6A380099 Ranger Ranger Ranger a the Rangers the
_EA665D00EAE788B3 Shopkeeper Merchant Marchand a the Merchants the
_2D28B08D636AEC9E Artisan Crafter Crafter a the Crafters the

@ -1,9 +0,0 @@
*HASH_VALUE career ID name * noms français ia da p pia pda
_1700C956C37FB64F MeleeFighter Luchador Cuerpo a Cuerpo Combattant Contact un el Luchadores Cuerpo a Cuerpo unos los
_9720B95DC35FBA54 RangeFighter Luchador a Distancia Combattant Distance un el Luchadores a Distancia unos los
_D32171700AD23D57 AttackCaster Lanzador de Ataque Caster Attaque un el Lanzadores de Ataque unos los
_9A511D668371AE04 BufferCaster Lanzador de Defensa Caster Buffer un el Lanzadores de Defensa unos los
_1C01F56701816E0A HealerCaster Sanador Caster Healer un el Sanadores unos los
_A6473C7A6A380099 Ranger Ranger un el Rangers unos los
_EA665D00EAE788B3 Shopkeeper Tendero un el Tenderos unos los
_2D28B08D636AEC9E Artisan Artesano un el Artesanos unos los

@ -1,9 +0,0 @@
*HASH_VALUE career ID name * noms français ia da p pia pda
_1700C956C37FB64F MeleeFighter Combattant de mêlée Combattant Contact un le Combattants de mêlée des les
_9720B95DC35FBA54 RangeFighter Combattant à distance Combattant Distance un le Combattants à distance des les
_D32171700AD23D57 AttackCaster Mage offensif Mage Attaque un le Mages offensifs des les
_9A511D668371AE04 BufferCaster Mage protecteur Mage Protection un le Mages protecteurs des les
_1C01F56701816E0A HealerCaster Guérisseur Guérisseur un le Guérisseurs des les
_A6473C7A6A380099 Ranger Récolteur Ranger un le Récolteurs des les
_EA665D00EAE788B3 Shopkeeper Marchand Marchand un le Marchands des les
_2D28B08D636AEC9E Artisan Artisan Artisan un l'\d Artisans des les

@ -1,9 +0,0 @@
*HASH_VALUE career ID name * noms français p
_1700C956C37FB64F MeleeFighter Боец ближнего боя Combattant Contact Бойцы ближнего боя
_9720B95DC35FBA54 RangeFighter Боец дальнего боя Combattant Distance Бойцы дальнего боя
_D32171700AD23D57 AttackCaster Боевой маг Caster Attaque Боевые маги
_9A511D668371AE04 BufferCaster Маг поддержки Caster Buffer Маги поддержки
_1C01F56701816E0A HealerCaster Целитель Caster Healer Целители
_A6473C7A6A380099 Ranger Охотник Ranger Охотники
_EA665D00EAE788B3 Shopkeeper Торговец Marchand Торговцы
_2D28B08D636AEC9E Artisan Ремесленник Crafter Ремесленники

@ -1,9 +0,0 @@
*HASH_VALUE career ID name * noms français ia da p pia pda
_1700C956C37FB64F MeleeFighter Melee Fighter Combattant Contact a the Melee Fighters the
_9720B95DC35FBA54 RangeFighter Range Fighter Combattant Distance a the Range Fighters the
_D32171700AD23D57 AttackCaster Attack Caster Caster Attaque an the Attack Casters the
_9A511D668371AE04 BufferCaster Buffer Caster Caster Buffer a the Buffer Casters the
_1C01F56701816E0A HealerCaster Healer Caster Caster Healer a the Healer Casters the
_A6473C7A6A380099 Ranger Ranger Ranger a the Rangers the
_EA665D00EAE788B3 Shopkeeper Merchant Marchand a the Merchants the
_EC38FC89E25AE8AD Artisan Crafter Crafter a the Crafters the

@ -1,9 +0,0 @@
*HASH_VALUE characteristic_ID name named
_B009C46E316AACBF Constitution Konstitution Konstitution
_661AAC8EE6098C96 Metabolism Metabolismus Metabolismus
_E45ADC6364A9D4A6 Intelligence Intelligenz Intelligenz
_E7DB9090281BA0A8 Wisdom Weisheit Weisheit
_649C448C681C74B8 Strength Stärke Stärke
_6A880849E7D8DC86 WellBalanced Gleichgewicht Gleichgewicht
_ADB8DC9A6C5A10B6 Dexterity Geschicklichkeit Geschicklichkeit
_6C18945C6C1894DC Will Wille Wille

@ -1,9 +0,0 @@
*HASH_VALUE characteristic_ID name
_B009C46E316AACBF Constitution constitution
_661AAC8EE6098C96 Metabolism metabolism
_E45ADC6364A9D4A6 Intelligence intelligence
_E7DB9090281BA0A8 Wisdom wisdom
_649C448C681C74B8 Strength strength
_6A880849E7D8DC86 WellBalanced balance
_ADB8DC9A6C5A10B6 Dexterity dexterity
_6C18945C6C1894DC Will will

@ -1,9 +0,0 @@
*HASH_VALUE characteristic_ID name
_B009C46E316AACBF Constitution Constitución
_661AAC8EE6098C96 Metabolism Metabolismo
_E45ADC6364A9D4A6 Intelligence Inteligencia
_E7DB9090281BA0A8 Wisdom Sabiduría
_649C448C681C74B8 Strength Fuerza
_6A880849E7D8DC86 WellBalanced Equilibrio
_ADB8DC9A6C5A10B6 Dexterity Destreza
_6C18945C6C1894DC Will Voluntad

@ -1,9 +0,0 @@
*HASH_VALUE characteristic_ID name
_B009C46E316AACBF Constitution Constitution
_661AAC8EE6098C96 Metabolism Métabolisme
_E45ADC6364A9D4A6 Intelligence Intelligence
_E7DB9090281BA0A8 Wisdom Sagesse
_649C448C681C74B8 Strength Force
_6A880849E7D8DC86 WellBalanced Équilibre
_ADB8DC9A6C5A10B6 Dexterity Dextérité
_6C18945C6C1894DC Will Volonté

@ -1,9 +0,0 @@
*HASH_VALUE characteristic_ID name
_B009C46E316AACBF Constitution телосложение
_661AAC8EE6098C96 Metabolism метаболизм
_E45ADC6364A9D4A6 Intelligence интеллект
_E7DB9090281BA0A8 Wisdom мудрость
_649C448C681C74B8 Strength сила
_6A880849E7D8DC86 WellBalanced сбалансированность
_ADB8DC9A6C5A10B6 Dexterity ловкость
_6C18945C6C1894DC Will воля

@ -1,9 +0,0 @@
*HASH_VALUE characteristic_ID name
_B009C46E316AACBF Constitution constitution
_661AAC8EE6098C96 Metabolism metabolism
_E45ADC6364A9D4A6 Intelligence intelligence
_E7DB9090281BA0A8 Wisdom wisdom
_649C448C681C74B8 Strength strength
_6A880849E7D8DC86 WellBalanced well balanced
_ADB8DC9A6C5A10B6 Dexterity dexterity
_6C18945C6C1894DC Will will

@ -1,21 +0,0 @@
*HASH_VALUE classification_type name ia da p pia pda description
_3A05A61DFA348A48 TypeHumanoid Humanoider ein der Humanoide die Humanoiden
_45506C09EB15E8F6 TypeHomin Homin ein der Homins die Homins
_8E983B69E6751B5B TypeDegenerated Degenerierter ein der Degenerierte die Degenerierten
_A9DA837C2389848E TypeFauna Tier ein das Tiere die Tiere
_EB29AF7C2428C08C TypeFlora Pflanze eine die Pflanzen die Pflanzen
_418079E7A7FCBDE4 TypeDog Hund ein der Hunde die Hunde
_2ADE76E9CAEF61FD TypeRunner Läufer ein der Läufer die Läufer
_E66DB1300A4F65FE TypeHorse Pferd ein das Pferde die Pferde
_41C17C16195279E3 TypeBird Vogel ein der Vögel die Vögel
_86208D03AB86D000 TypeKitin Kitin ein der Kitins die Kitins
_6BA9A101DCF285C2 TypeLandKitin Kitin ein der Kitins die Kitins
_084D91AFD5E36708 TypeFlyingKitin Flugkitin ein der Flugkitins die Flugkitins
_473159828751A1F6 TypeFish Fisch ein der Fische die Fische
_2117AAF84DF7627F TypeRyzomian Ryzomier ein der Ryzomier die Ryzomier
_367CB4F6AA3221AE TypeGreatRyzomian großer Ryzomier ein der große Ryzomier die großen Ryzomier
_FABC37E2BA5ACB87 TypePachyderm Dickhäuter ein der Dickhäuter die Dickhäuter
_20C7038A1FE556FD TypeShellfish Krebstier ein das Krebstiere die Krebstiere
_15EA8409E9C8749E TypeKami Kami ein der Kami die Kami
_84632E6705B131E4 TypeKaravan Karavan ein der Karavan die Karavan
_66BC409E659A149E TypeAll Alle Alle Alle

@ -1,21 +0,0 @@
*HASH_VALUE classification_type name ia da p pia pda description
_3A05A61DFA348A48 TypeHumanoid humanoid a the humanoids the humanoids
_45506C09EB15E8F6 TypeHomin homin a the homins the homins
_8E983B69E6751B5B TypeDegenerated degenerate homin a the degenerate homins the degenerate homins
_A9DA837C2389848E TypeFauna fauna a the faunas the faunas
_EB29AF7C2428C08C TypeFlora flora a the floras the floras
_418079E7A7FCBDE4 TypeDog canine a the canines the canines
_2ADE76E9CAEF61FD TypeRunner runner a the runners the runners
_E66DB1300A4F65FE TypeHorse equine an the equines the equines
_41C17C16195279E3 TypeBird bird a the birds the birds
_86208D03AB86D000 TypeKitin Kitin a the Kitins the Kitins
_6BA9A101DCF285C2 TypeLandKitin Kitin a the Kitins the Kitins
_084D91AFD5E36708 TypeFlyingKitin flying Kitin a the flying Kitins the flying Kitins
_473159828751A1F6 TypeFish fish a the fish the fish
_2117AAF84DF7627F TypeRyzomian ryzomian a the ryzomians the ryzomians
_367CB4F6AA3221AE TypeGreatRyzomian large ryzomian a the large ryzomians the large ryzomians
_FABC37E2BA5ACB87 TypePachyderm pachyderm a the pachyderms the pachyderms
_20C7038A1FE556FD TypeShellfish crustacian a the crustacians the crustacians
_15EA8409E9C8749E TypeKami Kami a the Kamis the Kamis
_84632E6705B131E4 TypeKaravan Karavan a the Karavans the Karavans
_66BC409E659A149E TypeAll all all all

@ -1,21 +0,0 @@
*HASH_VALUE classification_type name ia da p pia pda description
_3A05A61DFA348A48 TypeHumanoid humanoide un el humanoides unos los humanoides
_45506C09EB15E8F6 TypeHomin homin un el homins unos los homins
_8E983B69E6751B5B TypeDegenerated homin degenerado un el homins degenerados unos los homins degenerados
_A9DA837C2389848E TypeFauna fauna la faunas las faunas
_EB29AF7C2428C08C TypeFlora flora la floras las floras
_418079E7A7FCBDE4 TypeDog cánido un el cánidos unos los cánidos
_2ADE76E9CAEF61FD TypeRunner corredor un el corredores unos los corredores
_E66DB1300A4F65FE TypeHorse équido un el équidos unos los équidos
_41C17C16195279E3 TypeBird ave un el aves unas los aves
_86208D03AB86D000 TypeKitin Kitin un el Kitins unos los Kitins
_6BA9A101DCF285C2 TypeLandKitin Kitin un el Kitins unos los Kitins
_084D91AFD5E36708 TypeFlyingKitin Kitin volador un los Kitins voladores unos los Kitins voladores
_473159828751A1F6 TypeFish pez un el peces unos los peces
_2117AAF84DF7627F TypeRyzomian ryzomiano un el ryzomianos unos los ryzomianos
_367CB4F6AA3221AE TypeGreatRyzomian gran ryzomiano un el grandes ryzomianos unos los ryzomianos
_FABC37E2BA5ACB87 TypePachyderm paquidermo un el paquidermos unos un paquidermos
_20C7038A1FE556FD TypeShellfish crustáceo un el crustáceos unos los crustáceos
_15EA8409E9C8749E TypeKami Kami un el Kamis unos los Kamis
_84632E6705B131E4 TypeKaravan Karavan un el Karavan unos los Karavan
_66BC409E659A149E TypeAll todo un el todos unos los todos

@ -1,21 +0,0 @@
*HASH_VALUE classification_type name ia da p pia pda description
_3A05A61DFA348A48 TypeHumanoid humanoïde un l'\d humanoïdes des les les humanoïdes
_45506C09EB15E8F6 TypeHomin homin un l'\d homins des les les homins
_8E983B69E6751B5B TypeDegenerated homin dégénéré un l'\d homins dégénérés des les les homins dégénérés
_A9DA837C2389848E TypeFauna faune la faune la la faune
_EB29AF7C2428C08C TypeFlora flore la flore la la flore
_418079E7A7FCBDE4 TypeDog canidé un le canidés des les les canidés
_2ADE76E9CAEF61FD TypeRunner capriné un le caprinés des les les caprinés
_E66DB1300A4F65FE TypeHorse équidé un l'\d équidés des les les équidés
_41C17C16195279E3 TypeBird oiseau un l'\d oiseaux des les les oiseaux
_86208D03AB86D000 TypeKitin kitin un le kitins des les les kitins
_6BA9A101DCF285C2 TypeLandKitin kitin terrestre un le kitins terrestres des les les kitins terrestres
_084D91AFD5E36708 TypeFlyingKitin kitin volant un le kitins volants des les les kitins volants
_473159828751A1F6 TypeFish poisson un le poissons des les les poissons
_2117AAF84DF7627F TypeRyzomian ryzomien un le ryzomiens des les les ryzomiens
_367CB4F6AA3221AE TypeGreatRyzomian grand ryzomien un le grands ryzomiens des les les grands ryzomiens
_FABC37E2BA5ACB87 TypePachyderm pachyderme un le pachydermes des les les pachydermes
_20C7038A1FE556FD TypeShellfish crustacé un le crustacés des les les crustacés
_15EA8409E9C8749E TypeKami kami un le kamis des les les kamis
_84632E6705B131E4 TypeKaravan karavan une la karavan des les les karavans
_66BC409E659A149E TypeAll tous tous tous

@ -1,21 +0,0 @@
*HASH_VALUE classification_type name p description
_3A05A61DFA348A48 TypeHumanoid человекообразный человекообразные человекообразные
_45506C09EB15E8F6 TypeHomin хомин хомины хомины
_8E983B69E6751B5B TypeDegenerated вырождающийся хомин вырождающиеся хомины вырождающиеся хомины
_A9DA837C2389848E TypeFauna фауна фауна фауна
_EB29AF7C2428C08C TypeFlora флора флора флора
_418079E7A7FCBDE4 TypeDog псовое псовые псовые
_2ADE76E9CAEF61FD TypeRunner серна серны серны
_E66DB1300A4F65FE TypeHorse копытное копытные копытные
_41C17C16195279E3 TypeBird птица птицы птицы
_86208D03AB86D000 TypeKitin кхитин кхитины кxитины
_6BA9A101DCF285C2 TypeLandKitin кхитин кхитины кхитины
_084D91AFD5E36708 TypeFlyingKitin летучий кхитин летучие кхитины летучие кxитины
_473159828751A1F6 TypeFish рыба рыбы рыбы
_2117AAF84DF7627F TypeRyzomian ризомиан ризомиане ризомиане
_367CB4F6AA3221AE TypeGreatRyzomian большой ризомиан большие ризомиане большие ризомиане
_FABC37E2BA5ACB87 TypePachyderm толстокожее толстокожие толстокожие
_20C7038A1FE556FD TypeShellfish ракообразное ракообразные ракообразные
_15EA8409E9C8749E TypeKami ками ками ками
_84632E6705B131E4 TypeKaravan караван караван караван
_66BC409E659A149E TypeAll все все все

@ -1,21 +0,0 @@
*HASH_VALUE classification_type name ia da p pia pda description
_3A05A61DFA348A48 TypeHumanoid humanoïde un l' humanoïdes les les humanoïdes
_45506C09EB15E8F6 TypeHomin homin un l' homins les les homins
_8E983B69E6751B5B TypeDegenerated homin dégénéré un l' homins dégénérés les les homins dégénérés
_A9DA837C2389848E TypeFauna faune la faune la la faune
_EB29AF7C2428C08C TypeFlora flore la flore la la flore
_418079E7A7FCBDE4 TypeDog canidé un le canidés les les canidés
_2ADE76E9CAEF61FD TypeRunner capriné un le caprinés les les caprinés
_E66DB1300A4F65FE TypeHorse équidé un l' équidés les les équidés
_41C17C16195279E3 TypeBird oiseau un l' oiseaux les les oiseaux
_86208D03AB86D000 TypeKitin kitin un le kitins les les kitins
_6BA9A101DCF285C2 TypeLandKitin kitin terrestre un le kitins terrestres les les kitins terrestres
_084D91AFD5E36708 TypeFlyingKitin kitin volant un le kitins volants les les kitins volants
_473159828751A1F6 TypeFish poisson un le poissons les les poissons
_2117AAF84DF7627F TypeRyzomian ryzomien un le ryzomiens les les ryzomiens
_367CB4F6AA3221AE TypeGreatRyzomian grand ryzomien un le grands ryzomiens les les grands ryzomiens
_FABC37E2BA5ACB87 TypePachyderm pachyderme un le pachydermes les les pachydermes
_20C7038A1FE556FD TypeShellfish crustacé un le crustacés les les crustacés
_15EA8409E9C8749E TypeKami kami un le kamis les les kamis
_84632E6705B131E4 TypeKaravan karavan un karavans les les karavans
_66BC409E659A149E TypeAll tous tous tous

@ -1 +0,0 @@
*HASH_VALUE damageTypeId name named ia da p pd pia pda description

@ -1 +0,0 @@
*HASH_VALUE damageTypeId name ia da p pia pda description

@ -1,11 +0,0 @@
*HASH_VALUE damageTypeId name ia da p pia pda description
_EC0860AC264890AB Slashing Tranchant Tranchants
_2D9830A326487C9B Piercing Perforant Perforants
_6CFA0460721A84D2 Blunt Contondant Contondants
_2EDA18A76F8924A9 Rot Pourriture Pourritures
_64766C6AA518A8A1 Acid Acide Acides
_28B6D46E2AE8E8A6 Cold Froid Froid
_A848B076EBB9ECB0 Fire Feu Feux
_E5B90496AEBAD8C1 Poison Poison Poisons
_6659CC92EA58A491 Electricity Electricité Electricité
_E45A9C6C6E78B4B4 Shock Choc Chocs

@ -1 +0,0 @@
*HASH_VALUE damageTypeId name ia da p pia pda description

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save