Compare commits

...

653 Commits

Author SHA1 Message Date
nimetu 62742dceca Fix build error on mac/windows 3 years ago
nimetu 1b386dd648 Enable ConfigureEvent for fullscreen window
Fixes issue where multi-monitor is removed/resized
while client is on that monitor.
3 years ago
nimetu 853e19cd64 Fix KDE/GNOME windowed/fullscreen switching 3 years ago
nimetu a04956989a Client should only use setWindowPos in windowed mode 3 years ago
nimetu 4fa80a0aec Fix getCurrentScreenMode() when no window has been created yet 3 years ago
nimetu b184192bc2
Merge pull request #654 from ryzom/feature/change-sound-driver-ingame
Feature/change sound driver ingame
3 years ago
nimetu 95d1295553 Move hunter luabind names under generic names 3 years ago
nimetu 4c3cae63d4 Fix linking when using static libvorbisfile library 3 years ago
nimetu 0118e8d622 Fix CURL_LIBRARIES for cURL config-file package 3 years ago
nimetu 513712be02 Fix missing symbol from shared library under macOS 3 years ago
Nimetu fd4d3e0c34 Allow to change sound driver from ingame (ryzom/ryzomcore#63) 3 years ago
Nimetu f36450d815 Sound driver selection ui 3 years ago
Nimetu db526ef68b Runtime discovery of available sound drivers 3 years ago
nimetu d752c914f5 Rename lzma binary to nellzma 3 years ago
kaetemi a6139ade22
Disable arch checks on 32 bit GCC that don't build 3 years ago
kaetemi 5b85b4e837
End music playback on critical error, ryzom/ryzomcore#661 3 years ago
kaetemi 01881d26c3
Fix luabind under GCC 9 etc 3 years ago
Jan Boon 1138817a50
Clarify CTA further, ref ryzom/ryzomcore#660 3 years ago
Jan Boon 439eb542e6
Address ryzom/ryzomcore#659 3 years ago
Jan Boon c9f9717e1f
Some corrections 3 years ago
Jan Boon 016a1bc890
Another workaround. This seems heavily outdated 3 years ago
Jan Boon 5d5e5a7e8a
Expand the README.md 3 years ago
kaetemi 8f9429a03d
Fix more failing searches with _ROOT variables set
(cherry picked from commit fc2a38f0cd7ec186f479b71ba63c23cb5bc156d1)
3 years ago
kaetemi 2f1ce0af64
Switch to ryzomcore luabind 3 years ago
kaetemi 66cb51f57a
Set required macro of Hunter curl dependency globally to fix PCH issue 3 years ago
kaetemi 1fb977f16b
Remove more wrongly found dependencies under Hunter 3 years ago
kaetemi 1e1689ab43
Fix FindHelpers for _ROOT variable when using Hunter 3 years ago
kaetemi 19b194804c
Set static libxml2 definition globally to avoid linker errors 3 years ago
kaetemi 5ee73e2275
Remove useless pthread flag under MSVC 3 years ago
kaetemi 2d7a602e79
PCH object should not contain link dummies, fixes "already has a body" error 3 years ago
kaetemi cad53befd9
Fix mysterious duplicate symbol error 3 years ago
kaetemi c484af60fe
Find the correct MSVC toolset when building from command line with a different VS version
(cherry picked from commit 5de95228de4aaf3a3d92a116d7170865a2037e6b)
3 years ago
nimetu 4a34909459 Update azure-pipelines.yml with new hunter tag 3 years ago
nimetu 401d2cbc3a Update hunter to 0.23.321 3 years ago
kaetemi 53892c7f7e
Remove temporary debugging code, ref kaetemi/ryzomclassic#152 3 years ago
nimetu 3f1f46bc7d Fix CSSLength not rejecting percent value 3 years ago
nimetu 7878e13602 Fix CSSLength not setting proper unit type 3 years ago
nimetu d2376f0203 Ensure selected item is visible after menu becomes active 3 years ago
nimetu dc9ab8ec79 Highlight current selected menu item 3 years ago
nimetu 4a4e626f56 Rename CGroupMenu variable 3 years ago
nimetu 1652ac8f1c Replace azure-pipeline hunter jobs with matrix strategy 3 years ago
nimetu 8436aa794e Fix for azure pipeline linux agent OpenSSL compiling error 3 years ago
nimetu cbd0cf5955 Silence warning on deprecated QSAtomicCompareAndSwap32 on macOS 3 years ago
nimetu 99ce0247cc Remove debug message 3 years ago
kaetemi 0ee1536340
Use getHardText where more appropriate 3 years ago
Jan Boon 6bc45e5bbd
Update build badge 3 years ago
Nimetu 2bf12a9a92 Fix CViewText always returning localization key 3 years ago
nimetu dfbef3e5b5 fix typo 3 years ago
nimetu 1a552078a1
Merge pull request #650 from ryzom/feature/hunter
hunter package manager support
3 years ago
Nimetu e1139b7e8d Fix moving fullscreen window between monitors 3 years ago
Nimetu 6727dc00ec Fix initial fullscreen window on OpenGL/Windows 3 years ago
Nimetu de1dba32a2 Fix opengl offscreen mode 3 years ago
Nimetu f13c49219e Disable text shadow on selection text (closes ryzom/ryzomcore#214 3 years ago
Nimetu ba003ee45d Use TARGET_COMPILE_DEFINITIONS to avoid double quotes 3 years ago
Nimetu d46de81fc6 Linking nel udp client sample without nel3d (fixes ryzom/ryzomcore#316) 3 years ago
Nimetu c0a3338029 Fixed cleanup of html downloads 3 years ago
Nimetu 4cf5e4f674 Add macOS to azure pipeline 3 years ago
Nimetu cbcf6b0854 Add ubuntu-18.04 hunter image to azure pipeline 3 years ago
kaetemi 83feb670eb Download with aria2 instead and enable the DX drivers 3 years ago
kaetemi 194edc2606 Download and extract DX SDK 3 years ago
Nimetu 50147b3361 Add windows-2019 to azure pipeline 3 years ago
Nimetu 50c4dba593 Use Windows SDK if DirectX SDK not installed 3 years ago
Nimetu 81212fd728 Fix linking with static OpenAL under windows 3 years ago
Nimetu 640f91c2a0 Use Hunter package manager to compile external libraries 3 years ago
Nimetu a087eacc22 Fix macOS build, cmake 3 years ago
Nimetu 5731ad6b3e Fix macOS build, utf8 fixes 3 years ago
Nimetu f4726d6964 Fix macOS build, missing include 3 years ago
Nimetu a356abdd7c Fix macOS build, _Nullable is reserved keyword 3 years ago
Nimetu ee219b7e5e
Fix utf8 encoding on sphrase info window 3 years ago
kaetemi 5c074ccc8e
Git diff doesn't seem to like the imported $Id$ keyword contents to be on the repo 3 years ago
Nuno e3c5606baf Better fix 3 years ago
Nuno 0063396369 Missing serialization (client can't load the icfg) 3 years ago
kaetemi 415fe11606
Also apply u16 idx fix to msg.xml 3 years ago
Nuno ccef75cdf3
Merge branch 'fixes' 3 years ago
Nuno 92186cf142
Merge branch 'fixes' 3 years ago
Nuno Gonçalves (Ulukyn) 05555015ea
Fixed: set uint16 in resell slotID 3 years ago
Nuno Gonçalves (Ulukyn) a8a0d9162e
Fix resell issue (use uint16 instead of uint8 for Index) 3 years ago
Nimetu 31a454b21d
Add ScreenShotDirectory entry to client.cfg 3 years ago
Meubli 4924b3563e
pets inventory transactions
- Enable Zig <-> Flat inventory transactions (move between)
- Enable Zig <-> Guild inventory transactions (move between)
3 years ago
Nuno 03b66c18d4
Remove CPath::memoryCompress() because break CPath::lockup() 3 years ago
kaetemi 8775656c3c
Find iconv debug library 3 years ago
kaetemi a9654bd0b4
Fix typo 3 years ago
kaetemi 3ec625265e
Merge remote-tracking branch 'origin/develop' into core4 3 years ago
kaetemi a001eac5ad
Find debug lua library 3 years ago
kaetemi 56008be890
Include cacert.pem with the dev game data in the repo 3 years ago
kaetemi 7127f9f5f4
Properly follow StartupVerify setting 3 years ago
kaetemi ca9729b2a0
Native windows CA certs are causing issues in libcurl with Letsencrypt certificates, so disable them for now 3 years ago
kaetemi 671d8bb286
Show more useful error on login failure 3 years ago
kaetemi 939836b5bb
Show more useful error on login failure 3 years ago
kaetemi 088171a589
Proper defaults for public Ryzom Core 4 shard 3 years ago
kaetemi a81fcd105a
Stop sound when patching sound bnp 3 years ago
kaetemi 6a7bcf771d
Stop sound when patching sound bnp 3 years ago
kaetemi bdbd12c625
Improve c++0x check 3 years ago
kaetemi 549b2b0f22
Fix build when using ValyriaTear/luabind (on Ubuntu 20.04 LTS) 3 years ago
kaetemi de7b301af9
Improve c++0x check 3 years ago
kaetemi 9466258fa8
Fix for MySQL 8 client lib support 3 years ago
kaetemi 996f6c218e
Fix build when using ValyriaTear/luabind (on Ubuntu) 3 years ago
kaetemi 70aecc79c1
Ubuntu 16.04 is EOL 3 years ago
kaetemi 1e923d03ee
Fix for MySQL 8 client lib support 3 years ago
kaetemi 41b4ec6bf3
Add Ubuntu 20.04 target to Azure Pipelines configuration 3 years ago
kaetemi cee0f53c1d
Merge remote-tracking branch 'ryzomcore/develop' into core4 3 years ago
kaetemi 1b162fb3ae
Merge remote-tracking branch 'ryzomcore/develop' into core4 3 years ago
Nimetu 959f7cfbe8
Fix css background for html/body element 3 years ago
kaetemi 1c035401c6
Merge remote-tracking branch 'ryzomcore/develop' into core4 3 years ago
Jan Boon 60cabbe8ee
Merge pull request #642 from planetmaker/_lua54
Add: Support for Lua 5.4 bindings (Linux)
3 years ago
kaetemi 1eec1fe31e
Fix vs2008 build 3 years ago
planetmaker 1f856ecd8e Add: Support for Lua 5.4 bindings 3 years ago
kaetemi ac9e8f4f5e
Merge remote-tracking branch 'origin/develop' into core4
# Conflicts:
#	ryzom/client/src/interface_v3/action_handler_help.cpp
3 years ago
kaetemi 33a8128cfc
Add option to EGS to enable ring loot and xp 3 years ago
kaetemi d465191e96
Move sheet generator scripts to leveldesign 3 years ago
kaetemi fdc0af158c
Fix generated gender for 3dset 3 years ago
kaetemi 5a34b3dc59
Tweak xp level 3 years ago
kaetemi 03270f330f
Generate required NPCs for Ring 3 years ago
kaetemi 3fbb3242ee
Remove unused value 3 years ago
kaetemi 1dd98445ca
Generate generic action lists 3 years ago
kaetemi d607dec79e
Adjust folders, prepare a new success table 3 years ago
kaetemi df69ff8507
Generate generic magic dot ai actions 3 years ago
kaetemi efd2dea7e4
No need to specify melee type, since it's inherited from the equipped weapon 3 years ago
kaetemi bc5d0fae17
Add option to disable using the dodge resist table average in calculating mob damage 3 years ago
kaetemi 9bd90c47c4
Print out average dodge factor 3 years ago
kaetemi 010c2c84eb
Generate genereric aeo and curse actions 3 years ago
kaetemi 838a362fad
Generate generic actions for melee and range 3 years ago
kaetemi 48548c99b8
Rebalance generated stats 3 years ago
kaetemi 34e079c020
Generate appropriate values for EGS 3 years ago
kaetemi 144ebe7f72
Comment out unused variables 3 years ago
kaetemi 5ef4a97c8a
Fix missing log context 3 years ago
kaetemi 62ed0d6de9
Generate generic ai actions for magic damage 3 years ago
kaetemi 7ecc87e3ed
Extract required creature parents 3 years ago
kaetemi 1df9e53dd5
Extract required npc creatures from palette 3 years ago
kaetemi a8f147231d
Generate melee weapons 3 years ago
kaetemi f73be89553
Generate armors into proper folders 3 years ago
kaetemi 5a090b2943
Remove redundant caster parts from palette 3 years ago
kaetemi 190057b11b
Generate shield items 3 years ago
kaetemi 03b9e1f44f
Remove known missing from list 3 years ago
kaetemi 93dc106d95
List remaining missing items 3 years ago
kaetemi 5fc80fca13
Improve naming convention 3 years ago
kaetemi 3aeef70db8
Wipe packed shard sheets if visual slot table has changed 3 years ago
kaetemi c71980df2e
Fix missing piece of boss armor 3 years ago
kaetemi 34bb64cea7
Generate craftable refugee armor sheets 3 years ago
kaetemi fe9d945265
Generate craftable underwear sheets 3 years ago
kaetemi 725206c678
Add boss armor to generated sheets 3 years ago
kaetemi 43716f30fb
Add separate item list for manual additions 3 years ago
kaetemi 5117fd742b
Script to update references to renamed bricks and phrases 3 years ago
kaetemi d79f103525
Generate random mp count 3 years ago
kaetemi 151f5270bc
Test button for toggling armor (disabled) 3 years ago
kaetemi be7ee784ec
Always put the current brick name in the first column 3 years ago
kaetemi 3d174a1294
Track missing and duplicate sbricks 3 years ago
kaetemi 7a6227efcc
Extend parsing for additional armors 3 years ago
kaetemi fd14ad6c94
Generate craft brick and phrase for sitem 3 years ago
kaetemi c4025de222
Preserve previously extracted brick family indices 3 years ago
kaetemi 5346d2b15e
Tag brick family and skill trees 3 years ago
kaetemi 3cf8ca0959
Parse previous brick family indices to retain compatibility 3 years ago
kaetemi 68eb9149df
Generate armor sitem sheets 3 years ago
kaetemi 0115e0b745
Generate sitem parent sheets 3 years ago
kaetemi e0e85d0100
Parse parent sheet names as well 3 years ago
kaetemi e3ac824104
Simplify crafted rule for sitem name parser 3 years ago
kaetemi 56c3248198
Improve weapon matching tags 3 years ago
kaetemi 6cabc38192
Add script to match shape to sitem 3 years ago
kaetemi 3a2c47ac5a
Add script to parse shape names 3 years ago
kaetemi d9ac7b70a8
Write sitem name tags to output 3 years ago
kaetemi c41cdd76ff
Add script for extracting list of sheets required for R2 pallete. Add script for parsing and generating sitem names 3 years ago
kaetemi ec63cdc818
Fix world editor paths 3 years ago
kaetemi d235885d70
Fix truncated string conversion 3 years ago
kaetemi ef4fb03143
Update executable paths in tools 3 years ago
kaetemi cf2bf5629f
Move item rename to be an admin command, not for player use 3 years ago
kaetemi ec6b13a88b
Fix duplicate include 3 years ago
kaetemi 2889e81d63
Typo 3 years ago
kaetemi 678d888b5c
Merge stuff from atys branch 3 years ago
kaetemi 6a79a5bf0f
Include fixes from atys branch 3 years ago
kaetemi b4638c7969
Include fixes from atys branch 3 years ago
kaetemi 4028534f2a
Exclude sync and generated source from attribution 3 years ago
kaetemi a3dea88eb1
Use better contrast 3 years ago
kaetemi b1733439d0
Splash screen for core 3 years ago
kaetemi c919b1891b
Ensure python from the path is used 3 years ago
kaetemi 5df65ae36e
Add shard dev step to convenience scripts 3 years ago
kaetemi 56beb7e214
Add some additional utility scripts for the pipeline 3 years ago
kaetemi dea792a3f7
Option to automatically configure the dev shard in the web database 3 years ago
kaetemi c5ccd66749
Simplify web setup. Use service dashboard tool. Create phpmyadmin database automatically 3 years ago
kaetemi ff971efc42
Put hostname as default domain. This is convenient since we have one VM per domain for admin and web services 3 years ago
kaetemi 85d1180719
Automatically put the proper folder for dev shard 3 years ago
kaetemi 4d65d5c459
Fix sql default value 3 years ago
kaetemi 6f2cd1fa1b
Generate the correct path in the sql config 3 years ago
kaetemi 23b188cadc
Support launch ctrl on dev shard 3 years ago
kaetemi 4fb55a86d3
Add launch priority to dev shard configuration 3 years ago
kaetemi 3be4999816
Fix sql config template 3 years ago
kaetemi d08547121f
Fix webig 3 years ago
kaetemi 0483474ea0
Fix php warning 3 years ago
kaetemi 7f8d286bc5
Fix high res graph output error on windows 3 years ago
kaetemi 2ecaf3ecd9
Fix web warning 3 years ago
kaetemi 7a95ff23f3
Make admin tool graphs work on windows 3 years ago
kaetemi cb47713119
Update jpgraph 3 years ago
kaetemi 8adf8e228a
Fix web warnings 3 years ago
kaetemi 7e7494f897
Set dev shard rrdtool path 3 years ago
kaetemi 9cf4677005
Generate AES configuration for dev shard 3 years ago
kaetemi 8f40fdb7b4
Ignore duplicate file spam on dev shard, it's normal 3 years ago
kaetemi 7709977b48
Put the proper version number in service titles 3 years ago
kaetemi 25b403556f
Fix SQL string in admin tool with custom port 3 years ago
kaetemi 77e69856d4
Adjust SU port 3 years ago
kaetemi b6e79ee3e1
More useful defaults for generated batch 3 years ago
kaetemi 0a1689ae10
Adjust default ports from 49xxx range to 43xxx range 3 years ago
kaetemi cda6770adb
Use the service dashboard instead of wt and conemu 3 years ago
kaetemi d9b59c1fdc
Include Python with the quick start package 3 years ago
kaetemi 5a8fa2052b
Generate shard configuration for service dashboard 3 years ago
kaetemi 31f31e6d69
Fix python path in web config script 3 years ago
kaetemi 187ef3af19
Add scripts for preparing the package 3 years ago
kaetemi 880f850be7
Add tool availability checks to build script 3 years ago
kaetemi 0fe48635f5
Proper EOL for sh checkout 3 years ago
kaetemi 59b5d1228f
Don't override unchanged 3 years ago
kaetemi b594606862
Fix initial shard dev 3 years ago
kaetemi 10fc562e07
Add trick for reusable dev config 3 years ago
kaetemi 7175e7f9ed
Launch scripts for dev client 3 years ago
kaetemi a5d0f904a4
Install scripts may use real paths 3 years ago
kaetemi 45668dcbfe
Generate dev client folder without binaries to match dev shard behaviour 3 years ago
kaetemi 614da137ac
Remove a lost file 3 years ago
kaetemi 1d06892f16
Remove duplicate web folder 3 years ago
kaetemi 08c094e957
Remove exe 3 years ago
kaetemi 681f133400
Remove redundant cfg files 3 years ago
kaetemi cac99dc9ab
Add missing browser css. Restore login window layout 3 years ago
kaetemi d30a80acea
Include service folders in dev shard paths 3 years ago
kaetemi 486af5ec85
Fix working directory for created shortcuts 3 years ago
kaetemi 9230eb1621
Preconfigure web 3 years ago
kaetemi 08a28193b4
Can also run dev unifier in release mode 3 years ago
kaetemi 8ad0536eed
Fix initial configuration build 3 years ago
kaetemi 211d4d276d
Add initial template for quick start package 3 years ago
kaetemi 378bef8db3
Include build output in dev shard at lower prio 3 years ago
kaetemi e9080405fc
Update title 3 years ago
kaetemi 090ff7d509
Add script to help repairing translation hashes 3 years ago
kaetemi 39190cde60
Merge remote-tracking branch 'ryzomcore/develop' into ryzomclassic-develop 3 years ago
kaetemi db211ffff7
Put good defaults for development 3 years ago
kaetemi c3dcdd25de
Adjust path style in config 3 years ago
kaetemi 3b993c6cda
Update defaults 3 years ago
kaetemi bc9d15a149
Generate dev shard configuration using patchman 3 years ago
kaetemi e067e0eeeb
Add script to setup dev shard folder 3 years ago
kaetemi 7873a839ef
Change to GroupController 3 years ago
kaetemi 3352401f24
Version bump 3 years ago
kaetemi 549a015847
Ring database missing default fix 3 years ago
kaetemi fb1557c08e
Version bump 3 years ago
kaetemi a3626de8bb
Generate separate dev client for local and remote dev 3 years ago
kaetemi 0045696546
Simplify tool paths 3 years ago
kaetemi a5dd6aa857
Prefer local path configuration where relevant 3 years ago
kaetemi 5da1678357
Generate secondary buildsite config with real local path 3 years ago
kaetemi 694338302e
Cleanup 3 years ago
kaetemi 5b22e0950a
Disable adjustment warning since it's not very useful. Speed limit needs to be able to reference a more accurate timing 3 years ago
kaetemi 20ed0a4412
Only send position if client game tick advanced as well 3 years ago
kaetemi c8ecf0a756
Enable full frequency connection 3 years ago
kaetemi d07e219439
Cleanup unused FS tick value 3 years ago
kaetemi 92bfb0aafb
Re-add lag compensation time from client to tick value in mirror 3 years ago
kaetemi 4407fc2970
Position speed checks should be based on the client tick. This fixes excessive rubber banding 3 years ago
kaetemi 3f63f27143
Disable slow system metrics function because it really is slow and chokes the update loop 3 years ago
kaetemi cb9094f091
Merge branch 'develop' into ryzomclassic-develop 3 years ago
kaetemi 30117e92be
More hashing of sequential indices 3 years ago
kaetemi b9de2e99a3
Actually hashing entries for a hash map makes it immensely faster 3 years ago
kaetemi 77f92c72a9
Fix race conditions in frontend service send task 3 years ago
kaetemi b33ff3cb93
Remove useless CPU hog 3 years ago
kaetemi da9c5173a6
Improve debug message 3 years ago
kaetemi 3ec5a87d40
Generate script to launch tabbed 3 years ago
kaetemi 2cd2b9502f
Sender doesn't guarantee anything about pos, this doesn't seem to work on Win32 host 3 years ago
kaetemi 88e2ebd31c
Todo note 3 years ago
kaetemi 492865deed
Skip AES placeholder 3 years ago
kaetemi a1023f923f
Fix dev batch file generation to work with the current naming scheme 3 years ago
kaetemi ce8acd4ca2
Specify SQL server port 3 years ago
kaetemi 9d722bb70f
Show correct label for Editor mode in quit dialog, fix kaetemi/ryzomclassic#113 3 years ago
kaetemi 59c1c340b8
Restore some more ui xml formatting 3 years ago
kaetemi 43af8e6695
Restore some more ui xml formatting 3 years ago
kaetemi f128e0807c
Restore some more ui xml formatting 3 years ago
kaetemi 8cecbb4a7d
Restore mailbox and forums 3 years ago
kaetemi feb7e7a812
Merge branch 'develop' into ryzomclassic-develop 3 years ago
kaetemi 8b6c3276e4
Defer browsing while web server not set 3 years ago
kaetemi deb1c7c131
Remove hardcoded URLs in favour of the web URL provided by the shard 3 years ago
kaetemi fc3f0355a5
Remove web notification polling (remote code execution path) 3 years ago
kaetemi 578cef6c85
Update ring database charsets 3 years ago
kaetemi 413ca990d0
Upgrade nel database charsets 3 years ago
kaetemi 37d52231ef
Fixes for webig, ref kaetemi/ryzomclassic#4 4 years ago
kaetemi f8cb53bfd8
Update ams smarty 4 years ago
kaetemi 90225d0011
Remove unsupported PHP 4 years ago
kaetemi e08079fe5f
Fix typo 4 years ago
kaetemi a188c6b38a
Update admin tool smarty lib 4 years ago
kaetemi 3f0bacd374
Allow alternate SQL port 4 years ago
kaetemi f9b7dbd4cb
Dummy to ensure folder exists 4 years ago
kaetemi 449c90a4b0
Reorganize web configuration, allow custom SQL port 4 years ago
kaetemi dba5d1a1ca
Exclude commit from annotation 4 years ago
kaetemi bce886595e
Include webig config in setup, ref kaetemi/ryzomclassic#4 4 years ago
kaetemi e97cf09e04
Restore legacy webig, ref kaetemi/ryzomclassic#4 4 years ago
kaetemi dbe34b0c8f
Merge branch 'develop' into ryzomclassic-develop 4 years ago
kaetemi 7a647ab76d
Update GPL headers 4 years ago
kaetemi 113f3f97d7
Merge branch 'develop' into ryzomclassic-develop 4 years ago
kaetemi 28fd4d9011
Merge branch 'develop' into ryzomclassic-develop 4 years ago
kaetemi fdbe73937a Merge branch 'develop' into ryzomclassic-develop 4 years ago
kaetemi d58854ab33 Merge branch 'develop' into ryzomclassic-develop 4 years ago
kaetemi b4b701f90e Merge remote-tracking branch 'ryzomcore/develop' into ryzomclassic-develop 4 years ago
Xtarsia 35f30e566b Update widgets.xml
closes #181
4 years ago
kaetemi c341631dbf Merge branch 'develop' into ryzomclassic-develop 4 years ago
kaetemi 59ee36332c Send characteristic buff flags, kaetemi/ryzomclassic#210 4 years ago
kaetemi 45bc21e5c9 Show characteristic buffs of item in icon, fix forge enhancement, kaetemi/ryzomclassic#203 4 years ago
kaetemi cf16ec5c44 Disable unused item cache, ref kaetemi/ryzomclassic#203 4 years ago
kaetemi 817ca5bf2b Restore right click info to classic behaviour, kaetemi/ryzomclassic#86 4 years ago
kaetemi 7eeb845768 Restore splash screen 4 years ago
kaetemi 6d975e9879 Fix Max version 4 years ago
kaetemi 305ed94561 Fix 4 years ago
kaetemi ebc220fedb Merge remote-tracking branch 'origin/temp/more-patches-53' into ryzomclassic-develop 4 years ago
kaetemi a7e880e724 Move operator 4 years ago
Xtarsia 607b708465 main chat box pixel tweeks 4 years ago
kaetemi 144088af13 Fix missing duplicated code change 4 years ago
kaetemi 6dfff83589 Need to start PACKED at 4 bits to get the full 64 bits value range encoded, use nullable for better 0 compression 4 years ago
kaetemi b5f320af33 Fix build 4 years ago
kaetemi d1769c586f Merge branch 'feature/cdb-packed-ryzomclassic' into temp/more-patches-53 4 years ago
kaetemi 68b0fbeae8 Where did this come from 4 years ago
kaetemi 879b792c6a Merge branch 'ryzomclassic-develop' into feature/cdb-packed-ryzomclassic 4 years ago
kaetemi 431b1140e9 Merge commit '505e13cd1eb576209ac7e088c91e0ba1a3e2da62' into feature/cdb-packed-ryzomclassic 4 years ago
kaetemi 6f2e45d352 Merge commit '05fdc723f1519009c05f0963846b41b3ca7c3858' into feature/cdb-packed-ryzomclassic 4 years ago
kaetemi 4169349166 Merge remote-tracking branch 'origin/temp/more-patches-14' into feature/cdb-packed-ryzomclassic 4 years ago
kaetemi c624984da1 Merge commit '6f545aedd5638e093f35f1e156d3ed4f9a91cb18' into feature/cdb-packed 4 years ago
kaetemi b96d96f004 Merge branch 'develop' into ryzomclassic-develop 4 years ago
kaetemi 3609d6369a Restore classic PvP Challenge context menu 4 years ago
kaetemi 46541a700c Test item renames 4 years ago
kaetemi 8d4c0d0ef1 Fix build 4 years ago
kaetemi be11ae1fb6 Add network messages for locking and renaming items 4 years ago
kaetemi f203559ecb Update client inventory when item name is changed 4 years ago
kaetemi be28e102ec Add buff flags to item summary 4 years ago
kaetemi d512d10f18 Add guild access grade bits to inventory summary 4 years ago
kaetemi 24ceb5df04 Add ACCESS, remove SERIAL and CREATETIME to inventory sync 4 years ago
kaetemi bd0c694970 Fix insane XML formatting 4 years ago
kaetemi 5769a3599e Add editor config 4 years ago
kaetemi 176e0975f6 Fix build 4 years ago
kaetemi 7c4a2f857d Restore PvP challenge message callbacks 4 years ago
kaetemi bc3a602ebc Phrase literal flag for item name, replaces separate string, kaetemi/ryzomclassic#194 4 years ago
kaetemi 9eb7481c06 Cleanup CGameItemPtr, add reference count to avoid glitches, kaetemi/ryzomclassic#194 4 years ago
kaetemi 66debd7ebe Dumb. Clean up, kaetemi/ryzomclassic#194 4 years ago
kaetemi f0430ec8ad Note 4 years ago
kaetemi caa4eea391 Disable debug 4 years ago
kaetemi 3604088713 Keep a spare memory block in fixed size allocator to avoid large allocation overhead on the chunk boundary 4 years ago
kaetemi cd4b746bfa Clean up mess 4 years ago
kaetemi 60f61caa2c Disable game item ptr debug code when item ptr debug is disabled... 4 years ago
kaetemi a5e9542f2f Disable game item debug code since it's not maintained 4 years ago
kaetemi 7b1136ff0b Use pointers for the strings in game item, since they're not common 4 years ago
kaetemi abd5c38a80 Merge branch 'develop' into ryzomclassic-develop 4 years ago
kaetemi 2a37a76cb5 Remove old ClientInventoryPosition property 4 years ago
kaetemi 4c701386f4 Comment 4 years ago
kaetemi e9feca648a Fix wrong time type 4 years ago
kaetemi 4ae411968e Prepare a little surprise for naughty string scanners, ryzom/ryzomcore#604 4 years ago
kaetemi aa2574e10a Remove unused custom name, item name is specified already by _PhraseId 4 years ago
kaetemi a2c7c4dc25 Remove unused faction string from item 4 years ago
kaetemi 29f313853d Explicitly use toLowerAscii for filenames and identifiers 4 years ago
kaetemi 625d269c11 Merge branch 'develop' into ryzomclassic-develop 4 years ago
kaetemi dc12e2dea3 Explicitly use toLowerAscii for filenames and identifiers 4 years ago
kaetemi ae1f4d2df3 Merge branch 'develop' into ryzomclassic-develop 4 years ago
Xtarsia dac3cc2292 inventory alignment adjustments
closes #182
4 years ago
kaetemi 9883454926 Disable item groups, not tested in our build 4 years ago
kaetemi b89441d673 Merge branch 'develop' into ryzomclassic-develop 4 years ago
kaetemi 35e18597ee Merge branch 'develop' into ryzomclassic-develop 4 years ago
kaetemi 6787bbf378 Use localized font 4 years ago
kaetemi a3e762f401 Merge branch 'develop' into ryzomclassic-develop 4 years ago
kaetemi 380722e2e6 Remove ucstring from lua and UI 4 years ago
kaetemi d11936a035 Remove compatibility switch 4 years ago
kaetemi c791fe5742 Merge branch 'develop' into ryzomclassic-develop 4 years ago
Xtarsia 5de288a2e7 Update out_v2_select.xml
disable downloader UI
4 years ago
kaetemi c08163dcb6 Merge branch 'develop' into ryzomclassic-develop 4 years ago
kaetemi ea6ba2ec97 Merge branch 'develop' into ryzomclassic-develop 4 years ago
kaetemi 9c6918d448 Merge branch 'develop' into ryzomclassic-develop 4 years ago
kaetemi 9cc899a3a6 Merge branch 'develop' into ryzomclassic-develop 4 years ago
kaetemi e773027c6d Merge branch 'develop' into ryzomclassic-develop 4 years ago
kaetemi 3e675b1422 Merge branch 'develop' into ryzomclassic-develop 4 years ago
kaetemi 5934147d9e Fix identity title, kaetemi/ryzomclassic#170 4 years ago
Xtarsia 4ca95e1188 Update out_v2_select.xml
closes #117
4 years ago
kaetemi 0499fce27d Fix login alignment 4 years ago
kaetemi 2295769ad5 Merge branch 'develop' into ryzomclassic-develop 4 years ago
kaetemi 1cfe858588 Merge branch 'develop' into ryzomclassic-develop 4 years ago
kaetemi 374601e8d1 Merge branch 'develop' into ryzomclassic-develop 4 years ago
kaetemi d86c000de2 Merge branch 'develop' into ryzomclassic-develop 4 years ago
kaetemi fa086ea4b9 Merge branch 'develop' into ryzomclassic-develop 4 years ago
kaetemi dcf242c3b1 Merge branch 'develop' into ryzomclassic-develop 4 years ago
kaetemi d31eb606eb Fix merge 4 years ago
kaetemi 46020d345c Merge branch 'develop' into ryzomclassic-develop 4 years ago
kaetemi 2b2b0a7d48 Merge branch 'develop' into ryzomclassic-develop 4 years ago
Xtarsia 277a854f8d Update widgets.xml
Closes #157
4 years ago
kaetemi 52c7c16f69 Merge branch 'develop' into ryzomclassic-develop 4 years ago
kaetemi 92ee96a783 Log the recorded history, kaetemi/ryzomclassic#152 4 years ago
kaetemi b61ad76ac2 Fix R2 feature info checkbox, kaetemi/ryzomclassic#158 4 years ago
Xtarsia 7a9accde11 Update info_player.xml
closes #160
4 years ago
kaetemi d0f9685ee8 Merge branch 'develop' into ryzomclassic-develop 4 years ago
Xtarsia a2b68113ec Remove Patcher UI elements
Remove Patcher UI elements
4 years ago
kaetemi ec4e2e188e Merge branch 'develop' into ryzomclassic-develop 4 years ago
kaetemi 9580bd5ec0 Failed to detect ecosystem of selected island, fix missing plants in palette, kaetemi/ryzomclassic#132 4 years ago
kaetemi d2900df0f6 Add debug break hook for Lua 4 years ago
kaetemi ae876e481a Merge branch 'develop' into ryzomclassic-develop 4 years ago
kaetemi 8594b479e2 Fix bad escaping of < and >, fix kaetemi/ryzomclassic#150 4 years ago
Jan Boon fbab39451f
Merge pull request #146 from Xtarsia/ryzomclassic-develop
Update inventory.xml
4 years ago
kaetemi 05501cf30b Merge branch 'develop' into ryzomclassic-develop 4 years ago
kaetemi 357bb28ef2 Recycling an ucstring from i18n.get is not allowed, it's const, fix kaetemi/ryzomclassic#134 4 years ago
kaetemi 5056d3a72a Disable CustomNpc Level prop for now, kaetemi/ryzomclassic#154 4 years ago
kaetemi 91a44fd5b5 Disable TypeNPC for now, kaetemi/ryzomclassic#154 4 years ago
kaetemi a51597cf0b Typo, kaetemi/ryzomclassic#87 4 years ago
kaetemi f5553dfb59 Better handling of TypeNPC initialization, kaetemi/ryzomclassic#87 4 years ago
kaetemi b4dc60f163 Fix double undo stack actions, kaetemi/ryzomclassic#87 4 years ago
kaetemi 2859693c1e Remove OtherCharAccess toggle from Scenario window when MD5 checks are disabled, close kaetemi/ryzomclassic#151 4 years ago
kaetemi 6853098df9 Additional debugging, kaetemi/ryzomclassic#152 4 years ago
kaetemi c71f516ed2 Avoid more useless `fullName` calls, kaetemi/ryzomclassic#152 4 years ago
kaetemi ccb141672f Avoid some unnecessary string operations when not recording history, cleanup, debug crash in `fullName` kaetemi/ryzomclassic#152 4 years ago
kaetemi 4a7a153a3e Disable check for OtherCharAccess if CheckR2ScenarioMD5 is false, kaetemi/ryzomclassic#151 4 years ago
kaetemi e3ec67a698 Disable R2 MD5 check, it's useless now, fix kaetemi/ryzomclassic#147 4 years ago
kaetemi 505e13cd1e Merge branch 'develop' into ryzomclassic-develop 4 years ago
Xtarsia 14a0c5d471 Update inventory.xml
Remove Special items from inventory.
4 years ago
kaetemi 7a035466da Merge branch 'develop' into ryzomclassic-develop 5 years ago
kaetemi 64fd9f0b78 Merge remote-tracking branch 'ryzomcore/develop' into temp/more-patches-26 5 years ago
kaetemi a7933bc818 Fix admin commands for items to use .sitem by default 5 years ago
kaetemi 669237dbae Merge branch 'develop' into ryzomclassic-develop 5 years ago
kaetemi a606684e34 Use nel type 5 years ago
kaetemi 4b4c14dabf Merge branch 'develop' into ryzomclassic-develop 5 years ago
kaetemi 7e232462d0 Invalid table insertion, fix kaetemi/ryzomclassic#124 5 years ago
kaetemi 09cb0ea5d0 Can't reinterpret float pointer as size_t pointer as the sizes mismatch, fix ryzom/ryzomcore#605 switch case on 64bit, ref kaetemi/ryzomclassic#124 5 years ago
kaetemi f5eae12b80 Enhance logging message 5 years ago
kaetemi 1452a6ba6d Fix saveScenarioRtData for large scenarios 5 years ago
kaetemi a6713b14a6 Compare tag for creating bnp, since bnp get older timestamp reset if they match 5 years ago
kaetemi b505ff9e13 Merge branch 'develop' into ryzomclassic-develop 5 years ago
kaetemi 154ae55165 Fix string format 5 years ago
kaetemi ada4e5bfbf Use better fonts 5 years ago
kaetemi fb3e97db1d Request for 7z instead of tgz, ref ryzom/ryzomcore#586 5 years ago
kaetemi 61974ec15c Add 7z support to server patch, ref ryzom/ryzomcore#586 5 years ago
kaetemi af6c6b64c3 Revert workaround, fix ryzom/ryzomcore#601 5 years ago
kaetemi 0528df7f0b Merge branch 'develop' into ryzomclassic-develop 5 years ago
kaetemi 18d2e393cf Merge branch 'develop' into ryzomclassic-develop 5 years ago
kaetemi 3da77ce061 Play specific music during character selection 5 years ago
kaetemi 90e1297c1d Merge branch 'develop' into ryzomclassic-develop 5 years ago
kaetemi 90931485ba Track online services in WS based on TServiceId instead of a counter, fix ryzom/ryzomcore#601 5 years ago
kaetemi 195e9b1439 Merge branch 'develop' into ryzomclassic-develop 5 years ago
kaetemi 0f50806927 Merge branch 'develop' into ryzomclassic-develop 5 years ago
kaetemi 7d01d8411d Replace deprecated table.getn 5 years ago
kaetemi c1a3008ca0 Removed ecosystem points 5 years ago
kaetemi 3f39669c9a Remove unused project 5 years ago
kaetemi 51ec683eea Merge branch 'feature/code-to-root' into ryzomclassic-develop 5 years ago
kaetemi ddc9cdabc4 Retarget to R:\leveldesign and R:\graphics 5 years ago
kaetemi 324c69c8cc Merge branch 'feature/code-to-root' into ryzomclassic-develop 5 years ago
kaetemi 05fdc723f1 Move code to root 5 years ago
Jan Boon 4a55facb0c Merge branch 'feature/code-to-root' into ryzomclassic-develop 5 years ago
kaetemi def3d25249 Set proper dependencies for packed collision build 5 years ago
kaetemi f32a5d95d4 Export zones as part of the R2 islands xml 5 years ago
kaetemi 5f3675446c Build R2 islands xml separately per continent, and build it properly 5 years ago
kaetemi f39a7fe349 Temporarily set Direct3D as default on Windows, ref ryzom/ryzomcore#592 5 years ago
kaetemi 3117c55424 Remove leveldesign duplicate files 5 years ago
Jan Boon 185d71365e Merge branch 'develop' into ryzomclassic-develop 5 years ago
kaetemi 02c40934ef Remove references to things which don't exist 5 years ago
kaetemi f892608865 Fix ring scenario edition mode initialization 5 years ago
Jan Boon 9d1545bbe2 Merge branch 'develop' into ryzomclassic-develop 5 years ago
kaetemi 71a22b43db Fixes 5 years ago
kaetemi 5a543239bb Batch of fixes for server 5 years ago
Jan Boon 6cdee90e4e Merge branch 'develop' into ryzomclassic-develop 5 years ago
kaetemi 17d91ad243 Add configuration for open admin privileges 5 years ago
kaetemi 33bf80a3c7 Merge remote-tracking branch 'ryzomcore/develop' into ryzomclassic-develop 5 years ago
Jan Boon 1f7fca7df3 Merge branch 'develop' into ryzomclassic-develop 5 years ago
Jan Boon a964da41f7 Various fixes or adjustments 5 years ago
kaetemi a900a45153 More useful logging 5 years ago
kaetemi 0cfe43aa26 Fix editor far tp in character select 5 years ago
kaetemi 3e7035c6dd Force invalid enum values to defaults 5 years ago
kaetemi ea021e1d96 Fix module bitsets and default session values 5 years ago
kaetemi 55c3939789 Use shard ID as part of shared memory key in MS to allow multiple shards on one server 5 years ago
kaetemi 7a71caca6e Fix filename collision of string cache between shards on the same host 5 years ago
kaetemi 9dc0020b61 Fix CSheetId from CVariable 5 years ago
kaetemi c7b27c8d70 Fix filename collision of string cache between shards on the same host 5 years ago
kaetemi 6c6a83bc5d Categorize mirror service commands 5 years ago
Jan Boon 93f6770fe4 Merge branch 'develop' into ryzomclassic-develop 5 years ago
Jan Boon a94094f865 Merge branch 'develop' into ryzomclassic-develop 5 years ago
Jan Boon 746f033b5c Merge remote-tracking branch 'ryzomcore/develop' into ryzomclassic-develop 5 years ago
Jan Boon 5d7e4a921f Merge remote-tracking branch 'ryzomcore/develop' into ryzomclassic-develop 5 years ago
Jan Boon f48f4d4555 Merge remote-tracking branch 'ryzomcore/develop' into ryzomclassic-develop 5 years ago
Jan Boon 31e1cd6feb Merge remote-tracking branch 'ryzomcore/develop' into ryzomclassic-develop 5 years ago
Jan Boon 107728c944 Merge branch 'develop' into ryzomclassic-develop 5 years ago
kaetemi 4053220060 Continent sheet is name by default 5 years ago
kaetemi 525db6976a Disable forage tool restriction 5 years ago
kaetemi f344c0568c Adjust continent sheet name 5 years ago
kaetemi 2d32bc2371 Disable craft tool restriction, ryzomclassic/#49 5 years ago
kaetemi 9d89d3dfca Finer text alignment, ryzomclassic/#36 5 years ago
kaetemi 024447d9fb Cleanup enchant context, ryzomclassic/#37 5 years ago
kaetemi d496d54ac4 Add item log context for creating sap recharge 5 years ago
kaetemi aec03f6234 Add item logging context for enchanting items 5 years ago
kaetemi 1dce83d279 Remove ring knowledge and faction pvp points from profile info 5 years ago
kaetemi 774b91df9c Classy login screen 5 years ago
kaetemi d5b959db7e Remove useless command 5 years ago
kaetemi b547fd62cb Revert icon 5 years ago
kaetemi eecd6f1f2c Don't log since it's already logged from offline command, ryzomclassic/#44 5 years ago
kaetemi 3f982c2214 Shopping list delete doesn't need log, but it should be checked why it's containing items, ryzomclassic/#44, ryzomclassic/#26 5 years ago
kaetemi b232d0026a Reduce logging 5 years ago
kaetemi be32f02a76 Set font 5 years ago
Jan Boon 48bc27c1e3 Merge branch 'develop' into ryzomclassic-develop 5 years ago
kaetemi 38a7b763d0 Classic backgrounds 5 years ago
kaetemi f18f4196b4 Further adjust handling of ryzomclassic/#31 temp bag take all 5 years ago
kaetemi 35a9e747f7 Experimental alternate fix for ryzomclassic/#31 5 years ago
kaetemi 8f1d0ebf23 Fix recursing endHarvest call, ryzomclassic/#31 5 years ago
kaetemi dabf75dbcf Add log context for bot chat end, ryzomclassic/#26 5 years ago
kaetemi a722988987 Remove unused salt from admin 5 years ago
kaetemi c914e6fdf6 Patch over https 5 years ago
kaetemi ad4290f2c9 Move fonts to assets 5 years ago
kaetemi 739730127d Revert profile interface 5 years ago
kaetemi 2cb353438b Add log context for sale store check 5 years ago
kaetemi 46786a1185 Fix comment 5 years ago
kaetemi 8daffed6c2 Cleanup odd patch, fix dyn chat choice progress 5 years ago
kaetemi 2a917ede27 Register crystallize log context for ryzomclassic/#14 5 years ago
Jan Boon 31a819f254 Merge branch 'develop' into ryzomclassic-develop 5 years ago
kaetemi ad15ada3ef Ring ring 5 years ago
kaetemi 2927b3dfb9 Bulk disable webig changes 5 years ago
kaetemi e0a14d79ac Disable more of the pet name code 5 years ago
kaetemi ba3c008767 Add handy startsWith string utility function 5 years ago
kaetemi 8c6677dba6 Disable pet name since it's only accessible through admin and web 5 years ago
kaetemi b6dbb65918 These upgrades don't apply to us 5 years ago
Jan Boon 4d742741d1 Merge branch 'develop' into ryzomclassic-develop 5 years ago
kaetemi 8dd7c52f8a Code style 5 years ago
kaetemi fcfc86c83e Disable teleport fx, since we will not have allegiance. May be better to have it depend on the teleport ticket type 5 years ago
kaetemi f36c979c2e Remove altar restriction, fix ryzomclassic/#16 5 years ago
kaetemi 8bcccefd11 Re-enable warnings 5 years ago
kaetemi 71c7e31806 We don't have light_sap_recharge.sitem, so remove it 5 years ago
kaetemi 6d5eb14d4f Revert to old sap recharge 5 years ago
kaetemi 52d8304659 Remove string based and webig feature 5 years ago
kaetemi 3cfedfcf9a Remove hardcoded name based item rule 5 years ago
kaetemi 0b47322d6c Remove hardcoded item rule 5 years ago
kaetemi bfed12711d Enable callstack logging 5 years ago
kaetemi 84e924b496 Fix ryzomclassic/#14 crash on spell crystalize. Add TLogContext_Item_EnchantPhrase log context 5 years ago
kaetemi 613bb7ccd0 Fix snp download over https 5 years ago
kaetemi 623ffc6be7 Debug logs should not be disabled in DEV client... 5 years ago
kaetemi 319ad4b0bf Set patch urls 5 years ago
kaetemi de6eae7e0f Fix again. This needs to be fixed properly 5 years ago
kaetemi b159620fcc This needs to be generated in utf8 5 years ago
kaetemi 0e08489315 Fix adjustment for classic newbieland 5 years ago
kaetemi 2ad9e1c78a Todo. Fix this properly 5 years ago
kaetemi 8d7ce91b56 Cleanup 5 years ago
kaetemi 2d1d9c1b0b Regenerate server cdb 5 years ago
kaetemi 85e7b594c6 Add a note 5 years ago
kaetemi f980988ae4 Switch to old newbieland 5 years ago
kaetemi ee8ccf13b7 Useless empty file 5 years ago
kaetemi 8895eb88d6 Revert "Added: New PvpClan "Marauder" based on fame "black_kami"" 5 years ago
kaetemi 679c7d7ac3 Don't need this 5 years ago
kaetemi ba6378e07c Remove useless feature 5 years ago
kaetemi b06b0fb08c Merge fixes 5 years ago
kaetemi 81176f102f Revert to fixed version 5 years ago
Jan Boon 2ad1b76886 Adjust default config 5 years ago
Jan Boon b0fdfaeca9 Merge branch 'develop' into ryzomclassic-develop 5 years ago
kaetemi 4c7c240775 Merge branch 'develop' into ryzomclassic-develop 5 years ago
kaetemi ff87af8423 Merge branch 'develop' into ryzomclassic-develop 5 years ago
kaetemi afee5db9e2 Merge branch 'develop' into ryzomclassic-develop 5 years ago
kaetemi 0bae206bb2 Fix merges 5 years ago
kaetemi c57c9a1cf6 Build fix 5 years ago
Jan Boon 0c8e9f7640 Merge branch 'feature/streamed-package' into ryzomclassic-develop 5 years ago
kaetemi 2b80ec75a9 Merge remote-tracking branch 'ryzomcore/hg/hotfix/patches-from-atys' into ryzomclassic-develop 5 years ago
kaetemi 0a2ce3c522 Null merge 5 years ago
kaetemi 4ca10eb38c Remove problematic texture defaults 5 years ago
kaetemi 636d8dae55 Merge branch 'develop' into ryzomclassic-develop 5 years ago
kaetemi ecc2085b70 Bump NeL version 5 years ago
kaetemi 9b9829a6ab Run pipeline setup in batch file 5 years ago
kaetemi 916be9833c Merge remote-tracking branch 'ryzomcore/hg/develop' into ryzomclassic-develop 5 years ago
kaetemi bb3f4052a7 Merge branch 'develop' into ryzomclassic-develop 5 years ago
kaetemi 439cae285d Merge branch 'develop' of github.com:ryzom/ryzomcore into ryzomclassic-develop 5 years ago
Nimetu ddd0a7507e Fixed: Invalid array access. Crash in gcc with aggressive loop optimizations enabled.
--HG--
branch : patches-from-atys
5 years ago
kaetemi c54897bd4f Fix build with MariaDB connector 5 years ago
kaetemi 94ad75bb72 Add some missing unit test tools 5 years ago
kaetemi 6ed45fef0b Add some missing tools 5 years ago
kaetemi 85c9d4e4b6 Add classic ingame web 5 years ago
kaetemi 7ac4eb3097 Add missing R2 files 5 years ago
kaetemi 2f29d03d86 Junk 5 years ago
kaetemi f64ba76bfc Undo insane XML reformat, and use tabs as originally 5 years ago
kaetemi aa2386151f Undo insane XML reformat 5 years ago
kaetemi 7505fae6d1 Add missing scripts 5 years ago
kaetemi f7bdd7ecd7 Junk 5 years ago
kaetemi d70c4a215d Junk 5 years ago
kaetemi 71a412c698 Merge remote-tracking branch 'ryzomcore/hg/develop' into ryzomclassic-develop 5 years ago
kaetemi 98a41b75bd Junk 5 years ago
kaetemi a86fb4e195 Merge remote-tracking branch 'origin/develop' into ryzomclassic-develop 5 years ago
kaetemi 3ff031b5ff Merge commit '230639bf0ead1a3736aca3af8866aa00f0608074' 5 years ago
Nimetu 249ce945f1 Fixed: Calling member function on null object is undefined behavior.
--HG--
branch : patches-from-atys
5 years ago
Nimetu a6a8cb99f5 Fixed: Truncated pointer on 64bit system
--HG--
branch : patches-from-atys
5 years ago
ulukyn f11bc06541 Changed: updated database_plr.h
--HG--
branch : patches-from-atys
6 years ago
Nimetu 460eb92969 Changed: database_plr.h sync for number of animal
--HG--
branch : patches-from-atys
5 years ago
Nimetu ae68b543b8 Merge with develop
--HG--
branch : patches-from-atys
5 years ago
Inky a5a6c321af Changed: added language text label translation
--HG--
branch : patches-from-atys
6 years ago
Inky 89fa8ca0ac Changed: added language support per profiles
--HG--
branch : patches-from-atys
6 years ago
Inky 9c82a0436f Changed: added QComboBox widget to change profile language
--HG--
branch : patches-from-atys
6 years ago
Inky fb60e00acc Changed: allow tab to select all widgets before been captured by editBox
--HG--
branch : patches-from-atys
6 years ago
Inky 0a48c4a6e3 Fixed: prevent bad index and duplicata after profile deletion
--HG--
branch : patches-from-atys
6 years ago
Nimetu 1eb1b118f3 Fixed: Shield, tools buffs not displayed in tooltip
--HG--
branch : patches-from-atys
6 years ago
Nimetu 3b0324ad08 Fixed: Range/melee weapon buffs not displayed in tooltip
--HG--
branch : patches-from-atys
6 years ago
Inky 4baed9c664 Changed: unsupported language code default fallback
--HG--
branch : patches-from-atys
6 years ago
Inky 41c3d0cbe0 Changed: check locale is supported under linux
--HG--
branch : patches-from-atys
6 years ago
Inky ccfffe0a8c Added: macro context help
--HG--
branch : patches-from-atys
6 years ago
Inky 17b96e4819 Fixed: tooltip item buff update
--HG--
branch : patches-from-atys
6 years ago
Inky 00d31f09c6 Changed: use one lua bind to retrieve itemInfo
--HG--
branch : patches-from-atys
6 years ago
ulukyn 89c22b04a2 Changed: remove nlinfo of Register EId (made lof of useless logs...)
--HG--
branch : patches-from-atys
6 years ago
ulukyn cf4cb55f3e Fixed: remove Zig enter/leave bag menu option when not a pet
--HG--
branch : patches-from-atys
6 years ago
ulukyn 1b19cb4809 Changed: Ctrl tooltips can now display utf8 text
--HG--
branch : patches-from-atys
6 years ago
Inky fe4c58df42 Fixed: other_hand_slot error when macro window is opened
--HG--
branch : patches-from-atys
6 years ago
ulukyn 498c02fa4d Fixed: remove Zig enter/leave bag menu option when not a pet
--HG--
branch : patches-from-atys
6 years ago
ulukyn a7e75b1c6c Added: setTargetAsInterlocutor and unsetTargetAsInterlocutor lua functions
--HG--
branch : patches-from-atys
6 years ago
Inky d73ea16682 Fixed: register lua bind
--HG--
branch : patches-from-atys
6 years ago
Inky 64987e8ed6 Changed: increment packed_sheets version
sitem, item

--HG--
branch : patches-from-atys
6 years ago
Inky 7230a84031 Changed: introduce new proprieties menu and action handler
--HG--
branch : patches-from-atys
6 years ago
Inky 36918ac919 Added: CGroup menu set action handler
--HG--
branch : patches-from-atys
6 years ago
Inky 0683604ada Added: item sheets scroll properties
--HG--
branch : patches-from-atys
6 years ago
Inky 038a3bca96 Added: load xml tp_interface
--HG--
branch : patches-from-atys
6 years ago
Nimetu a3bdd3dda5 Changed: Remove call to old GroupHTML function
--HG--
branch : patches-from-atys
6 years ago
Inky 4121a61c85 Added: display local chat message
--HG--
branch : patches-from-atys
6 years ago
Inky 2f2329c67f Added: get and set rgba database entry
--HG--
branch : patches-from-atys
6 years ago
ulukyn 9780decca0 Added: Player can now ask a pet (zig) to enter/leave from his bag (an icon is displayed when pet is on the bag)
--HG--
branch : patches-from-atys
6 years ago
Inky cad47321a3 Added: set auto-pacts lua bind
--HG--
branch : patches-from-atys
6 years ago
Inky 417865bb3a Added: Store user created channels in xml file
--HG--
branch : patches-from-atys
6 years ago
Ulukyn 36036faffd Added: home propertie of html group (so lua scripts can setup the home)
Fixed: adding new landmarks with lua don't remove respawn points if player is not in an island

--HG--
branch : patches-from-atys
6 years ago
ulukyn c0037fc55a Fixed: removed nlstop when 2 same commands runs (in services)
removed nlassert when factory not found (who crash the fes)

--HG--
branch : patches-from-atys
6 years ago
Inky f96289dfbe Fixed: LevelDesign AI script documentation and few incode typos
--HG--
branch : patches-from-atys
6 years ago
Riasan e794b5dd01 Added: Team Invite button by Guild Member List and Friend List
--HG--
branch : patches-from-atys
6 years ago
ulukyn 11132f08e6 Changed: Players when Outpost is in active war (OutpostInFire) can't be Neutrals
--HG--
branch : patches-from-atys
6 years ago
Riasan 2d83507b55 Changed: active teleport option via map on r2 for privs
--HG--
branch : patches-from-atys
6 years ago
ulukyn 0debc7e6d6 Removed: cacert.pem file from client datas
--HG--
branch : patches-from-atys
6 years ago
ulukyn 698c71f137 Fixed: Added a check for https:// npc web pages
--HG--
branch : patches-from-atys
6 years ago
ulukyn dcf959fe3d Added: luaGetElement for CInterface3DScene and getBBoxSize* for CInterface3DShape
--HG--
branch : patches-from-atys
6 years ago
Nimetu 892d11d2be Fixed: trimSeparators function
--HG--
branch : patches-from-atys
6 years ago
kervala 8f61819d43 Changed: Minor changes
--HG--
branch : patches-from-atys
6 years ago
ulukyn 0e7380599e Added: Ctrl DB Sheet tooltip can be overwrited
--HG--
branch : patches-from-atys
6 years ago
kervala cf1df3e4de Fixed: Warning
--HG--
branch : patches-from-atys
6 years ago
ulukyn 4beecdc81b Eapply: CTypeVersion incremented for sitem and item (because the client don't crash again and i found why )
--HG--
branch : patches-from-atys
6 years ago
ulukyn 0b970371a3 Fixed: check ClientCfg.CurlCABundle is not empty before check the first char (thx nimetu)
--HG--
branch : patches-from-atys
6 years ago
ulukyn 48f3d3b244 Added: add a way to prefix CurlCABundle file with defaultConfigFileName using "%"
Use added cacert.pem from mozilla like default CA file

--HG--
branch : patches-from-atys
6 years ago
ulukyn e9e2590d53 Added: getSheetFamily lua bind
--HG--
branch : patches-from-atys
6 years ago
ulukyn f7f1a6035e Added: getSheetLocalizedName and getSheetLocalizedDesc lua bind
--HG--
branch : patches-from-atys
6 years ago
ulukyn 4f75f92610 Added: Add "@LUA " prefix to url set on shapes with text. When player click on shape, run the lua code
getDbProp64 return a variable instead of node->getValue64() return value.

--HG--
branch : patches-from-atys
6 years ago
ulukyn a50bd10b84 Added: setDbProp64 lua function
--HG--
branch : patches-from-atys
6 years ago
ulukyn 57406f6a8c Added: luaSetModalParentList method for container
--HG--
branch : patches-from-atys
6 years ago
ulukyn 65acd3bf9d Added: Fix a bug with web textures on view_bitmap. The texture must keep the case, only texture from bnp can be convert to lower case
--HG--
branch : patches-from-atys
6 years ago
ulukyn 16ce2e454c Added: add an prefiex "u:" to ask tooltip and hardcode_text to use utf8 strings
--HG--
branch : patches-from-atys
6 years ago
ulukyn c7bdaf513c Changed: use trimSeparators to remove spaces and tabs in html styles args values
--HG--
branch : patches-from-atys
6 years ago
ulukyn 724158c74c Added: trimSeparators function to prevent trim of utf8 special chars. Currently trimSeparators only trim spaces and tabs.
--HG--
branch : patches-from-atys
6 years ago
Nuno Gonçalves ed798cb62a Add new Mektoub type used for new pets companions
--HG--
branch : patches-from-atys
6 years ago
ulukyn 971287ae78 Changed: Added new fame for marauder (generated from database.xml)
--HG--
branch : patches-from-atys
7 years ago
ulukyn c56d2e136d Changed: Increse MAX_INVENTORY_ANIMAL to 7 to add 3 pets companions (ingame named ZIGs)
--HG--
branch : patches-from-atys
6 years ago
ulukyn 3652b23bbb Added: Race shape properties of sitems (!!! sitems.packed_sheets must be regenerated with freshly complilated sheets_packer tool !!!)
--HG--
branch : patches-from-atys
6 years ago
ulukyn 8b1ead9e77 Fixed: getGroundZ uses now float instead of int
--HG--
branch : patches-from-atys
7 years ago
ulukyn 5d7c8777a1 Added: Ability to add icons on the map and setup the handler by left and right click with lua
--HG--
branch : patches-from-atys
7 years ago
ulukyn 1a52cc3cb1 Changed: move /url command to FINAL_VERSION section
--HG--
branch : patches-from-atys
7 years ago
ulukyn 0093170ee9 Added: onclick_r and onover Lua reflect properties. Setup id to buttonGroup to access it
--HG--
branch : patches-from-atys
7 years ago
ulukyn 50d6ae91ae Changed: Increase max number of virtual desktops to use with special apps (like powo creator)
--HG--
branch : patches-from-atys
7 years ago
ulukyn af6975ae11 Added: onclick_r and onover Lua reflect properties. Setup id to buttonGroup to access it
--HG--
branch : patches-from-atys
7 years ago
ulukyn 0b0b980510 Changed: Fix @WEB customtext items
--HG--
branch : patches-from-atys
7 years ago
ulukyn f917d22b71 Changed: Fix @WEB customtext items
--HG--
branch : patches-from-atys
7 years ago
ulukyn 61cee990fc Changed: Fix @WEB customtext items
--HG--
branch : patches-from-atys
7 years ago
ulukyn fd458d5751 Added: setBackground lua method for group_html
--HG--
branch : patches-from-atys
7 years ago
ulukyn@gmail.com 5c41e79ce0 Added: Add new html properties of group_html
--HG--
branch : patches-from-atys
7 years ago
Riasan 0b27a27a4c Fixed: Old Custom Text what used @WEB have no space after command "@WEBxxx"
--HG--
branch : patches-from-atys
7 years ago
ulukyn@gmail.com 4f33715b06 Added: We can now set Item Custom Text with "@LUA xxx" to run lua code when players click on "OPEN" menu
--HG--
branch : patches-from-atys
7 years ago
ulukyn@gmail.com b623bb11f5 Fixed: Adding translation to bots names (with tags) when displaying "xxx says: ..."
--HG--
branch : patches-from-atys
7 years ago
ulukyn@gmail.com 3baf7fdb12 Fixed: First try to add translation tags into Bot names and Titles: translating target name and sys infos
--HG--
branch : patches-from-atys
7 years ago
ulukyn@gmail.com 4c91c418d4 Fixed: First try to add translation tags into Bot names and Titles (will help rename of player to be translated and events npcs)
--HG--
branch : patches-from-atys
7 years ago
ulukyn@gmail.com 99a949b889 Changed: First try to add translation tags into Bot names and Titles (will help rename of player to be translated and events npcs)
--HG--
branch : patches-from-atys
7 years ago
kaetemi 998daa5c56 Add additional nullable
--HG--
branch : cdb-packed
10 years ago
kaetemi a3a347fab4 Add optional null bit to CDB leafs
--HG--
branch : cdb-packed
10 years ago
kaetemi ba42ed3320 Merge with default
--HG--
branch : cdb-packed
10 years ago
kaetemi 1359bbf8c2 (DB_INIT:PLR from 5364 -> 1810 bytes)
--HG--
branch : cdb-packed
10 years ago
kaetemi 5d9f3ce668 Optimize for more common case
--HG--
branch : cdb-packed
10 years ago
kaetemi 9fec239dfb Missed 4 bits
--HG--
branch : cdb-packed
10 years ago
kaetemi 06e9d20850 Add PACKED type to CDB for brick bitfields
--HG--
branch : cdb-packed
10 years ago

18
.gitattributes vendored

@ -0,0 +1,18 @@
*.cpp ident
*.h ident
# Set the default behavior, in case people don't have core.autocrlf set.
* text=auto
# Explicitly declare text files you want to always be normalized and converted
# to native line endings on checkout.
*.c text
*.h text
*.cs text
*.jade text
*.json text
*.js text
*.css text
*.htm text
*.txt text
*.sh text eol=lf

1
.gitignore vendored

@ -265,6 +265,7 @@ 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_admin
web/public_php/role_domain
web/public_php/db_version_ring
web/public_php/config_user.php

@ -34,6 +34,33 @@ 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.321.tar.gz"
SHA1 "5e53cbb0429037ea8e2592bfd92704b8ff3ab492"
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)
# Workaround for PCH compilation issue, from curl intsizeof depencency
ADD_DEFINITIONS(-D__STDC_LIMIT_MACROS)
ENDIF()
#-----------------------------------------------------------------------------
INCLUDE(nel)
INCLUDE(ConfigureChecks)
INCLUDE(CheckDepends)
@ -53,16 +80,12 @@ ENDIF()
CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
PROJECT(RyzomCore CXX C)
SET(NL_VERSION_MAJOR 1)
SET(NL_VERSION_MINOR 1)
SET(NL_VERSION_MAJOR 4)
SET(NL_VERSION_MINOR 0)
SET(NL_VERSION_PATCH 0 CACHE STRING "Patch version")
SET(YEAR "2001-${CURRENT_YEAR}")
SET(AUTHOR "Winch Gate and The Ryzom Core Community")
SET(RYZOM_VERSION_MAJOR 3)
SET(RYZOM_VERSION_MINOR 6)
SET(RYZOM_VERSION_PATCH 0)
#-----------------------------------------------------------------------------
# Redirect output files
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
@ -98,14 +121,14 @@ RYZOM_SETUP_PREFIX_PATHS()
#-----------------------------------------------------------------------------
# Default values for URL's
SET(RYZOM_CLIENT_CREATE_ACCOUNT_URL "https://open.ryzom.dev/ams/" CACHE STRING "Ryzom Client Create Account URL")
SET(RYZOM_CLIENT_EDIT_ACCOUNT_URL "https://open.ryzom.dev/ams/" CACHE STRING "Ryzom Client Edit Account URL")
SET(RYZOM_CLIENT_FORGET_PASSWORD_URL "https://open.ryzom.dev/ams/" CACHE STRING "Ryzom Client Forget Password URL")
SET(RYZOM_CLIENT_PATCH_URL "https://cdn.ryzom.dev/open/patch/" CACHE STRING "Ryzom Client Patch URL")
SET(RYZOM_CLIENT_APP_NAME "default")
SET(RYZOM_CLIENT_CREATE_ACCOUNT_URL "https://core.ryzom.dev/ams/" CACHE STRING "Ryzom Client Create Account URL")
SET(RYZOM_CLIENT_EDIT_ACCOUNT_URL "https://core.ryzom.dev/ams/" CACHE STRING "Ryzom Client Edit Account URL")
SET(RYZOM_CLIENT_FORGET_PASSWORD_URL "https://core.ryzom.dev/ams/" CACHE STRING "Ryzom Client Forget Password URL")
SET(RYZOM_CLIENT_PATCH_URL "https://cdn.ryzom.dev/core4/patch/" CACHE STRING "Ryzom Client Patch URL")
SET(RYZOM_CLIENT_APP_NAME "core4")
SET(RYZOM_WEBIG_MAIN_URL "https://open.ryzom.dev/" CACHE STRING "Ryzom Client WebIG Main URL")
SET(RYZOM_WEBIG_TRUSTED_DOMAIN "open.ryzom.dev" CACHE STRING "Ryzom Client WebIG Trusted Domain")
SET(RYZOM_CLIENT_RELEASENOTES_URL "https://core4.ryzom.dev/releasenotes/index.php" CACHE STRING "Ryzom Client Release Notes URL")
SET(RYZOM_CLIENT_RELEASENOTES_RING_URL "https://core4.ryzom.dev/releasenotes_ring/index.php" CACHE STRING "Ryzom Client Release Notes URL")
#-----------------------------------------------------------------------------
# urls when compiling ryzom live client
@ -117,8 +140,8 @@ IF(WITH_RYZOM_LIVE)
SET(RYZOM_CLIENT_PATCH_URL "http://dl.ryzom.com/patch_live")
SET(RYZOM_CLIENT_APP_NAME "ryzom_live")
SET(RYZOM_WEBIG_MAIN_URL "https://app.ryzom.com/")
SET(RYZOM_WEBIG_TRUSTED_DOMAIN "app.ryzom.com")
SET(RYZOM_CLIENT_RELEASENOTES_URL "https://app.ryzom.com/releasenotes/index.php")
SET(RYZOM_CLIENT_RELEASENOTES_RING_URL "https://app.ryzom.com/releasenotes_ring/index.php")
ENDIF()
#-----------------------------------------------------------------------------
@ -134,6 +157,36 @@ IF(WIN32)
ENDIF()
ENDIF()
IF(HUNTER_ENABLED)
# This fix is for compiling OpenSSL in Azure Pipeline linux agent where ENV{SYSTEM} == "build"
IF(DEFINED ENV{SYSTEM} AND UNIX AND NOT APPLE)
STRING(TOUPPER "$ENV{SYSTEM}" _tmp)
IF (_tmp STREQUAL "BUILD")
UNSET(ENV{SYSTEM})
ENDIF()
UNSET(_tmp)
ENDIF()
## 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 +197,7 @@ FIND_PACKAGE(Jpeg)
IF(WIN32)
SET(OPENSSL_LIBRARIES ${OPENSSL_LIBRARIES} Crypt32.lib)
ENDIF()
ENDIF() #hunter
IF(WITH_LIBOVR)
FIND_PACKAGE(LibOVR)
@ -156,7 +210,7 @@ ENDIF()
NL_CONFIGURE_CHECKS()
IF(WITH_STATIC_LIBXML2)
SET(LIBXML2_DEFINITIONS ${LIBXML2_DEFINITIONS} -DLIBXML_STATIC)
ADD_DEFINITIONS(-DLIBXML_STATIC)
ENDIF()
IF(WITH_LIBXML2_ICONV)
@ -171,7 +225,7 @@ IF(WITH_STATIC)
SET(LIBXML2_LIBRARIES ${LIBXML2_LIBRARIES} ${WINSOCK2_LIB})
ENDIF()
IF(UNIX)
IF(UNIX AND NOT HUNTER_ENABLED)
# under Linux and OS X, recent libxml2 versions are linked against liblzma
FIND_PACKAGE(LibLZMA)
IF(LIBLZMA_LIBRARIES)
@ -237,6 +291,7 @@ ENDIF()
INCLUDE(FindHelpers)
#TODO: hunter qt package
IF(WITH_QT5)
FIND_QT5()
ENDIF()
@ -248,6 +303,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,11 +313,26 @@ 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()
FIND_PACKAGE(CURL REQUIRED)
# if cmake finds config-file package, ie FIND_PACKAGE(CURL CONFIG), then CURL_LIBRARIES is not defined
IF(TARGET CURL::libcurl)
SET(CURL_LIBRARIES CURL::libcurl)
ENDIF()
IF((WIN32 OR CURL_LIBRARIES MATCHES "\\.a") AND WITH_STATIC_CURL)
SET(CURL_STATIC ON)
@ -310,6 +381,7 @@ IF(WITH_NEL)
ENDIF()
ENDIF()
ENDIF()
ENDIF() #hunter
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/nel/include)
ADD_SUBDIRECTORY(nel)

@ -176,6 +176,17 @@ MACRO(FIND_PACKAGE_HELPER NAME INCLUDE)
SET(_INCLUDE_PATHS)
SET(_LIBRARY_PATHS)
# Check for root directories passed to CMake with -DXXX_ROOT=...
IF(DEFINED ENV{${_UPNAME_FIXED}_ROOT})
SET(_TMP ${${_UPNAME_FIXED}_ROOT})
GET_FILENAME_COMPONENT(_TMP ${_TMP} ABSOLUTE)
LIST(APPEND _INCLUDE_PATHS ${_TMP}/include ${_TMP})
LIST(APPEND _LIBRARY_PATHS ${_TMP}/lib${LIB_SUFFIX})
IF(_IS_VERBOSE)
MESSAGE(STATUS "Using ${_UPNAME_FIXED}_ROOT as root directory ${_TMP}")
ENDIF()
ENDIF()
# Check for root directories passed to CMake with -DXXX_DIR=...
IF(DEFINED ${_UPNAME_FIXED}_DIR)
@ -212,7 +223,7 @@ MACRO(FIND_PACKAGE_HELPER NAME INCLUDE)
ENDFOREACH()
ENDIF()
IF(UNIX)
IF(UNIX AND NOT DEFINED ENV{${_UPNAME_FIXED}_ROOT})
# Append UNIX standard include paths
SET(_UNIX_INCLUDE_PATHS)
@ -262,11 +273,16 @@ MACRO(FIND_PACKAGE_HELPER NAME INCLUDE)
ENDIF()
# Append environment variables XXX_DIR
IF(DEFINED ENV{${_UPNAME}_DIR})
LIST(APPEND _LIBRARY_PATHS
$ENV{${_UPNAME}_DIR}/lib${LIB_SUFFIX})
ENDIF()
IF(DEFINED ENV{${_UPNAME_FIXED}_DIR})
LIST(APPEND _LIBRARY_PATHS
$ENV{${_UPNAME}_DIR}/lib${LIB_SUFFIX}
$ENV{${_UPNAME_FIXED}_DIR}/lib${LIB_SUFFIX})
ENDIF()
IF(UNIX)
IF(UNIX AND NOT DEFINED ENV{${_UPNAME_FIXED}_ROOT})
SET(_UNIX_LIBRARY_PATHS)
# Append multiarch libraries paths
@ -311,6 +327,20 @@ MACRO(FIND_PACKAGE_HELPER NAME INCLUDE)
LIST(REMOVE_DUPLICATES _DEBUG_LIBRARIES)
# Search for release library
IF(DEFINED ENV{${_UPNAME_FIXED}_ROOT} AND NOT WIN32)
FIND_LIBRARY(${_UPNAME_FIXED}_LIBRARY_RELEASE
NAMES
${_RELEASE_LIBRARIES}
HINTS ${PKG_${_NAME_FIXED}_LIBRARY_DIRS}
PATHS
${_LIBRARY_PATHS}
${_UNIX_LIBRARY_PATHS}
NO_CMAKE_PATH
NO_CMAKE_SYSTEM_PATH
NO_CMAKE_ENVIRONMENT_PATH
NO_SYSTEM_ENVIRONMENT_PATH
)
ELSE()
FIND_LIBRARY(${_UPNAME_FIXED}_LIBRARY_RELEASE
NAMES
${_RELEASE_LIBRARIES}
@ -320,6 +350,7 @@ MACRO(FIND_PACKAGE_HELPER NAME INCLUDE)
${_UNIX_LIBRARY_PATHS}
NO_CMAKE_SYSTEM_PATH
)
ENDIF()
IF(_IS_VERBOSE)
IF(${_UPNAME_FIXED}_LIBRARY_RELEASE)
@ -330,6 +361,20 @@ MACRO(FIND_PACKAGE_HELPER NAME INCLUDE)
ENDIF()
# Search for debug library
IF(DEFINED ENV{${_UPNAME_FIXED}_ROOT} AND NOT WIN32)
FIND_LIBRARY(${_UPNAME_FIXED}_LIBRARY_DEBUG
NAMES
${_DEBUG_LIBRARIES}
HINTS ${PKG_${_NAME_FIXED}_LIBRARY_DIRS}
PATHS
${_LIBRARY_PATHS}
${_UNIX_LIBRARY_PATHS}
NO_CMAKE_PATH
NO_CMAKE_SYSTEM_PATH
NO_CMAKE_ENVIRONMENT_PATH
NO_SYSTEM_ENVIRONMENT_PATH
)
ELSE()
FIND_LIBRARY(${_UPNAME_FIXED}_LIBRARY_DEBUG
NAMES
${_DEBUG_LIBRARIES}
@ -339,6 +384,7 @@ MACRO(FIND_PACKAGE_HELPER NAME INCLUDE)
${_UNIX_LIBRARY_PATHS}
NO_CMAKE_SYSTEM_PATH
)
ENDIF()
IF(_IS_VERBOSE)
IF(${_UPNAME_FIXED}_LIBRARY_DEBUG)
@ -685,7 +731,7 @@ MACRO(FIND_LIBXML2)
IF(CRYPT32_LIB)
LIST(APPEND LIBXML2_LIBRARIES ${CRYPT32_LIB})
ENDIF()
ELSE()
ELSEIF(NOT HUNTER_ENABLED)
# under Linux and OS X, recent libxml2 versions are linked against liblzma
FIND_PACKAGE(LibLZMA)

@ -16,7 +16,14 @@ ENDIF (ICONV_INCLUDE_DIR AND ICONV_LIBRARIES)
FIND_PATH(ICONV_INCLUDE_DIR iconv.h HINTS /sw/include/ PATHS /opt/local)
FIND_LIBRARY(ICONV_LIBRARIES NAMES iconv libiconv c PATHS /opt/local)
FIND_LIBRARY(ICONV_LIBRARIES_RELEASE NAMES iconv libiconv c PATHS /opt/local)
FIND_LIBRARY(ICONV_LIBRARIES_DEBUG NAMES iconvd libiconvd c PATHS /opt/local)
IF (ICONV_LIBRARIES_RELEASE AND ICONV_LIBRARIES_DEBUG)
SET(ICONV_LIBRARIES optimized ${ICONV_LIBRARIES_RELEASE} debug ${ICONV_LIBRARIES_DEBUG})
ELSE()
SET(ICONV_LIBRARIES ${ICONV_LIBRARIES_RELEASE})
ENDIF()
IF(ICONV_INCLUDE_DIR AND ICONV_LIBRARIES)
SET(ICONV_FOUND TRUE)
@ -60,5 +67,6 @@ ENDIF()
MARK_AS_ADVANCED(
ICONV_INCLUDE_DIR
ICONV_LIBRARIES
ICONV_LIBRARIES_DEBUG
ICONV_SECOND_ARGUMENT_IS_CONST
)

@ -38,11 +38,25 @@ find_path(LUA_INCLUDE_DIR lua.h
/opt
)
find_library(LUA_LIBRARY
FIND_LIBRARY(LUA_LIBRARY
NAMES lua53 lua5.3 lua-5.3 lua
HINTS
ENV LUA_DIR
PATH_SUFFIXES lib
$ENV{LUA_DIR}
PATH_SUFFIXES lib64 lib
PATHS
~/Library/Frameworks
/Library/Frameworks
/sw
/opt/local
/opt/csw
/opt
)
FIND_LIBRARY(LUA_LIBRARY_DEBUG
NAMES lua53-d lua5.3-d lua-5.3-d lua-d lua53d lua5.3d lua-5.3d luad
HINTS
$ENV{LUA_DIR}
PATH_SUFFIXES lib64 lib
PATHS
~/Library/Frameworks
/Library/Frameworks
@ -58,10 +72,14 @@ if(LUA_LIBRARY)
find_library(LUA_MATH_LIBRARY m)
set( LUA_LIBRARIES "${LUA_LIBRARY};${LUA_MATH_LIBRARY}" CACHE STRING "Lua Libraries")
# For Windows and Mac, don't need to explicitly include the math library
else()
if (LUA_LIBRARY_DEBUG)
set( LUA_LIBRARIES optimized ${LUA_LIBRARY} debug ${LUA_LIBRARY_DEBUG} CACHE STRING "Lua Libraries")
else()
set( LUA_LIBRARIES "${LUA_LIBRARY}" CACHE STRING "Lua Libraries")
endif()
endif()
endif()
if(LUA_INCLUDE_DIR AND EXISTS "${LUA_INCLUDE_DIR}/lua.h")
file(STRINGS "${LUA_INCLUDE_DIR}/lua.h" lua_version_str REGEX "^#define[ \t]+LUA_RELEASE[ \t]+\"Lua .+\"")
@ -77,5 +95,5 @@ FIND_PACKAGE_HANDLE_STANDARD_ARGS(Lua53
REQUIRED_VARS LUA_LIBRARIES LUA_INCLUDE_DIR
VERSION_VAR LUA_VERSION_STRING)
mark_as_advanced(LUA_INCLUDE_DIR LUA_LIBRARIES LUA_LIBRARY LUA_MATH_LIBRARY)
mark_as_advanced(LUA_INCLUDE_DIR LUA_LIBRARIES LUA_LIBRARY LUA_LIBRARY_DEBUG LUA_MATH_LIBRARY)

@ -0,0 +1,99 @@
# Locate Lua library
# This module defines
# LUA54_FOUND, if false, do not try to link to Lua
# LUA_LIBRARIES
# LUA_INCLUDE_DIR, where to find lua.h
# LUA_VERSION_STRING, the version of Lua found (since CMake 2.8.8)
#
# Note that the expected include convention is
# #include "lua.h"
# and not
# #include <lua/lua.h>
# This is because, the lua location is not standardized and may exist
# in locations other than lua/
#=============================================================================
# Copyright 2007-2009 Kitware, Inc.
#
# Distributed under the OSI-approved BSD License (the "License");
# see accompanying file Copyright.txt for details.
#
# This software is distributed WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the License for more information.
#=============================================================================
# (To distribute this file outside of CMake, substitute the full
# License text for the above reference.)
find_path(LUA_INCLUDE_DIR lua.h
HINTS
ENV LUA_DIR
PATH_SUFFIXES include/lua54 include/lua5.4 include/lua-5.4 include/lua include
PATHS
~/Library/Frameworks
/Library/Frameworks
/sw # Fink
/opt/local # DarwinPorts
/opt/csw # Blastwave
/opt
)
FIND_LIBRARY(LUA_LIBRARY
NAMES lua54 lua5.4 lua-5.4 lua
HINTS
$ENV{LUA_DIR}
PATH_SUFFIXES lib64 lib
PATHS
~/Library/Frameworks
/Library/Frameworks
/sw
/opt/local
/opt/csw
/opt
)
FIND_LIBRARY(LUA_LIBRARY_DEBUG
NAMES lua54-d lua5.4-d lua-5.4-d lua-d lua54d lua5.4d lua-5.4d luad
HINTS
$ENV{LUA_DIR}
PATH_SUFFIXES lib64 lib
PATHS
~/Library/Frameworks
/Library/Frameworks
/sw
/opt/local
/opt/csw
/opt
)
if(LUA_LIBRARY)
# include the math library for Unix
if(UNIX AND NOT APPLE AND NOT BEOS)
find_library(LUA_MATH_LIBRARY m)
set( LUA_LIBRARIES "${LUA_LIBRARY};${LUA_MATH_LIBRARY}" CACHE STRING "Lua Libraries")
# For Windows and Mac, don't need to explicitly include the math library
else()
if (LUA_LIBRARY_DEBUG)
set( LUA_LIBRARIES optimized ${LUA_LIBRARY} debug ${LUA_LIBRARY_DEBUG} CACHE STRING "Lua Libraries")
else()
set( LUA_LIBRARIES "${LUA_LIBRARY}" CACHE STRING "Lua Libraries")
endif()
endif()
endif()
if(LUA_INCLUDE_DIR AND EXISTS "${LUA_INCLUDE_DIR}/lua.h")
file(STRINGS "${LUA_INCLUDE_DIR}/lua.h" lua_version_str REGEX "^#define[ \t]+LUA_RELEASE[ \t]+\"Lua .+\"")
string(REGEX REPLACE "^#define[ \t]+LUA_RELEASE[ \t]+\"Lua ([^\"]+)\".*" "\\1" LUA_VERSION_STRING "${lua_version_str}")
unset(lua_version_str)
endif()
include(FindPackageHandleStandardArgs)
# handle the QUIETLY and REQUIRED arguments and set LUA_FOUND to TRUE if
# all listed variables are TRUE
FIND_PACKAGE_HANDLE_STANDARD_ARGS(Lua54
REQUIRED_VARS LUA_LIBRARIES LUA_INCLUDE_DIR
VERSION_VAR LUA_VERSION_STRING)
mark_as_advanced(LUA_INCLUDE_DIR LUA_LIBRARIES LUA_LIBRARY LUA_LIBRARY_DEBUG LUA_MATH_LIBRARY)

@ -10,6 +10,19 @@ MACRO(FIND_CORRECT_LUA_VERSION)
IF(LUABIND_LIBRARY_RELEASE MATCHES "\\.so")
INCLUDE(CheckDepends)
# check for Lua 5.4
SET(LUA54_LIBRARIES liblua5.4 liblua-5.4 liblua.so.5.4)
FOREACH(_LIB ${LUA54_LIBRARIES})
CHECK_LINKED_LIBRARY(LUABIND_LIBRARY_RELEASE _LIB LUALIB_FOUND)
IF(LUALIB_FOUND)
MESSAGE(STATUS "Luabind is using Lua 5.4")
FIND_PACKAGE(Lua54 REQUIRED)
BREAK()
ENDIF()
ENDFOREACH()
IF(NOT LUALIB_FOUND)
# check for Lua 5.3
SET(LUA53_LIBRARIES liblua5.3 liblua-5.3 liblua.so.5.3)
@ -21,6 +34,7 @@ MACRO(FIND_CORRECT_LUA_VERSION)
BREAK()
ENDIF()
ENDFOREACH()
ENDIF()
IF(NOT LUALIB_FOUND)
# check for Lua 5.2
@ -69,7 +83,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 +109,16 @@ 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(WITH_LUA53)
IF(WITH_STLPORT)
LIST(APPEND LIBRARY_NAME_RELEASE luabind_stlport_lua53)
@ -135,8 +165,8 @@ IF(WITH_STLPORT)
ENDIF()
# generic libraries names
LIST(APPEND LIBRARY_NAME_RELEASE luabind libluabind)
LIST(APPEND LIBRARY_NAME_DEBUG luabind_d luabindd libluabind_d libluabindd)
LIST(APPEND LIBRARY_NAME_RELEASE luabind luabind09 libluabind)
LIST(APPEND LIBRARY_NAME_DEBUG luabind_d luabindd luabind09-d libluabind_d libluabindd)
FIND_PACKAGE_HELPER(Luabind luabind/luabind.hpp RELEASE ${LIBRARY_NAME_RELEASE} DEBUG ${LIBRARY_NAME_DEBUG})

@ -45,12 +45,20 @@ ELSE()
IF(MSVC_VERSION LESS 1920)
SET(_NAME "2017")
ELSE()
ELSEIF(MSVC_VERSION LESS 1930)
SET(_NAME "2019")
ELSE()
SET(_NAME "2022")
ENDIF()
STRING(REGEX REPLACE "/MSVC/.+" "/MSVC" VC_DIR ${_COMPILER})
IF(DEFINED ENV{VCToolsVersion})
SET(MSVC_TOOLCHAIN_VERSION $ENV{VCToolsVersion})
ELSE()
FILE(GLOB MSVC_TOOLCHAIN_VERSIONS RELATIVE ${VC_DIR} "${VC_DIR}/*")
IF(MSVC_TOOLCHAIN_VERSIONS)
@ -60,9 +68,12 @@ ELSE()
IF(MSVC_TOOLCHAIN_VERSIONS)
LIST(GET MSVC_TOOLCHAIN_VERSIONS 0 MSVC_TOOLCHAIN_VERSION)
ENDIF()
SET(VC_DIR "${VC_DIR}/${MSVC_TOOLCHAIN_VERSION}")
ENDIF()
IF (MSVC_TOOLCHAIN_VERSION)
SET(VC_DIR "${VC_DIR}/${MSVC_TOOLCHAIN_VERSION}")
MESSAGE(STATUS "Found Visual C++ ${_NAME} (${_VERSION} with toolchain ${MSVC_TOOLCHAIN_VERSION}) in ${VC_DIR}")
ELSE()
MESSAGE(FATAL_ERROR "Unable to find Visual C++ in ${VC_DIR}")

@ -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/ryzom/luabind/tarball/0ae9bd6e40fe6c70e9d032ff096370929f58c143"
SHA1 "1dfabfa89ee72066118e4e28e797830e118d2a9b"
)

@ -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)
###
@ -356,6 +393,7 @@ MACRO(NL_SETUP_RYZOM_DEFAULT_OPTIONS)
OPTION(WITH_LUA51 "Build Ryzom Core using Lua 5.1" ON )
OPTION(WITH_LUA52 "Build Ryzom Core using Lua 5.2" OFF)
OPTION(WITH_LUA53 "Build Ryzom Core using Lua 5.3" OFF)
OPTION(WITH_LUA54 "Build Ryzom Core using Lua 5.4" OFF)
OPTION(WITH_RYZOM_CLIENT_UAC "Ask to run as Administrator" OFF)
OPTION(WITH_RYZOM_PATCH "Enable Ryzom in-game patch support" OFF)
OPTION(WITH_RYZOM_CUSTOM_PATCH_SERVER "Only use patch server from CFG file" OFF)
@ -1195,7 +1233,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)
@ -1226,7 +1268,9 @@ MACRO(SETUP_EXTERNAL)
SET(CMAKE_USE_PTHREADS_INIT 1)
SET(Threads_FOUND TRUE)
ELSE()
IF(NOT MSVC)
SET(THREADS_HAVE_PTHREAD_ARG ON)
ENDIF()
FIND_PACKAGE(Threads)
# TODO: replace all -l<lib> by absolute path to <lib> in CMAKE_THREAD_LIBS_INIT
ENDIF()
@ -1238,7 +1282,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()
@ -1247,5 +1291,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,7 +1,63 @@
# Ryzom Core [![Build Status](https://travis-ci.org/ryzom/ryzomcore.svg)](https://travis-ci.org/ryzom/ryzomcore)
# Ryzom Core [![Build Status](https://dev.azure.com/ryzom/ryzomcore/_apis/build/status/ryzom.ryzomcore?branchName=core4)](https://dev.azure.com/ryzom/ryzomcore/_build)
Ryzom Core is the open-source project related to Ryzom Game. Written in C++, Ryzom Core contains the whole code (client, server, tools) used to make the commercial MMORPG Ryzom. Ryzom Core is a toolkit for the development of massively multiplayer online universes. It provides the base technologies and a set of development methodologies for the development of both client and server code.
Ryzom Core is open source and released under the terms of the GNU Affero General Public License 3.0 (GNU/AGPLv3) for the source code. The art assets are dual-licenced under the Creative Commons Attributions-ShareAlike 3.0 (CC-BY-SA) and Free Art License 1.3 (FAL 1.3).
* Wiki: https://wiki.ryzom.dev/
* IRC: https://freegamedev.net/irc/#ryzom
* Discord: https://discord.gg/xjSBVkSmCy
Ryzom Core is open source and released under the terms of the GNU Affero General Public License 3.0 (GNU/AGPLv3) for the source code and the Creative Commons Attributions-ShareAlike 3.0 (CC-BY-SA) for the art assets. Which means you can create your own game using Ryzom Core, for more information on doing so check out Creating Your Own Game Using Ryzom Core.
## About the community
We are a passionate group of gamers, and open-source aficionados. Many of us fell in love with the original vision and promise of the Saga of Ryzom, or the ideals of open source. For some the game was once our home, or still is. To others, it was an introduction to the open-source software world. We work on Ryzom Core because we care for the things we love, and the friendships we've made over the years.
The Ryzom Core repository is maintained by the community independently. It is not officially affiliated with the commercial game, nor with Winch Gate Ltd. See the History section on why.
## Support development
We are happy to work on this project in our free time. If you would like to contribute to the project financially, you can support us and our loved ones through any of the following links.
* [![Sponsor](https://img.shields.io/github/sponsors/kaetemi?style=social)]( https://github.com/sponsors/kaetemi) Jan Boon (Kaetemi), Polyverse OÜ. — Goes towards the Ryzom Core servers, and open-source development.
If you're a regular source code or game asset contributor to the open-source project, feel free to add yourself to this list.
## Project history
The Saga of Ryzom was originally developed by Nevrax. A small game development company with a visionary creative direction.
Several founders and developers of the company at the time were open-source aficionados. The ideal in their minds was to fully open source the game. Unfortunately, the investors thought differently and never fully bought into the open-source model. Only the engine was released at the time.
This gave birth to the NeL project. The Nevrax Library. While there was public interest in the engine, the lack of commitment to open source by the company made it difficult for independent contributors to work on the project.
When Nevrax eventually went bankrupt, they were initially bought out by Gameforge. A subsidiary called Gameforge France was formed to work on Ryzom.
A community-led [Virtual Citizenship Association (VCA)]( https://web.archive.org/web/20080905175524/https://www.virtualcitizenship.org/), raising over € 170,000 in pledges, failed to win the bid. The open-source NeL community was later abandoned by Gameforge once Ryzom eventually fell into oblivion, and revived itself as the OpenNeL project. After Gameforge failed to fully pay for the bankruptcy deal, and some hush-hush behind the backs of the community-led VCA, the ownership was transferred back to the liquidator and onto Winch Gate Properties Limited.
Fortunately, thanks to the efforts of original Nevrax employees, and key members of OpenNeL, the new owner showed some goodwill towards the open source community, and the full game client and server, as well as a substantial amount of graphics assets, were released as open source.
With the promise of the game becoming an open source project, they worked together with the OpenNeL community, which renamed to Ryzom Core in order to advertise the game better. In practice, the commercial game servers were being developed on a private repository. Beyond bug fixes and enhancements to the client, the community had zero input. New features that required server modifications were disallowed. The collaboration was doomed to fail.
The Ryzom Core community was backstabbed and slowly ignored by the new owner. A new Ryzom Forge project was launched behind closed doors, that claimed to make community contributions easier. Yet closing off development almost entirely to outsiders. No attempt was made by the new owner at fully committing to an open-source development model.
New features on the commercial game developed by the Ryzom Forge team are primarily web applications using the in-game browser, circumventing the AGPLv3. Furthermore, the Ryzom Forge team had at one point updated their private server repository to link the binaries to the game engine on the public repository. This in violation of the AGPLv3 license on community contributions, forcing their hand to make their private server fork public. The web apps remain closed source. The team also shut down the Ryzom Ring player scenario tools on the official servers, in favor of closed source web-based tools that are exclusive to the official event team.
As the commercial game owners historically, and still, have been a poorly committed and unreliable partner to running this as a truly open-source project, Ryzom Core is currently an independent community project, and is committed to remain that way and protect the rights of independent contributors.
## Copyright and contributions
All original source code is copyright (C) 2001-2022 Winch Gate Property Limited. The commercial game's official Git repositories are hosted on GitLab at https://gitlab.com/ryzom.
The NeL Sound driver for XAudio2 is copyright (C) 2008-2014 Jan BOON <jan.boon@kaetemi.be>.
Other community contributions and modifications are copyright their respective authors. Consult the OpenNeL SVN and the Ryzom Core Git repository histories for more details.
The source code in this repository is licensed under the AGPLv3, unless specified otherwise. Likewise, by committing to this repository, you agree to license your modifications under the AGPLv3. You retain all copyright over your work (\*). As such, you have the option to additionally dual-license your fully-owned contributions under any other license. Configuration files are implied to be public domain samples, as they may contain sensitive data in a production environment.
(\*) If, and only if, you have signed a CTA (part of the NDA, copyright and ownership - your contract may vary) with Winch Gate Ltd., your contributions, along with any other creations related to Ryzom, fall under that contract and will be copyright Winch Gate Ltd. instead (\*\*). As per your contract, your contributions are licensed back to you under the AGPLv3. You retain the moral rights to your work. These are non-transferable rights, which permit you to assert your authorship and be credited for your contributions. You should exercise this right.
(\*\*) If you live in a legislation where contractual copyright assignments without employment or commercial transaction are unenforceable (e.g. Belgium), and you are not being paid by Winch Gate Ltd. for your current work, the CTA is null and void, and you retain full copyright ownership over your contributions. Consult a lawyer to assert your rights. Don't give them away.
To comply with the AGPLv3 license, section 5(a), names of the contributors who own the copyrights to modifications will be added to the copyright notice in source files on a periodic basis. You may follow the existing format if you wish to do this yourself.
The removal of any valid copyright notice is a violation of the AGPLv3 license.

@ -77,3 +77,91 @@ jobs:
cd build
make -j`nproc`
displayName: 'Make'
- job: client
strategy:
matrix:
ubuntu:
vmImage: 'ubuntu-18.04'
releaseName: 'Ubuntu18'
aptPackages: >-
libasound2-dev
libgl1-mesa-dev
libjack-dev
libpulse-dev
libxrandr-dev
libxrender-dev
libxxf86vm-dev
win2019:
vmImage: 'windows-2019'
releaseName: 'Win64'
cmakeExtra: >-
-DWITH_DRIVER_DIRECT3D=ON
-DWITH_DRIVER_XAUDIO2=ON
-DDXSDK_DIR=C:/DXSDK
macOS11:
vmImage: 'macOS-11'
releaseName: 'macOS'
MACOSX_DEPLOYMENT_TARGET: 10.12
cmakeExtra: >-
-DWITH_LIBXML2_ICONV=OFF
-GXcode
timeoutInMinutes: 120
pool:
vmImage: $(vmImage)
steps:
- checkout: self
fetchDepth: 0
- script: |
sudo apt update
sudo apt remove -y man-db
sudo apt install -y --no-install-recommends $(aptPackages)
displayName: '(ubuntu) Dependencies'
condition: eq(variables['Agent.JobName'], 'client ubuntu')
- 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
displayName: '(windows) DirectX SDK'
condition: contains(variables['cmakeExtra'], 'DIRECT3D=ON')
- task: Cache@2
inputs:
key: 'hunter321b-$(releaseName)'
path: '$(Pipeline.Workspace)/.hunter/_Base/Cache'
- task: CMake@1
displayName: 'Configure'
inputs:
workingDirectory: $(Build.BinariesDirectory)
cmakeArgs: >-
$(cmakeExtra)
-DCMAKE_CONFIGURATION_TYPES=Release
-DFINAL_VERSION=OFF
-DHUNTER_CONFIGURATION_TYPES=Release
-DHUNTER_ENABLED=ON
-DHUNTER_ROOT=$(Pipeline.Workspace)/.hunter
-DHUNTER_STATUS_DEBUG=ON
-DWITH_DRIVER_OPENAL=ON
-DWITH_DRIVER_OPENGL=ON
-DWITH_INSTALL_LIBRARIES=OFF
-DWITH_NEL_SAMPLES=OFF
-DWITH_NEL_TESTS=OFF
-DWITH_NEL_TOOLS=OFF
-DWITH_RYZOM_CLIENT=ON
-DWITH_RYZOM_SERVER=OFF
-DWITH_RYZOM_TOOLS=OFF
$(Build.SourcesDirectory)
- task: CMake@1
displayName: 'Build'
inputs:
workingDirectory: $(Build.BinariesDirectory)
cmakeArgs: '--build . --config Release'
#- task: CMake@1
# displayName: 'Install'
# inputs:
# workingDirectory: $(Build.BinariesDirectory)
# cmakeArgs: --install . --config Release --prefix $(Build.StagingDirectory)
#- task: PublishPipelineArtifact@1
# inputs:
# targetPath: $(Build.StagingDirectory)/bin
# artifactName: RyzomClient$(releaseName)Release

@ -39,8 +39,8 @@
#cmakedefine RYZOM_CLIENT_PATCH_URL "${RYZOM_CLIENT_PATCH_URL}"
#cmakedefine RYZOM_CLIENT_APP_NAME "${RYZOM_CLIENT_APP_NAME}"
#cmakedefine RYZOM_WEBIG_MAIN_URL "${RYZOM_WEBIG_MAIN_URL}"
#cmakedefine RYZOM_WEBIG_TRUSTED_DOMAIN "${RYZOM_WEBIG_TRUSTED_DOMAIN}"
#cmakedefine RYZOM_CLIENT_RELEASENOTES_RING_URL "${RYZOM_CLIENT_RELEASENOTES_RING_URL}"
#cmakedefine RYZOM_CLIENT_RELEASENOTES_URL "${RYZOM_CLIENT_RELEASENOTES_URL}"
#cmakedefine AUTHOR "${AUTHOR}"
#cmakedefine YEAR "${YEAR}"

@ -32,9 +32,9 @@ parse_version()
export $VAR=$V
}
parse_version RYZOM $VERSION_FILE VERSION_MAJOR
parse_version RYZOM $VERSION_FILE VERSION_MINOR
parse_version RYZOM $VERSION_FILE VERSION_PATCH
parse_version NL $VERSION_FILE VERSION_MAJOR
parse_version NL $VERSION_FILE VERSION_MINOR
parse_version NL $VERSION_FILE VERSION_PATCH
VERSION=$VERSION_MAJOR.$VERSION_MINOR.$VERSION_PATCH

@ -17,11 +17,11 @@ IF((WITH_INSTALL_LIBRARIES AND WITH_STATIC) OR NOT WITH_STATIC)
ENDIF()
IF(WITH_NEL_TOOLS)
ADD_EXECUTABLE(lzma ${CMAKE_CURRENT_SOURCE_DIR}/LzmaUtil.c)
ADD_EXECUTABLE(nellzma ${CMAKE_CURRENT_SOURCE_DIR}/LzmaUtil.c)
TARGET_LINK_LIBRARIES(lzma nel_sevenzip)
NL_DEFAULT_PROPS(lzma "NeL, 3rd Party: LZMA")
NL_ADD_RUNTIME_FLAGS(lzma)
TARGET_LINK_LIBRARIES(nellzma nel_sevenzip)
NL_DEFAULT_PROPS(nellzma "NeL, 3rd Party: LZMA")
NL_ADD_RUNTIME_FLAGS(nellzma)
INSTALL(TARGETS lzma RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT tools)
INSTALL(TARGETS nellzma RUNTIME DESTINATION ${NL_BIN_PREFIX} COMPONENT tools)
ENDIF()

@ -10,14 +10,20 @@ IF(WIN32)
ENDIF()
IF(WITH_3D)
IF(HUNTER_ENABLED)
HUNTER_ADD_PACKAGE(freetype)
FIND_PACKAGE(freetype CONFIG REQUIRED)
SET(FREETYPE_LIBRARIES freetype::freetype)
ELSE()
FIND_PACKAGE(FreeType)
ENDIF() #hunter
IF(WITH_NEL_CEGUI)
FIND_PACKAGE(CEGUI)
ENDIF()
ENDIF()
IF(WITH_SOUND)
IF(WITH_SOUND AND NOT HUNTER_ENABLED)
FIND_PACKAGE(Ogg)
FIND_PACKAGE(Vorbis)
IF(WITH_FFMPEG)

@ -86,6 +86,9 @@ namespace NLGUI
std::string languageCode;
/// List of domains the widget can consider secure.
std::vector<std::string> trustedDomains;
/// Web server
std::string webServer;
std::string webServerDomain;
/// Maximum concurrent MultiCurl connections per CGroupHTML instance
sint32 curlMaxConnections;
@ -969,6 +972,7 @@ namespace NLGUI
// stop all curl downalods (html and data)
void releaseDownloads();
void releaseDataDownloads();
void checkDownloads();
// _CurlWWW download finished

@ -188,6 +188,10 @@ namespace NLGUI
// Hide a line.
void setHiddenLine(uint line, bool h);
// Highlight single line
void setSelected(uint line) { _Selected = line < _Lines.size() ? line : -1; }
void clearSelected() { _Selected = -1; }
// Max Visible Line (-1 == no limit)
void setMaxVisibleLine(sint32 mvl);
sint32 getMaxVisibleLine() { return _MaxVisibleLine; }
@ -280,10 +284,13 @@ namespace NLGUI
std::vector<CGroupSubMenu*> _SubMenus;
CGroupMenu *_GroupMenu; // Master parent
sint32 _MouseOver;
sint32 _Selected;
sint32 _MaxVisibleLine; // -1 == no limit
bool _ScrollToView;
friend class CGroupMenu;
private:
/** Clone this menu, and set its new father
@ -371,6 +378,10 @@ namespace NLGUI
// Gray a line on the RootMenu
void setGrayedLine(uint line, bool g);
// Highlight single line
void setSelected(uint line) { if (_RootMenu) _RootMenu->setSelected(line); }
void clearSelected() { if(_RootMenu) _RootMenu->clearSelected(); }
CGroupSubMenu *getRootMenu() const { return _RootMenu; }
// Max Visible Line (-1 == no limit)

@ -3,7 +3,7 @@
//
// This source file has been modified by the following contributors:
// Copyright (C) 2013-2014 Laszlo KIS-ADAM (dfighter) <dfighter1985@gmail.com>
// Copyright (C) 2019 Jan BOON (Kaetemi) <jan.boon@kaetemi.be>
// Copyright (C) 2019-2020 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
@ -383,7 +383,6 @@ namespace NLGUI
void dummySet(const std::string &value);
public:
// export some properties
REFLECT_EXPORT_START(CInterfaceElement, CReflectable)
REFLECT_BOOL ("active", getActive, setActive);
@ -398,6 +397,7 @@ namespace NLGUI
REFLECT_SINT32 ("h_real", getHReal, dummySet);
REFLECT_STRING ("id", getIdByValue, dummySet);
REFLECT_STRING ("sizeref", getSizeRefAsString, setSizeRef);
REFLECT_STRING ("posparent", getPosParent, setPosParent);
REFLECT_LUA_METHOD("updateCoords", luaUpdateCoords);
REFLECT_LUA_METHOD("invalidateCoords", luaInvalidateCoords);
REFLECT_LUA_METHOD("invalidateContent", luaInvalidateContent);
@ -525,6 +525,8 @@ namespace NLGUI
void setSizeParent( const std::string &id );
void getSizeParent( std::string &id ) const;
std::string getPosParent() const;
void setSerializable( bool b ){ serializable = b; }
bool IsSerializable() const{ return serializable; }

@ -118,9 +118,11 @@ namespace NLGUI
// Force only a subset of letter to be displayed. Default is 0/0xFFFFFFFF
void enableStringSelection(uint start, uint end);
void disableStringSelection();
void setShadowInSelection(bool s) { m_DisableShadowInSelection = !s; }
bool getShadowInSelection() const { return !m_DisableShadowInSelection; }
/// Get
std::string getText() const { return _HardText.empty() ? _Text : _HardText; }
/// Get displayed text
std::string getText() const { return _Text; }
#ifdef RYZOM_LUA_UCSTRING
ucstring getTextAsUtf16() const; // Compatibility
ucstring getHardTextAsUtf16() const; // Compatibility
@ -188,6 +190,7 @@ namespace NLGUI
/// From a line number, get the character at which it ends (not including any '\n' ), or -1 if invalid
void getLineEndIndex(uint line, sint &index, bool &endOfPreviousLine) const;
/// If localized, return localization key (ie "uiLanguage"), else return displayed text.
std::string getHardText() const { return _HardText.empty() ? _Text : _HardText; }
void setHardText (const std::string &ht); //< Localizes strings starting with "ui"
#ifdef RYZOM_LUA_UCSTRING
@ -448,6 +451,7 @@ namespace NLGUI
bool _StrikeThrough : 1;
bool _ContinuousUpdate : 1;
bool _Setuped : 1;
bool m_DisableShadowInSelection : 1;
uint _TextSelectionStart;
uint _TextSelectionEnd;

@ -654,6 +654,8 @@ namespace NLGUI
bool _GroupSelection;
bool multiSelection;
uint32 _WidgetCount;
std::set<std::string> m_LoggedMissingElement;
};
}

@ -3,6 +3,7 @@
//
// This source file has been modified by the following contributors:
// Copyright (C) 2013 Laszlo KIS-ADAM (dfighter) <dfighter1985@gmail.com>
// Copyright (C) 2014 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
@ -67,7 +68,7 @@ public:
S17, S18, S19, S20, S21, S22, S23, S24, S25, S26, S27, S28, S29, S30, S31, S32,
S33, S34, S35, S36, S37, S38, S39, S40, S41, S42, S43, S44, S45, S46, S47, S48,
S49, S50, S51, S52, S53, S54, S55, S56, S57, S58, S59, S60, S61, S62, S63, S64,
TEXT, Nb_Prop_Type
TEXT, PACKED, Nb_Prop_Type
};

@ -3,6 +3,7 @@
//
// This source file has been modified by the following contributors:
// Copyright (C) 2013 Laszlo KIS-ADAM (dfighter) <dfighter1985@gmail.com>
// Copyright (C) 2014 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
@ -96,6 +97,7 @@ public:
_Property = 0;
_oldProperty = 0;
_Type = UNKNOWN;
m_Nullable = false;
_Changed = false;
_LastChangeGC = 0;
}
@ -235,6 +237,9 @@ private:
/// property type
EPropType _Type;
/// nullable
bool m_Nullable;
/// true if this value has changed
bool _Changed;

@ -25,6 +25,7 @@
#include "debug.h"
#include "common.h"
#include "stream.h"
#include "wang_hash.h"
namespace NLMISC {
@ -577,6 +578,7 @@ public:
};*/
// Traits for hash_map using CEntityId
#if 0
struct CEntityIdHashMapTraits
{
enum { bucket_size = 4, min_buckets = 8 };
@ -596,7 +598,27 @@ struct CEntityIdHashMapTraits
return id1.getShortId() < id2.getShortId();
}
};
#else
struct CEntityIdHashMapTraits
{
enum { bucket_size = 4, min_buckets = 8 };
CEntityIdHashMapTraits() { }
size_t operator() (const NLMISC::CEntityId &id ) const
{
uint64 hash64 = id.getUniqueId();
if (sizeof(size_t) == 8)
{
return (size_t)NLMISC::wangHash64(hash64);
}
else
{
uint32 hash32a = NLMISC::wangHash((uint32)(hash64 & 0xFFFFFFFF));
uint32 hash32b = NLMISC::wangHash((uint32)(hash64 >> 32));
return hash32a ^ hash32b;
}
}
};
#endif
/*inline std::stringstream &operator << (std::stringstream &__os, const CEntityId &__t)
{

@ -71,10 +71,7 @@ public:
*/
void registerClass(const KeyType &key, IFactoryRegister<BaseClass> *factoryRegister)
{
// TODO: Removed assert because of crash of fes in 2019. We need found why... (ulukyn)
//nlassert(_FactoryRegisters.find(key) == _FactoryRegisters.end());
//_FactoryRegisters.insert(std::make_pair(key, factoryRegister));
if (_FactoryRegisters.find(key) == _FactoryRegisters.end())
nlassert(_FactoryRegisters.find(key) == _FactoryRegisters.end());
_FactoryRegisters.insert(std::make_pair(key, factoryRegister));
}

@ -257,7 +257,12 @@ public:
# endif // NL_DEBUG
# endif // NL_NO_ASM
#elif defined(NL_OS_MAC)
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
// warning: 'OSAtomicCompareAndSwap32' is deprecated: first deprecated in macOS 10.12 -
// Use std::atomic_compare_exchange_strong_explicit(std::memory_order_relaxed) from <atomic> instead
return OSAtomicCompareAndSwap32(0, 1, reinterpret_cast<volatile sint32 *>(lockPtr));
#pragma clang diagnostic pop
#elif defined(NL_OS_UNIX)
// GCC implements the same functionality using a builtin function
// http://gcc.gnu.org/onlinedocs/gcc/Atomic-Builtins.html

@ -20,8 +20,6 @@
#ifndef NL_UCSTRING_H
#define NL_UCSTRING_H
#define RYZOM_LUA_UCSTRING
#include "types_nl.h"
#include "debug.h"

@ -1,6 +1,9 @@
// 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) 2020 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
@ -92,6 +95,11 @@ public:
/// exchange memory data
void swap(CMessage &other);
#ifdef NL_CPP14
/// Move operator
CMessage &operator=(CMessage &&other) noexcept { swap(other); return *this; }
#endif
/// Sets the message type as a string and put it in the buffer if we are in writing mode
void setType (const std::string &name, TMessageType type=OneWay);

@ -42,7 +42,7 @@
// Current version is 2, Ryzom Live uses 1
// Provided to allow compatibility with old binary files
#define NLSOUND_SHEET_VERSION_BUILT 1
#define NLSOUND_SHEET_VERSION_BUILT 2
namespace NLLIGO {
class CLigoConfig;

@ -127,6 +127,12 @@ public:
/// Return driver name from type.
static const char *getDriverName(TDriver driverType);
/// Return driver dll filename, empty if unsupported driver
static std::string getDriverFileName(TDriver driverType);
/** Return possibly available drivers for current platform.
* If no drivers are available, return empty list.
*/
static std::vector<ISoundDriver::TDriver> getAvailableDrivers();
/** The static method which builds the sound driver instance
* In case of failure, can throw one of these ESoundDriver exception objects:
* ESoundDriverNotFound, ESoundDriverCorrupted, ESoundDriverOldVersion, ESoundDriverUnknownVersion
@ -204,7 +210,6 @@ public:
private:
std::string _DllName;
};

@ -90,6 +90,13 @@ public:
NumDrivers
};
struct TDriverInfo
{
TDriver ID;
const char *Name;
TDriverInfo(TDriver id, const char *name) : ID(id), Name(name)
{}
};
/** Structure that contain the background flags.*/
struct TBackgroundFlags
@ -163,6 +170,9 @@ public:
bool AutoLoadSample;
};
/// Return list of available sound drivers
static std::vector<TDriverInfo> getDrivers();
//@{
//@name Init methods
/// Create the audio mixer singleton and return a pointer to its instance

@ -2,7 +2,7 @@ FILE(GLOB SRC *.cpp *.h)
ADD_EXECUTABLE(nl_sample_cegui WIN32 ${SRC})
ADD_DEFINITIONS(-DCEGUI_DATA_DIR="\\"${NL_SHARE_ABSOLUTE_PREFIX}/nl_sample_cegui/datafiles/\\"")
TARGET_COMPILE_DEFINITIONS(nl_sample_cegui PRIVATE "CEGUI_DATA_DIR=\"${NL_SHARE_ABSOLUTE_PREFIX}/nl_sample_cegui/datafiles/\"")
INCLUDE_DIRECTORIES(${CEGUI_INCLUDE_DIRS})

@ -2,7 +2,7 @@ FILE(GLOB SRC *.cpp)
ADD_EXECUTABLE(nl_sample_clusterview WIN32 ${SRC})
ADD_DEFINITIONS(-DCV_DIR="\\"${NL_SHARE_ABSOLUTE_PREFIX}/nl_sample_clusterview/\\"")
TARGET_COMPILE_DEFINITIONS(nl_sample_clusterview PRIVATE "CV_DIR=\"${NL_SHARE_ABSOLUTE_PREFIX}/nl_sample_clusterview/\"")
TARGET_LINK_LIBRARIES(nl_sample_clusterview nelmisc nel3d)
NL_ADD_RUNTIME_FLAGS(nl_sample_clusterview)

@ -2,8 +2,9 @@ FILE(GLOB SRC *.cpp)
ADD_EXECUTABLE(nl_sample_font WIN32 ${SRC})
ADD_DEFINITIONS(-DFONT_DIR="\\"${NL_SHARE_ABSOLUTE_PREFIX}/nl_sample_font/\\"")
TARGET_COMPILE_DEFINITIONS(nl_sample_font PRIVATE "FONT_DIR=\"${NL_SHARE_ABSOLUTE_PREFIX}/nl_sample_font/\"")
# TODO: hunter TARGET_LINK_LIBRARIES(nl_sample_font PRIVATE nelmisc nel3d)
TARGET_LINK_LIBRARIES(nl_sample_font nelmisc nel3d)
NL_DEFAULT_PROPS(nl_sample_font "NeL, Samples, 3D: Font")
NL_ADD_RUNTIME_FLAGS(nl_sample_font)

@ -2,7 +2,7 @@ FILE(GLOB SRC *.cpp)
ADD_EXECUTABLE(nl_sample_font_perf ${SRC})
ADD_DEFINITIONS(-DFONT_DIR="\\"${NL_SHARE_ABSOLUTE_PREFIX}/nl_sample_font_perf/\\"")
TARGET_COMPILE_DEFINITIONS(nl_sample_font_perf PRIVATE "FONT_DIR=\"${NL_SHARE_ABSOLUTE_PREFIX}/nl_sample_font_perf/\"")
TARGET_LINK_LIBRARIES(nl_sample_font_perf nelmisc nel3d)
NL_DEFAULT_PROPS(nl_sample_font_perf "NeL, Samples, 3D: Font Performance Test")

@ -2,7 +2,7 @@ FILE(GLOB SRC *.cpp)
ADD_EXECUTABLE(nl_sample_georges ${SRC})
ADD_DEFINITIONS(-DGF_DIR="\\"${NL_SHARE_ABSOLUTE_PREFIX}/nl_sample_georges/\\"")
TARGET_COMPILE_DEFINITIONS(nl_sample_georges PRIVATE "GF_DIR=\"${NL_SHARE_ABSOLUTE_PREFIX}/nl_sample_georges/\"")
TARGET_LINK_LIBRARIES(nl_sample_georges nelgeorges nelmisc)
NL_DEFAULT_PROPS(nl_sample_georges "NeL, Samples: Georges")

@ -2,7 +2,7 @@ FILE(GLOB SRC *.cpp)
ADD_EXECUTABLE(nl_sample_configfile ${SRC})
ADD_DEFINITIONS(-DNL_SAMPLE_CFG="\\"${NL_SHARE_ABSOLUTE_PREFIX}/nl_sample_configfile/\\"")
TARGET_COMPILE_DEFINITIONS(nl_sample_configfile PRIVATE "NL_SAMPLE_CFG=\"${NL_SHARE_ABSOLUTE_PREFIX}/nl_sample_configfile/\"")
TARGET_LINK_LIBRARIES(nl_sample_configfile nelmisc)
NL_DEFAULT_PROPS(nl_sample_configfile "NeL, Samples, Misc: Config Files")

@ -2,7 +2,7 @@ FILE(GLOB SRC *.cpp)
ADD_EXECUTABLE(nl_sample_i18n ${SRC})
ADD_DEFINITIONS(-DNL_LANG_DATA="\\"${NL_SHARE_ABSOLUTE_PREFIX}/nl_sample_i18n/\\"")
TARGET_COMPILE_DEFINITIONS(nl_sample_i18n PRIVATE "NL_LANG_DATA=\"${NL_SHARE_ABSOLUTE_PREFIX}/nl_sample_i18n/\"")
TARGET_LINK_LIBRARIES(nl_sample_i18n nelmisc)
NL_DEFAULT_PROPS(nl_sample_i18n "NeL, Samples, Misc: I18N")

@ -2,7 +2,9 @@ ADD_EXECUTABLE(nl_sample_chatclient client.cpp kbhit.cpp kbhit.h)
ADD_EXECUTABLE(nl_sample_chatserver WIN32 server.cpp)
ADD_DEFINITIONS(-DCHAT_DIR="\\"${NL_SHARE_ABSOLUTE_PREFIX}/nl_sample_chat/\\"")
SET(CHAT_DIR "CHAT_DIR=\"${NL_SHARE_ABSOLUTE_PREFIX}/nl_sample_chat/\"")
TARGET_COMPILE_DEFINITIONS(nl_sample_chatclient PRIVATE ${CHAT_DIR})
TARGET_COMPILE_DEFINITIONS(nl_sample_chatserver PRIVATE ${CHAT_DIR})
TARGET_LINK_LIBRARIES(nl_sample_chatclient nelmisc nelnet)
NL_DEFAULT_PROPS(nl_sample_chatclient "NeL, Samples, Net, Chat: Chat Client")

@ -2,7 +2,9 @@ ADD_EXECUTABLE(nl_sample_ct_ai_service WIN32 ai_service.cpp)
ADD_EXECUTABLE(nl_sample_ct_gd_service WIN32 gd_service.cpp)
ADD_DEFINITIONS(-DNL_CT_CFG="\\"${NL_SHARE_ABSOLUTE_PREFIX}/nl_sample_class_transport/\\"")
SET(NL_CT_CFG "NL_CT_CFG=\"${NL_SHARE_ABSOLUTE_PREFIX}/nl_sample_class_transport/\"")
TARGET_COMPILE_DEFINITIONS(nl_sample_ct_ai_service PRIVATE ${NL_CT_CFG})
TARGET_COMPILE_DEFINITIONS(nl_sample_ct_gd_service PRIVATE ${NL_CT_CFG})
TARGET_LINK_LIBRARIES(nl_sample_ct_ai_service nelmisc nelnet)
NL_DEFAULT_PROPS(nl_sample_ct_ai_service "NeL, Samples, Net, Class Transport: AI Service")

@ -2,7 +2,9 @@ ADD_EXECUTABLE(nl_sample_ls_client client.cpp)
ADD_EXECUTABLE(nl_sample_ls_fes WIN32 frontend_service.cpp)
ADD_DEFINITIONS(-DNL_LS_CFG="\\"${NL_SHARE_ABSOLUTE_PREFIX}/nl_sample_login_system/\\"")
SET(NL_LS_CFG "NL_LS_CFG=\"${NL_SHARE_ABSOLUTE_PREFIX}/nl_sample_login_system/\"")
TARGET_COMPILE_DEFINITIONS(nl_sample_ls_client PRIVATE ${NL_LS_CFG})
TARGET_COMPILE_DEFINITIONS(nl_sample_ls_fes PRIVATE ${NL_LS_CFG})
TARGET_LINK_LIBRARIES(nl_sample_ls_client nelmisc nelnet)
NL_DEFAULT_PROPS(nl_sample_ls_client "NeL, Samples, Net, Login Service: LS Client")

@ -4,14 +4,18 @@ ADD_EXECUTABLE(nl_sample_udpclient client.cpp graph.cpp graph.h simlag.cpp simla
ADD_EXECUTABLE(nl_sample_udpserver WIN32 bench_service.cpp receive_task.cpp receive_task.h)
ADD_DEFINITIONS(-DUDP_DIR="\\"${NL_SHARE_ABSOLUTE_PREFIX}/nl_sample_udp/\\"")
SET(UDP_DIR "UDP_DIR=\"${NL_SHARE_ABSOLUTE_PREFIX}/nl_sample_udp/\"")
TARGET_COMPILE_DEFINITIONS(nl_sample_udpclient PRIVATE ${UDP_DIR})
TARGET_COMPILE_DEFINITIONS(nl_sample_udpserver PRIVATE ${UDP_DIR})
TARGET_LINK_LIBRARIES(nl_sample_udpclient nelmisc nelnet)
TARGET_LINK_LIBRARIES(nl_sample_udpserver nelmisc nelnet)
IF(WITH_3D)
ADD_DEFINITIONS(-DUSE_3D)
TARGET_LINK_LIBRARIES(nl_sample_udpclient nel3d)
ENDIF()
TARGET_LINK_LIBRARIES(nl_sample_udpclient nelmisc nelnet nel3d)
TARGET_LINK_LIBRARIES(nl_sample_udpserver nelmisc nelnet)
NL_DEFAULT_PROPS(nl_sample_udpclient "NeL, Samples, Net, UDP: UDP Client")
NL_DEFAULT_PROPS(nl_sample_udpserver "NeL, Samples, Net, UDP: UDP Server")
NL_ADD_RUNTIME_FLAGS(nl_sample_udpclient)

@ -2,7 +2,7 @@ FILE(GLOB SRC *.cpp *.h)
ADD_EXECUTABLE(nl_sample_pacs WIN32 ${SRC})
ADD_DEFINITIONS(-DNL_PACS_DATA="\\"${NL_SHARE_ABSOLUTE_PREFIX}/nl_sample_pacs/\\"")
TARGET_COMPILE_DEFINITIONS(nl_sample_pacs PRIVATE "NL_PACS_DATA=\"${NL_SHARE_ABSOLUTE_PREFIX}/nl_sample_pacs/\"")
TARGET_LINK_LIBRARIES(nl_sample_pacs nelmisc nelpacs nel3d)
NL_DEFAULT_PROPS(nl_sample_pacs "NeL, Samples: PACS")

@ -2,7 +2,7 @@ FILE(GLOB SRC *.cpp *.h)
ADD_EXECUTABLE(nl_sample_sound_sources ${SRC})
ADD_DEFINITIONS(-DNL_SOUND_DATA="\\"${NL_SHARE_ABSOLUTE_PREFIX}/nl_sample_sound/\\"")
TARGET_COMPILE_DEFINITIONS(nl_sample_sound_sources PRIVATE "NL_SOUND_DATA=\"${NL_SHARE_ABSOLUTE_PREFIX}/nl_sample_sound/\"")
TARGET_LINK_LIBRARIES(nl_sample_sound_sources nelmisc nelsound)
NL_DEFAULT_PROPS(nl_sample_sound_sources "NeL, Samples: Sound: Sound Sources")

@ -67,16 +67,23 @@ void Init()
AudioMixer->setPackedSheetOption("data", true);
printf("Select NLSOUND Driver:\n");
printf(" [1] FMod\n");
printf(" [2] OpenAl\n");
printf(" [3] DSound\n");
printf(" [4] XAudio2\n");
std::vector<UAudioMixer::TDriverInfo> drivers = UAudioMixer::getDrivers();
if (drivers.size() == 0)
nlerror("No sound drivers available");
for(uint i = 0; i < drivers.size(); ++i)
printf(" [%d] %s\n", i, drivers[i].Name);
printf("> ");
int selection = getchar();
int selection = getchar() - '0';
printf("\n");
UAudioMixer::TDriver selectedDriver = UAudioMixer::DriverAuto;
if (selection >= 0 && selection < drivers.size())
selectedDriver = drivers[selection].ID;
// init with 32 tracks, EAX enabled, no ADPCM, and activate automatic sample bank loading
AudioMixer->init(32, true, false, NULL, true, (UAudioMixer::TDriver)(selection - '0')/*UAudioMixer::DriverFMod*/);
AudioMixer->init(32, true, false, NULL, true, selectedDriver);
/*
* 2. Initialize listener's position and orientation (in NeL coordinate system).

@ -265,10 +265,9 @@ bool GlWndProc(CDriverGL *driver, XEvent &e)
case ConfigureNotify:
if (driver->_CurrentMode.Windowed && driver->_WndActive)
if (driver->_WndActive)
{
// first time setting decoration sizes
if ((driver->_DecorationWidth == -1) || (driver->_DecorationWidth == 0))
if (driver->_CurrentMode.Windowed)
{
Atom type_return = 0;
int format_return = 0;
@ -294,12 +293,19 @@ bool GlWndProc(CDriverGL *driver, XEvent &e)
// don't allow negative decoration sizes
if (driver->_DecorationWidth < 0) driver->_DecorationWidth = 0;
if (driver->_DecorationHeight < 0) driver->_DecorationHeight = 0;
driver->_WindowX = e.xconfigure.x - driver->_DecorationWidth;
driver->_WindowY = e.xconfigure.y - driver->_DecorationHeight;
}
else
{
// fullscreen
driver->_WindowX = e.xconfigure.x;
driver->_WindowY = e.xconfigure.y;
}
driver->_CurrentMode.Width = e.xconfigure.width;
driver->_CurrentMode.Height = e.xconfigure.height;
driver->_WindowX = e.xconfigure.x - driver->_DecorationWidth;
driver->_WindowY = e.xconfigure.y - driver->_DecorationHeight;
}
break;
@ -641,6 +647,11 @@ void CDriverGL::setWindowIcon(const std::vector<NLMISC::CBitmap> &bitmaps)
}
// --------------------------------------------------
#if defined(NL_OS_UNIX) && !defined(NL_OS_MAC)
static Bool WaitForNotify( Display *dpy, XEvent *event, XPointer arg ) {
return (event->type == MapNotify) && (event->xmap.window == reinterpret_cast<Window>(arg));
}
#endif
bool CDriverGL::setDisplay(nlWindow wnd, const GfxMode &mode, bool show, bool resizeable)
{
H_AUTO_OGL(CDriverGL_setDisplay)
@ -668,8 +679,9 @@ bool CDriverGL::setDisplay(nlWindow wnd, const GfxMode &mode, bool show, bool re
// Retrieve the WGL extensions before init the driver.
// Offscreen mode ?
if (_CurrentMode.OffScreen)
if (mode.OffScreen)
{
_CurrentMode.OffScreen = true;
if (!createWindow(mode)) return false;
HWND tmpHWND = _win;
@ -1145,14 +1157,17 @@ bool CDriverGL::setDisplay(nlWindow wnd, const GfxMode &mode, bool show, bool re
}
glXMakeCurrent (_dpy, _win, _ctx);
// XMapRaised (_dpy, _win);
// XMapWindow(_dpy, _win);
_EventEmitter.init (_dpy, _win, this);
// XEvent event;
// XIfEvent(dpy, &event, WaitForNotify, (char *)this);
// KDE/GNOME has issues selecting correct fullscreen monitor if window is not visible before setMode()
if (!mode.Windowed)
{
XMapRaised(_dpy, _win);
XEvent event;
nlctassert(sizeof(XPointer) >= sizeof(_win));
XPeekIfEvent(_dpy, &event, WaitForNotify, reinterpret_cast<XPointer>(_win));
}
#endif // NL_OS_UNIX
@ -2064,6 +2079,8 @@ bool CDriverGL::setMode(const GfxMode& amode)
// if window is visible, then also restore mouse relative position.
if (!mode.DisplayDevice.empty() && mode.DisplayDevice != current.DisplayDevice)
{
setWindowStyle(EWSWindowed);
int screen = DefaultScreen(_dpy);
Window root = RootWindow(_dpy, screen);
uint mouseX = mode.Width / 2;
@ -2090,6 +2107,7 @@ bool CDriverGL::setMode(const GfxMode& amode)
XMoveWindow(_dpy, _win, newX, newY);
_WindowX = newX;
_WindowY = newY;
setWindowStyle(EWSFullscreen);
}
}
#endif
@ -2481,13 +2499,19 @@ bool CDriverGL::getCurrentScreenMode(GfxMode &mode)
Window child;
// get window position so we can compare monitors (or mouse position if window not visible yet)
bool useMouseForPosition = true;
if (_win != EmptyWindow)
{
XWindowAttributes xwa;
XGetWindowAttributes(_dpy, _win, &xwa);
if (xwa.map_state != IsUnmapped)
{
XTranslateCoordinates(_dpy, _win, xwa.root, xwa.x, xwa.y, &x, &y, &child);
useMouseForPosition = false;
}
else
}
if (useMouseForPosition)
{
sint rx, ry, wx, wy;
uint mask;
@ -2760,15 +2784,7 @@ void CDriverGL::setWindowPos(sint32 x, sint32 y)
#elif defined (NL_OS_UNIX)
if (_CurrentMode.Windowed)
{
// first time requesting decoration sizes
if (_WindowX && _WindowY && !_DecorationWidth && !_DecorationHeight && _WndActive)
{
_DecorationWidth = -1;
_DecorationHeight = -1;
}
XMoveWindow(_dpy, _win, x, y);
}
#endif // NL_OS_WINDOWS
}
@ -2795,8 +2811,18 @@ void CDriverGL::showWindow(bool show)
#elif defined (NL_OS_UNIX)
if (show)
{
// if window is mapped, then MapNotify event will not trigger and XPeekIfEvent deadlocks
XWindowAttributes attr;
XGetWindowAttributes(_dpy, _win, &attr);
if (attr.map_state == IsUnmapped)
{
XMapRaised(_dpy, _win);
// sync to MapNotify event or setWindowSize() in GNOME might resize window to wrong size
XEvent event;
nlctassert(sizeof(XPointer) >= sizeof(_win));
XPeekIfEvent(_dpy, &event, WaitForNotify, reinterpret_cast<XPointer>(_win));
}
// fix window position if windows manager want to impose them
setWindowPos(_WindowX, _WindowY);
@ -3105,6 +3131,9 @@ void CDriverGL::setWindowSize(uint32 width, uint32 height)
SetWindowPos(_win, NULL, 0, 0, rc.right - rc.left, rc.bottom - rc.top, flags);
// init window width and height
if (_CurrentMode.Windowed)
{
// TODO: this gives wrong info for initial fullscreen window so limit for windowed only for now
RECT clientRect;
GetClientRect(_win, &clientRect);
_CurrentMode.Width = uint16(clientRect.right-clientRect.left);
@ -3112,6 +3141,14 @@ void CDriverGL::setWindowSize(uint32 width, uint32 height)
GetWindowRect(_win, &clientRect);
_WindowX = clientRect.left;
_WindowY = clientRect.top;
}
else
{
_CurrentMode.Width = width;
_CurrentMode.Height = height;
_WindowX = 0;
_WindowY = 0;
}
#elif defined(NL_OS_MAC)

@ -152,7 +152,7 @@ static NLMISC::TKey virtualKeycodeToNelKey(unsigned short keycode)
return NLMISC::KeyNOKEY;
}
bool CCocoaEventEmitter::pasteTextFromClipboard(ucstring &text)
bool CCocoaEventEmitter::pasteTextFromClipboard(std::string &text)
{
NSPasteboard *pasteboard = [NSPasteboard generalPasteboard];
NSArray *classArray = [NSArray arrayWithObject:[NSString class]];
@ -163,17 +163,17 @@ bool CCocoaEventEmitter::pasteTextFromClipboard(ucstring &text)
{
NSArray *objectsToPaste = [pasteboard readObjectsForClasses:classArray options:options];
NSString *nstext = [objectsToPaste objectAtIndex:0];
text.fromUtf8([nstext UTF8String]);
text = [nstext UTF8String];
return true;
}
return false;
}
bool CCocoaEventEmitter::copyTextToClipboard(const ucstring &text)
bool CCocoaEventEmitter::copyTextToClipboard(const std::string &text)
{
NSPasteboard *pasteboard = [NSPasteboard generalPasteboard];
[pasteboard clearContents];
NSArray *copiedObjects = [NSArray arrayWithObject:[NSString stringWithUTF8String:text.toUtf8().c_str()]];
NSArray *copiedObjects = [NSArray arrayWithObject:[NSString stringWithUTF8String:text.c_str()]];
[pasteboard writeObjects:copiedObjects];
return true;
}

@ -21,6 +21,7 @@
#ifndef NL_COCOA_EVENT_EMITTER_H
#define NL_COCOA_EVENT_EMITTER_H
#include <string.h>
#include "nel/misc/event_emitter.h"
#include "nel/misc/event_server.h"
#include "nel/misc/events.h"
@ -53,8 +54,8 @@ public:
virtual void submitEvents(CEventServer& server, bool allWindows);
bool handleQuitRequest();
virtual bool copyTextToClipboard(const ucstring &text);
virtual bool pasteTextFromClipboard(ucstring &text);
virtual bool copyTextToClipboard(const std::string &text);
virtual bool pasteTextFromClipboard(std::string &text);
};
}

@ -172,6 +172,8 @@ void CMeshBase::serialMeshBase(NLMISC::IStream &f)
* ***********************************************/
/*
Version 10:
- Ryzom Core release check
Version 9:
- _CollisionMeshGeneration
Version 8:
@ -194,7 +196,7 @@ void CMeshBase::serialMeshBase(NLMISC::IStream &f)
Version 0:
- 1st version.
*/
sint ver = f.serialVersion(9);
sint ver = f.serialVersion(10);
if (ver >= 2)
{

@ -442,6 +442,8 @@ void CZone::serial(NLMISC::IStream &f)
* It can be loaded/called through CAsyncFileManager for instance
* ***********************************************/
/*
Version 5:
- Ryzom Core release check
Version 4:
- PointLights
Version 3:
@ -453,7 +455,7 @@ void CZone::serial(NLMISC::IStream &f)
Version 0:
- base verison.
*/
uint ver= f.serialVersion(4);
uint ver= f.serialVersion(5);
// No more compatibility before version 3
if (ver<3)

@ -428,7 +428,7 @@ namespace NLGUI
if (bg.repeatX == CSS_VALUE_ROUND)
{
sint numTiles = std::max(1, (sint)std::round((float)areaW / texW));
sint numTiles = std::max(1, (sint)std::ceil(((float)areaW / texW) - 0.5f));
texW = areaW / numTiles;
if (bg.height.isAuto() && bg.repeatY != CSS_VALUE_ROUND)
{
@ -439,7 +439,7 @@ namespace NLGUI
if (bg.repeatY == CSS_VALUE_ROUND)
{
sint numTiles = std::max(1, (sint)std::round((float)areaH / texH));
sint numTiles = std::max(1, (sint)std::ceil(((float)areaH / texH) - 0.5f));
texH = areaH / numTiles;
if (bg.width.isAuto() && bg.repeatX != CSS_VALUE_ROUND)
{

@ -30,9 +30,10 @@ namespace NLGUI
bool CSSLength::parseValue(const std::string &value, bool allowPercent, bool allowNegative)
{
static const std::set<std::string> knownUnits = {
static const std::string knownUnitsArr[] = {
"%", "rem", "em", "px", "pt", "vw", "vh", "vi", "vb", "vmin", "vmax"
};
static const std::set<std::string> knownUnits(knownUnitsArr, &knownUnitsArr[sizeof(knownUnitsArr) / sizeof(knownUnitsArr[0])]);
std::string::size_type pos = 0;
std::string::size_type len = value.size();
@ -65,10 +66,17 @@ bool CSSLength::parseValue(const std::string &value, bool allowPercent, bool all
}
std::string unit = toLowerAscii(value.substr(pos));
if (!allowPercent && unit == "%")
return false;
if (knownUnits.count(unit))
{
std::string tmpstr = value.substr(0, pos);
return fromString(tmpstr, m_Value);
if (fromString(tmpstr, m_Value))
{
setUnit(unit);
return true;
}
}
return false;

@ -1432,6 +1432,8 @@ namespace NLGUI
childElement->getCorner(childX, childY, childHotSpot);
if (_Vertical)
{
// remove previous scroll offset from child
childY -= _Target->getOfsY();
sint32 maxHReal= _Target->getMaxHReal();
sint32 hReal= _Target->getHReal();
if(hReal > maxHReal)
@ -1473,6 +1475,8 @@ namespace NLGUI
}
else
{
// remove previous scroll offset from child
childX -= _Target->getOfsX();
sint32 maxWReal= _Target->getMaxWReal();
sint32 wReal= _Target->getWReal();
if(wReal > maxWReal)

@ -137,7 +137,7 @@ namespace NLGUI
if( name == "hardtext" )
{
if( _ViewText != NULL )
return _ViewText->getText();
return _ViewText->getHardText();
else
return std::string( "" );
}
@ -488,7 +488,7 @@ namespace NLGUI
xmlNewProp( node, BAD_CAST "wmargin", BAD_CAST toString( _WMargin ).c_str() );
xmlNewProp( node, BAD_CAST "wmin", BAD_CAST toString( _WMin ).c_str() );
xmlNewProp( node, BAD_CAST "hmin", BAD_CAST toString( _HMin ).c_str() );
xmlNewProp( node, BAD_CAST "hardtext", BAD_CAST _ViewText->getText().c_str() );
xmlNewProp( node, BAD_CAST "hardtext", BAD_CAST _ViewText->getHardText().c_str() );
xmlNewProp( node, BAD_CAST "text_y", BAD_CAST toString( _TextY ).c_str() );
xmlNewProp( node, BAD_CAST "text_x", BAD_CAST toString( _TextX ).c_str() );
xmlNewProp( node, BAD_CAST "text_underlined", BAD_CAST toString( _ViewText->getUnderlined() ).c_str() );

@ -745,6 +745,10 @@ namespace NLGUI
groupMenu->setY(pCB->getYReal());
groupMenu->setBaseY(pCB->getYReal());
sint selected = pCB->getSelection();
if (selected >= 0)
groupMenu->setSelected((uint)selected);
// Must ensure the combo menu has same windows priority than the combo box window
CInterfaceGroup *rootWin= pCB->getRootWindow();
if(rootWin)

@ -755,6 +755,9 @@ namespace NLGUI
// Display the selection if needed
if (_CurrSelection == this && _SelectCursorPos!=_CursorPos)
{
// flush so that selection quad is covering text
rVR.flush();
sint32 blankTextId= rVR.getBlankTextureId();
CRGBA col= _BackSelectColor;
col.A= CWidgetManager::getInstance()->getGlobalColorForContent().A;

@ -299,6 +299,11 @@ namespace NLGUI
void CGroupHTML::ImageDownloadCB::finish()
{
// Image setTexture will remove itself from Images while iterating over it.
// Do the swap to keep iterator safe.
std::vector<SImageInfo> vec;
vec.swap(Images);
// tmpdest file does not exist if download skipped (ie cache was used)
if (CFile::fileExists(tmpdest) || CFile::getFileSize(tmpdest) == 0)
{
@ -322,7 +327,7 @@ namespace NLGUI
// to temp file temporarily. that forces driver to reload texture from disk
// ITexture::touch() seem not to do this.
// cache was updated, first set texture as temp file
for(std::vector<SImageInfo>::iterator it = Images.begin(); it != Images.end(); ++it)
for(std::vector<SImageInfo>::iterator it = vec.begin(); it != vec.end(); ++it)
{
SImageInfo &img = *it;
Parent->setImage(img.Image, tmpdest, img.Type);
@ -339,7 +344,7 @@ namespace NLGUI
}
// even if image was cached, incase there was 'http://' image set to CViewBitmap
for(std::vector<SImageInfo>::iterator it = Images.begin(); it != Images.end(); ++it)
for(std::vector<SImageInfo>::iterator it = vec.begin(); it != vec.end(); ++it)
{
SImageInfo &img = *it;
Parent->setImage(img.Image, dest, img.Type);
@ -403,6 +408,9 @@ namespace NLGUI
// Check if domain is on TrustedDomain
bool CGroupHTML::isTrustedDomain(const string &domain)
{
if (domain == options.webServerDomain)
return true;
vector<string>::iterator it;
it = find(options.trustedDomains.begin(), options.trustedDomains.end(), domain);
return it != options.trustedDomains.end();
@ -1053,6 +1061,13 @@ namespace NLGUI
_CurlWWW = NULL;
}
releaseDataDownloads();
}
void CGroupHTML::releaseDataDownloads()
{
LOG_DL("Clear pointers to %d curls", Curls.size());
// remove all queued and already started downloads
for(std::list<CDataDownload*>::iterator it = Curls.begin(); it != Curls.end(); ++it)
{
@ -3080,14 +3095,7 @@ namespace NLGUI
paragraphChange ();
// clear the pointer to the current image download since all the button are deleted
LOG_DL("Clear pointers to %d curls", Curls.size());
// remove image refs from downloads
/*for(std::list<CDataDownload>::iterator it = Curls.begin(); it != Curls.end(); ++it)
{
it->imgs.clear();
}*/
releaseDataDownloads();
}
// ***************************************************************************
@ -3416,6 +3424,16 @@ namespace NLGUI
string finalUrl;
bool isLocal = lookupLocalFile (finalUrl, _URL.c_str(), true);
if (!isLocal && _URL.c_str()[0] == '/')
{
if (options.webServer.empty())
{
// Try again later
return;
}
finalUrl = options.webServer + finalUrl;
}
_URL = finalUrl;
CUrlParser uri (_URL);

@ -129,9 +129,11 @@ namespace NLGUI
_SelectionView = NULL;
_GroupList = NULL;
_GroupMenu = NULL;
_MouseOver = -1;
_Selected = -1;
_MaxVisibleLine = -1;
_ScrollBar = NULL;
_ScrollToView = false;
}
// ------------------------------------------------------------------------------------------------
@ -589,6 +591,7 @@ namespace NLGUI
_GroupList->setMaxH(widgetMaxH*_MaxVisibleLine+_GroupList->getSpace()*(_MaxVisibleLine-1));
if (_ScrollBar == NULL)
{
_ScrollToView = true;
_ScrollBar = new CCtrlScroll(CViewBase::TCtorParam());
_ScrollBar->setParent (this);
_ScrollBar->setParentPos (_GroupList);
@ -882,8 +885,8 @@ namespace NLGUI
_SelectionView->setH (8);
_SelectionView->setY (4);
if (_Selected != -1 && _Lines[_Selected].ViewText != NULL)
sint highlight = _MouseOver != -1 ? _MouseOver : _Selected;
if (highlight != -1 && _Lines[highlight].ViewText != NULL)
{
CRGBA col= _GroupMenu->_HighLightOver;
@ -891,11 +894,21 @@ namespace NLGUI
_SelectionView->setModulateGlobalColor(getModulateGlobalColor());
// get refElm and refElmYReal
GET_REF_ELM(_Selected)
GET_REF_ELM(highlight)
_SelectionView->setH (refElmHReal);
_SelectionView->setY (refElmYReal - this->getYReal());
}
// initial scroll after becoming active
if (_ScrollBar && _ScrollToView)
{
_ScrollToView = false;
if (_Selected != -1 && _Lines[_Selected].ViewText != NULL)
_ScrollBar->ensureVisible(_Lines[_Selected].ViewText, Hotspot_Tx, Hotspot_Mx);
else
_ScrollBar->setTrackPos(_GroupList->getHReal());
}
}
// ------------------------------------------------------------------------------------------------
@ -911,12 +924,12 @@ namespace NLGUI
(xMouse < (_XReal + _WReal))&&
(yMouse > _YReal) &&
(yMouse <= (_YReal+ _HReal))))
_Selected= -1;
_MouseOver = -1;
// CViewRenderer &rVR = *CViewRenderer::getInstance();
// Highlight (background under the selection)
if (_Selected != -1)
if (_MouseOver != -1 || _Selected != -1)
{
// display hightlight
if(_GroupMenu->_HighLightOver.A > 0)
@ -946,7 +959,7 @@ namespace NLGUI
}
else
{
if (i == _Selected) // Colors when the text is selected
if (i == _MouseOver) // Colors when the text is selected
{
_Lines[i].ViewText->Over = true;
_Lines[i].ViewText->setColor (_Lines[i].ViewText->OldColorOver);
@ -984,7 +997,7 @@ namespace NLGUI
if (event.getType() == NLGUI::CEventDescriptor::mouse)
{
const NLGUI::CEventDescriptorMouse &eventDesc = (const NLGUI::CEventDescriptorMouse &)event;
_Selected = -1;
_MouseOver = -1;
// TODO First check sub menus that can be not in the area of this menu
@ -994,6 +1007,9 @@ namespace NLGUI
(eventDesc.getY() <= (_YReal+ _HReal))))
return false;
if (_ScrollBar && _ScrollBar->isIn(eventDesc.getX(), eventDesc.getY()))
return false;
uint32 i = 0;
for (i = 0; i < _Lines.size(); ++i)
{
@ -1008,7 +1024,7 @@ namespace NLGUI
if ((eventDesc.getY() > refElmYReal) &&
(eventDesc.getY() <= (refElmYReal + refElmHReal + _GroupList->getSpace())))
{
_Selected = i;
_MouseOver = i;
break;
}
}
@ -1018,16 +1034,16 @@ namespace NLGUI
if (eventDesc.getEventTypeExtended() == NLGUI::CEventDescriptorMouse::mouseleftup)
{
// If a line is selected and the line is not grayed
if ((_Selected != -1) && (!_Lines[i].ViewText->getGrayed()))
if ((_MouseOver != -1) && (!_Lines[i].ViewText->getGrayed()))
{
CAHManager::getInstance()->runActionHandler ( _Lines[_Selected].AHName,
CAHManager::getInstance()->runActionHandler ( _Lines[_MouseOver].AHName,
CWidgetManager::getInstance()->getCtrlLaunchingModal(),
_Lines[_Selected].AHParams );
_Lines[_MouseOver].AHParams );
if (_SubMenus[_Selected] != NULL)
if (_SubMenus[_MouseOver] != NULL)
{
openSubMenu (_Selected);
openSubMenu (_MouseOver);
}
else
{
@ -1046,11 +1062,11 @@ namespace NLGUI
if (eventDesc.getEventTypeExtended() == NLGUI::CEventDescriptorMouse::mouserightup)
{
// If a line is selected and the line is not grayed and has right click action handler
if ((_Selected != -1) && (!_Lines[i].ViewText->getGrayed()) && !_Lines[_Selected].AHRightClick.empty())
if ((_MouseOver != -1) && (!_Lines[i].ViewText->getGrayed()) && !_Lines[_MouseOver].AHRightClick.empty())
{
CAHManager::getInstance()->runActionHandler ( _Lines[_Selected].AHRightClick,
CAHManager::getInstance()->runActionHandler ( _Lines[_MouseOver].AHRightClick,
CWidgetManager::getInstance()->getCtrlLaunchingModal(),
_Lines[_Selected].AHRightClickParams );
_Lines[_MouseOver].AHRightClickParams );
return true;
}
}
@ -1408,7 +1424,14 @@ namespace NLGUI
_Lines.erase(_Lines.begin() + index);
//invalidate selection
_MouseOver = -1;
if (_Selected != -1)
{
if (_Selected == index)
_Selected = -1;
else if (_Selected > index)
_Selected--;
}
if(_SubMenus[index])
{
@ -1442,6 +1465,7 @@ namespace NLGUI
// ------------------------------------------------------------------------------------------------
void CGroupSubMenu::reset()
{
_Selected = -1;
uint lineCount = (uint)_Lines.size();
for(sint k = lineCount - 1; k >= 0; --k)
{
@ -1652,10 +1676,10 @@ namespace NLGUI
}
}
if(_ScrollBar && _GroupList)
_ScrollBar->setTrackPos(_GroupList->getHReal());
CGroupFrame::setActive(state);
// handle scrolling in next updateCoords() call
_ScrollToView = true;
}
// ------------------------------------------------------------------------------------------------
@ -2526,6 +2550,10 @@ namespace NLGUI
CGroupFrame::setActive (state);
// skip rest if being hidden
if (!state)
return;
// must recompute now the pos of the menu
uint32 i;
for (i = 0; i < _ChildrenGroups.size(); ++i)

@ -438,6 +438,14 @@ namespace NLGUI
parseSizeRef(sizeref.c_str());
}
// ------------------------------------------------------------------------------------------------
std::string CInterfaceElement::getPosParent() const
{
std::string id;
getPosParent(id);
return id;
}
// ------------------------------------------------------------------------------------------------
std::string CInterfaceElement::getSizeRefAsString() const
{

@ -208,9 +208,10 @@ namespace NLGUI
// ***************************************************************************
bool getCssLength (float &value, std::string &unit, const std::string &str, bool neg)
{
static const std::set<std::string> knownUnits = {
static const std::string knownUnitsArr[] = {
"%", "rem", "em", "px", "pt", "vw", "vh", "vi", "vb", "vmin", "vmax"
};
static const std::set<std::string> knownUnits(knownUnitsArr, &knownUnitsArr[sizeof(knownUnitsArr) / sizeof(knownUnitsArr[0])]);
std::string::size_type pos = 0;
std::string::size_type len = str.size();

@ -481,7 +481,13 @@ namespace NLGUI
}
else
{
if (_HtmlDownload)
{
CGroupHTML *groupHtml = dynamic_cast<CGroupHTML*>(CWidgetManager::getInstance()->getElementFromId("ui:interface:webig:content:html"));
if (groupHtml)
groupHtml->removeImageDownload(_HtmlDownload, dynamic_cast<CViewBase*>(this));
_HtmlDownload = NULL;
}
_TextureId.setTexture (TxName.c_str (), _TxtOffsetX, _TxtOffsetY, _TxtWidth, _TxtHeight, false);
}
}

@ -99,6 +99,7 @@ namespace NLGUI
_TextSelection= false;
_TextSelectionStart= 0;
_TextSelectionEnd= std::numeric_limits<uint>::max();
m_DisableShadowInSelection = true;
_InvalidTextContext= true;
_FirstLineX = 0;
@ -1029,9 +1030,6 @@ namespace NLGUI
if (_MultiLine)
{
if (NLMISC::startsWith(propPtr, "u:"))
setTextFormatTaged(std::string(propPtr).substr(2));
else
setTextFormatTaged(CI18N::get(propPtr));
}
else
@ -1191,9 +1189,10 @@ namespace NLGUI
{
if (_Lines.empty()) return;
bool drawShadow = !(_TextSelection && m_DisableShadowInSelection);
TextContext->setHotSpot (UTextContext::BottomLeft);
TextContext->setShaded (_Shadow);
TextContext->setShadeOutline (_ShadowOutline);
TextContext->setShaded (_Shadow && drawShadow);
TextContext->setShadeOutline (_ShadowOutline && drawShadow);
TextContext->setShadeColor (shcol);
TextContext->setShadeExtent (_ShadowX*oow, _ShadowY*ooh);
TextContext->setFontSize (_FontSize*_Scale);
@ -1323,9 +1322,10 @@ namespace NLGUI
{
nlassert(_Index != 0xFFFFFFFF);
bool drawShadow = !(_TextSelection && m_DisableShadowInSelection);
TextContext->setHotSpot (UTextContext::BottomLeft);
TextContext->setShaded (_Shadow);
TextContext->setShadeOutline (_ShadowOutline);
TextContext->setShaded (_Shadow && drawShadow);
TextContext->setShadeOutline (_ShadowOutline && drawShadow);
TextContext->setShadeColor (shcol);
TextContext->setShadeExtent (_ShadowX*oow, _ShadowY*ooh);
TextContext->setFontSize (_FontSize*_Scale);
@ -1468,7 +1468,7 @@ namespace NLGUI
}
}
nlassert(_Text.empty() || ((_Localized && (NLMISC::startsWith(getText(), "ui"))) == (_HardText.empty() == _Text.empty())));
nlassert(_Text.empty() || ((_Localized && (NLMISC::startsWith(getHardText(), "ui"))) == (_HardText.empty() == _Text.empty())));
}
// ***************************************************************************

@ -435,8 +435,23 @@ namespace NLGUI
CWidgetManager::SMasterGroup &rMG = _MasterGroups[nMasterGroup];
CInterfaceElement *pIEL = rMG.Group->getElement (sEltId);
if (pIEL != NULL)
{
#if !FINAL_VERSION
if (m_LoggedMissingElement.find(sEltId) != m_LoggedMissingElement.end())
{
m_LoggedMissingElement.erase(sEltId);
nlwarning("Previously missing UI element with Id '%s' was now found!", sEltId.c_str());
}
#endif
return pIEL;
}
}
if (m_LoggedMissingElement.find(sEltId) == m_LoggedMissingElement.end())
{
m_LoggedMissingElement.insert(sEltId);
nlwarning("Could not find UI element from Id '%s'...", sEltId.c_str());
}
return NULL;
}
@ -1196,7 +1211,7 @@ namespace NLGUI
// Copy all aspects to the view
vtDst->setLocalized (vtSrc->isLocalized());
vtDst->setText (vtSrc->getText());
vtDst->setText (vtSrc->getHardText());
vtDst->setFontSize (vtSrc->getFontSize());
vtDst->setColor (vtSrc->getColor());
vtDst->setModulateGlobalColor(vtSrc->getModulateGlobalColor());

@ -183,6 +183,21 @@ IF(WITH_GTK)
ENDIF()
ENDIF()
IF(HUNTER_ENABLED)
HUNTER_ADD_PACKAGE(Jpeg)
FIND_PACKAGE(JPEG CONFIG REQUIRED)
SET(JPEG_LIBRARY JPEG::jpeg)
HUNTER_ADD_PACKAGE(giflib)
FIND_PACKAGE(giflib CONFIG REQUIRED)
SET(GIF_LIBRARY giflib::giflib)
HUNTER_ADD_PACKAGE(PNG)
FIND_PACKAGE(PNG CONFIG REQUIRED)
SET(PNG_LIBRARY PNG::png)
SET(PNG_LIBRARIES PNG::png)
ENDIF()
IF(JPEG_FOUND)
INCLUDE_DIRECTORIES(${JPEG_INCLUDE_DIR})
ADD_DEFINITIONS(-DUSE_JPEG)
@ -202,6 +217,7 @@ ELSE()
TARGET_LINK_LIBRARIES(nelmisc ${PNG_LIBRARY})
ENDIF()
#TODO: needed for hunter aswell?
IF(UNIX)
TARGET_LINK_LIBRARIES(nelmisc -lc -ldl)
IF(APPLE)

@ -543,7 +543,7 @@ void CBitMemStream::serial(std::string &b)
/*
* Serial string
*/
inline void CBitMemStream::serial(ucstring &b)
void CBitMemStream::serial(ucstring &b)
{
#ifdef LOG_ALL_TRAFFIC
sint32 bitpos = getPosInBit();

@ -3,7 +3,7 @@
//
// This source file has been modified by the following contributors:
// Copyright (C) 2013 Laszlo KIS-ADAM (dfighter) <dfighter1985@gmail.com>
// Copyright (C) 2016 Jan BOON (Kaetemi) <jan.boon@kaetemi.be>
// Copyright (C) 2014-2020 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
@ -51,6 +51,18 @@ namespace NLMISC{
//-----------------------------------------------
void CCDBNodeLeaf::init( xmlNodePtr node, IProgressCallback &/* progressCallBack */, bool /* mapBanks */, CCDBBankHandler * /* bankHandler */ )
{
// Read nullable
CXMLAutoPtr nullable((const char*)xmlGetProp (node, (xmlChar*)"nullable"));
if ((const char *) nullable != NULL)
{
m_Nullable = (nullable.getDatas()[0] == '1');
}
else
{
m_Nullable = false;
}
// Read type
CXMLAutoPtr type((const char*)xmlGetProp (node, (xmlChar*)"type"));
nlassert((const char *) type != NULL);
@ -87,6 +99,9 @@ void CCDBNodeLeaf::init( xmlNodePtr node, IProgressCallback &/* progressCallBac
// IF it is a TEXT.
if(!strcmp(type, "TEXT"))
_Type = ICDBNode::TEXT;
// IF it is a PACKED.
else if (!strcmp(type, "PACKED"))
_Type = ICDBNode::PACKED;
// ELSE type unknown.
else
{
@ -131,6 +146,15 @@ void CCDBNodeLeaf::write( CTextId& id, FILE * f)
fprintf(f,"%" NL_I64 "d\t%s\n",_Property,id.toString().c_str());
} // write //
inline uint readPackedBitCount(CBitMemStream & f)
{
uint64 nibbleCount;
f.serial(nibbleCount, 4);
uint bits = (nibbleCount << 2) + 4;
// nlinfo("PACKED: %u bits", (uint32)(bits));
return bits;
}
//-----------------------------------------------
// readDelta
//-----------------------------------------------
@ -141,15 +165,26 @@ void CCDBNodeLeaf::readDelta(TGameCycle gc, CBitMemStream & f )
{
// Read the Property Value according to the Property Type.
uint64 recvd = 0;
uint64 isNull = 0;
if (m_Nullable)
{
f.serial(isNull, 1);
}
uint bits;
if (!isNull)
{
if (_Type == TEXT)
bits = 32;
else if (_Type == PACKED)
bits = readPackedBitCount(f);
else if (_Type <= I64)
bits = _Type;
else
bits = _Type - 64;
f.serial(recvd, bits);
}
// if the DB update is older than last DB update, abort (but after the read!!)
if(gc<_LastChangeGC)
@ -162,7 +197,9 @@ void CCDBNodeLeaf::readDelta(TGameCycle gc, CBitMemStream & f )
_Property = (sint64)recvd;
// if signed
if (! ((_Type == TEXT) || (_Type <= I64)))
if (! ((_Type == TEXT) || (_Type == PACKED) || (_Type <= I64)))
{
if (!isNull)
{
// extend bit sign
sint64 mask = (((sint64)1)<<bits)-(sint64)1;
@ -171,9 +208,13 @@ void CCDBNodeLeaf::readDelta(TGameCycle gc, CBitMemStream & f )
_Property |= ~mask;
}
}
}
if ( verboseDatabase )
{
if (!isNull)
nlinfo( "CDB: Read value (%u bits) %" NL_I64 "d", bits, _Property );
else
nlinfo( "CDB: Read null value %" NL_I64 "d", _Property );
}
// bkup the date of change

@ -52,9 +52,8 @@ ICommand::ICommand(const char *categoryName, const char *commandName, const char
if (comm != LocalCommands->end ())
{
nlinfo("command with same name: %s", commandName);
// 2 commands have the same name
// nlstopex (("There are 2 commands that have the same name in the project (command name '%s'), skip the second definition", commandName));
nlstopex (("There are 2 commands that have the same name in the project (command name '%s'), skip the second definition", commandName));
}
else
{

@ -288,7 +288,7 @@ void CEntityIdTranslator::registerEntity (const CEntityId &eid, const ucstring &
return;
}
//nlinfo ("EIT: Register EId %s EntityName '%s' UId %d UserName '%s'", reid.toString().c_str(), entityName.toString().c_str(), uid, userName.c_str());
nlinfo ("EIT: Register EId %s EntityName '%s' UId %d UserName '%s'", reid.toString().c_str(), entityName.toString().c_str(), uid, userName.c_str());
RegisteredEntities.insert (make_pair(reid, CEntityIdTranslator::CEntity(entityName, uid, userName, entitySlot, shardId)));
NameIndex.insert(make_pair(toLower(entityName), reid));
}

@ -17,6 +17,7 @@
// 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 "stdmisc.h"
#include <nel/misc/seven_zip.h>
#include <nel/misc/types_nl.h>

@ -188,6 +188,7 @@
# endif // NL_CPU_INTEL
# ifdef NL_OS_MAC
# include <sys/mount.h>
# include <sys/sysctl.h>
# else
# include <sys/vfs.h>
# endif
@ -1332,7 +1333,7 @@ uint64 CSystemInfo::getProcessorFrequency(bool quick)
static bool DetectMMX()
{
#ifdef NL_CPU_INTEL
#if defined(NL_CPU_INTEL) && (defined(HAVE_X86_64) || !defined(NL_COMP_GCC))
if (!CSystemInfo::hasCPUID()) return false; // cpuid not supported ...
sint32 CPUInfo[4];
@ -1347,7 +1348,7 @@ static bool DetectMMX()
static bool DetectSSE()
{
#ifdef NL_CPU_INTEL
#if defined(NL_CPU_INTEL) && (defined(HAVE_X86_64) || !defined(NL_COMP_GCC))
if (!CSystemInfo::hasCPUID()) return false; // cpuid not supported ...
sint32 CPUInfo[4];

@ -612,7 +612,7 @@ void initAdmin (bool dontUseAES)
{
CUnifiedNetwork::getInstance()->setServiceUpCallback ("AES", cbAESConnection, NULL);
CUnifiedNetwork::getInstance()->setServiceDownCallback ("AES", cbAESDisconnection, NULL);
CUnifiedNetwork::getInstance()->addService ("AES", CInetAddress("localhost:49997"));
CUnifiedNetwork::getInstance()->addService ("AES", CInetAddress("localhost:43997"));
}
CUnifiedNetwork::getInstance()->addCallbackArray (CallbackArray, sizeof(CallbackArray)/sizeof(CallbackArray[0]));
}

@ -141,7 +141,7 @@ string CLoginClient::authenticateBegin(const string &loginServiceAddr, const ucs
string addr = loginServiceAddr;
if(addr.find(":") == string::npos)
addr += ":49997";
addr += ":43997";
if(_LSCallbackClient->connected())
_LSCallbackClient->disconnect();
_LSCallbackClient->connect (CInetAddress(addr));

@ -268,7 +268,12 @@ void uncbServiceIdentification(CMessage &msgin, TSockId from, CCallbackNetBase &
if (isExternal)
{
#ifdef NL_OS_WINDOWS
pos = 0;
#else
nlassert(pos == 0);
#endif
}
if (inSid.get() == 0)

@ -2,7 +2,7 @@
// Copyright (C) 2010-2019 Winch Gate Property Limited
//
// This source file has been modified by the following contributors:
// Copyright (C) 2020 Jan BOON (Kaetemi) <jan.boon@kaetemi.be>
// Copyright (C) 2019-2020 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
@ -418,7 +418,8 @@ void CMoveContainer::updateCells (CMovePrimitive *primitive, uint8 worldImage)
CPrimitiveWorldImage *wI=primitive->getWorldImage (worldImage);
#if !FINAL_VERSION
/* // Check BB width not too large
#ifndef RYZOM_FORGE
// Check BB width not too large
if (wI->getBBXMax() - wI->getBBXMin() > _CellWidth)
{
nlwarning ("Primitives have moved more than a cell, width: %f.", (float)(wI->getBBXMax() - wI->getBBXMin()));
@ -429,7 +430,7 @@ void CMoveContainer::updateCells (CMovePrimitive *primitive, uint8 worldImage)
{
nlwarning ("Primitives have moved more than a cell, height: %f.", (float)(wI->getBBYMax() - wI->getBBYMin()));
}
*/
#endif
#endif
// Get coordinate in the cell array

@ -90,13 +90,30 @@ SOURCE_GROUP("user_classes" FILES ${USER_CLASSES})
NL_TARGET_LIB(nelsound ${HEADERS} ${SRC})
IF(HUNTER_ENABLED)
HUNTER_ADD_PACKAGE(libogg)
FIND_PACKAGE(libogg CONFIG REQUIRED)
SET(OGG_LIBRARY libogg::ogg)
SET(OGG_LIBRARIES libogg::ogg)
HUNTER_ADD_PACKAGE(vorbis)
FIND_PACKAGE(vorbis CONFIG REQUIRED)
SET(VORBIS_LIBRARY vorbis::vorbis)
SET(VORBISFILE_LIBRARY vorbis::vorbisfile)
IF(WITH_FFMPEG)
HUNTER_ADD_PACKAGE(ffmpeg)
FIND_PACKAGE(ffmpeg CONFIG REQUIRED)
SET(FFMPEG_LIBRARIES ffmpeg::avcodec ffmpeg::avformat ffmpeg::avutil ffmpeg::swresample)
ENDIF()
ENDIF()
INCLUDE_DIRECTORIES(${VORBIS_INCLUDE_DIR})
INCLUDE_DIRECTORIES(${OGG_INCLUDE_DIR})
TARGET_LINK_LIBRARIES(nelsound ${VORBISFILE_LIBRARY} ${VORBIS_LIBRARY})
IF(WITH_STATIC)
IF(WITH_STATIC OR ${VORBISFILE_LIBRARY} MATCHES "\\.a")
# Add libogg dependency only if target is static because to libvorbisfile
TARGET_LINK_LIBRARIES(nelsound ${OGG_LIBRARY})
ENDIF()

@ -180,13 +180,17 @@ uint32 CAudioDecoderVorbis::getNextBytes(uint8 *buffer, uint32 minimum, uint32 m
nlwarning("ov_read returned OV_HOLE");
break;
case OV_EINVAL:
_IsMusicEnded = true;
nlwarning("ov_read returned OV_EINVAL");
break;
case OV_EBADLINK:
_IsMusicEnded = true;
nlwarning("ov_read returned OV_EBADLINK");
break;
default:
_IsMusicEnded = true;
nlwarning("ov_read returned %d", br);
break;
}
}
} while (bytes_read < minimum);

@ -131,6 +131,39 @@ CAudioMixerUser::CAudioMixerUser() : _AutoLoadSample(false),
}
}
// ******************************************************************
std::vector<UAudioMixer::TDriverInfo> UAudioMixer::getDrivers()
{
std::vector<TDriverInfo> drivers;
std::vector<ISoundDriver::TDriver> drv = ISoundDriver::getAvailableDrivers();
for(uint i = 0; i < drv.size(); ++i)
{
switch(drv[i])
{
case ISoundDriver::DriverAuto:
drivers.push_back(TDriverInfo(DriverAuto, ISoundDriver::getDriverName(drv[i])));
break;
case ISoundDriver::DriverFMod:
drivers.push_back(TDriverInfo(DriverFMod, ISoundDriver::getDriverName(drv[i])));
break;
case ISoundDriver::DriverDSound:
drivers.push_back(TDriverInfo(DriverDSound, ISoundDriver::getDriverName(drv[i])));
break;
case ISoundDriver::DriverOpenAl:
drivers.push_back(TDriverInfo(DriverOpenAl, ISoundDriver::getDriverName(drv[i])));
break;
case ISoundDriver::DriverXAudio2:
drivers.push_back(TDriverInfo(DriverXAudio2, ISoundDriver::getDriverName(drv[i])));
break;
default:
nlwarning("Unknown driver id %d, name '%s'", drv[i], ISoundDriver::getDriverName(drv[i]));
break;
}
}
return drivers;
}
// ******************************************************************
@ -374,16 +407,42 @@ void CAudioMixerUser::initDriver(const std::string &driverName)
std::string dn = NLMISC::toLowerAscii(driverName);
nldebug("AM: Init Driver '%s' ('%s')...", driverName.c_str(), dn.c_str());
TDriver driverId = dn == "auto" ? DriverAuto : NumDrivers;
if (driverId == NumDrivers)
{
std::vector<TDriverInfo> drivers = UAudioMixer::getDrivers();
for(uint i = 0; i < drivers.size(); ++i)
{
if (nlstricmp(drivers[i].Name, dn.c_str()) == 0)
{
driverId = drivers[i].ID;
break;
}
}
}
ISoundDriver::TDriver driverType;
if (dn == "auto") driverType = ISoundDriver::DriverAuto;
else if (dn == "fmod") driverType = ISoundDriver::DriverFMod;
else if (dn == "dsound") driverType = ISoundDriver::DriverDSound;
else if (dn == "openal") driverType = ISoundDriver::DriverOpenAl;
else if (dn == "xaudio2") driverType = ISoundDriver::DriverXAudio2;
else
switch(driverId)
{
case DriverAuto:
driverType = ISoundDriver::DriverAuto;
break;
case DriverFMod:
driverType = ISoundDriver::DriverFMod;
break;
case DriverDSound:
driverType = ISoundDriver::DriverDSound;
break;
case DriverOpenAl:
driverType = ISoundDriver::DriverOpenAl;
break;
case DriverXAudio2:
driverType = ISoundDriver::DriverXAudio2;
break;
case NumDrivers:
driverType = ISoundDriver::DriverAuto;
nlwarning("AM: driverName value '%s' ('%s') is invalid.", driverName.c_str(), dn.c_str());
nlwarning("AM: driverName value '%s' ('%s') is not available.", driverName.c_str(), dn.c_str());
break;
}
try

@ -26,9 +26,16 @@ SOURCE_GROUP(util FILES
NL_TARGET_DRIVER(${NLDRV_AL_LIB} ${SRC})
IF(HUNTER_ENABLED)
HUNTER_ADD_PACKAGE(OpenAL)
FIND_PACKAGE(OpenAL CONFIG REQUIRED)
SET(OPENAL_LIBRARY OpenAL::OpenAL)
ADD_DEFINITIONS(-DAL_LIBTYPE_STATIC)
ELSE()
INCLUDE_DIRECTORIES(${OPENAL_INCLUDE_DIR})
ENDIF()# hunter
TARGET_LINK_LIBRARIES(${NLDRV_AL_LIB} ${OPENAL_LIBRARY} nelmisc nelsnd_lowlevel)
TARGET_LINK_LIBRARIES(${NLDRV_AL_LIB} nelmisc nelsnd_lowlevel ${OPENAL_LIBRARY})
NL_DEFAULT_PROPS(${NLDRV_AL_LIB} "NeL, Driver, Sound: OpenAL")
NL_ADD_RUNTIME_FLAGS(${NLDRV_AL_LIB})
NL_ADD_LIB_SUFFIX(${NLDRV_AL_LIB})

@ -66,6 +66,7 @@ void alExtInitDevice(ALCdevice *device)
}
}
#if !defined(AL_LIBTYPE_STATIC)
// Windows and Mac OS always link to shared OpenAL library
#if defined(NL_OS_WINDOWS) || defined(NL_OS_MAC) || !defined(NL_STATIC)
// EFX
@ -114,6 +115,7 @@ void alExtInitDevice(ALCdevice *device)
}
}
#endif
#endif
}
#if EAX_AVAILABLE
@ -137,6 +139,7 @@ EAXGetBufferMode eaxGetBufferMode = NULL;
// ALC_EXT_EFX
bool AlExtEfx = false;
// effect objects
#if !defined(AL_LIBTYPE_STATIC)
#if defined(NL_OS_WINDOWS) || defined(NL_OS_MAC) || !defined(NL_STATIC)
LPALGENEFXOBJECTS alGenEffects = NULL;
LPALDELETEEFXOBJECTS alDeleteEffects = NULL;
@ -174,6 +177,7 @@ LPALGETEFXOBJECTIV alGetAuxiliaryEffectSlotiv = NULL;
LPALGETEFXOBJECTF alGetAuxiliaryEffectSlotf = NULL;
LPALGETEFXOBJECTFV alGetAuxiliaryEffectSlotfv = NULL;
#endif
#endif
}
/* end of file */

@ -57,7 +57,7 @@ namespace NLSOUND
/// Interface version, increase when any part of sound_lowlevel is changed.
/// Put your name in comment to make sure you don't commit with
/// the same interface version number as someone else.
const uint32 ISoundDriver::InterfaceVersion = 0x16; // Kaetemi
const uint32 ISoundDriver::InterfaceVersion = 0x17; // Nimetu
#ifdef NL_STATIC
@ -104,6 +104,138 @@ const char *ISoundDriver::getDriverName(TDriver driverType)
}
}
/// Return driver filename from type.
std::string ISoundDriver::getDriverFileName(TDriver driverType)
{
switch(driverType)
{
case DriverFMod:
#if defined (NL_COMP_MINGW)
return "libnel_drv_fmod_win";
#elif defined (NL_OS_WINDOWS)
return "nel_drv_fmod_win";
#elif defined (NL_OS_UNIX)
return "nel_drv_fmod";
#else
# error "Driver name not define for this platform"
#endif // NL_OS_UNIX / NL_OS_WINDOWS
break;
case DriverOpenAl:
#if defined (NL_COMP_MINGW)
return "libnel_drv_openal_win";
#elif defined (NL_OS_WINDOWS)
return "nel_drv_openal_win";
#elif defined (NL_OS_UNIX)
return "nel_drv_openal";
#else
# error "Driver name not define for this platform"
#endif
break;
case DriverDSound:
#if defined (NL_COMP_MINGW)
return "libnel_drv_dsound_win";
#elif defined (NL_OS_WINDOWS)
return "nel_drv_dsound_win";
#elif defined (NL_OS_UNIX)
return "";
#else
# error "Driver name not define for this platform"
#endif
break;
case DriverXAudio2:
#if defined (NL_COMP_MINGW)
return "libnel_drv_xaudio2_win";
#elif defined (NL_OS_WINDOWS)
return "nel_drv_xaudio2_win";
#elif defined (NL_OS_UNIX)
return "";
#else
# error "Driver name not define for this platform"
#endif
break;
case DriverAuto:
#if defined (NL_COMP_MINGW)
return "libnel_drv_xaudio2_win";
#elif defined (NL_OS_WINDOWS)
return "nel_drv_xaudio2_win";
#elif defined (NL_OS_UNIX)
return "nel_drv_openal";
#else
# error "Driver name not define for this platform"
#endif
break;
default:
break;
}
return "";
}
///
std::vector<ISoundDriver::TDriver> ISoundDriver::getAvailableDrivers()
{
static std::vector<TDriver> m_AvailableDrivers;
if (!m_AvailableDrivers.empty())
return m_AvailableDrivers;
#ifdef NL_STATIC
# ifdef NL_FMOD_AVAILABLE
m_AvailableDrivers.push_back(DriverFMod);
# endif
# ifdef NL_OPENAL_AVAILABLE
m_AvailableDrivers.push_back(DriverOpenAl);
# endif
# ifdef NL_DSOUND_AVAILABLE
m_AvailableDrivers.push_back(DriverDSound);
# endif
# ifdef NL_XAUDIO2_AVAILABLE
m_AvailableDrivers.push_back(DriverXAudio2);
# endif
#else // NL_STATIC
const std::vector<TDriver> vec = {
DriverFMod,
DriverOpenAl,
DriverDSound,
DriverXAudio2,
};
#if 0
// if platform has dynamic driver name set, consider it as available
for(uint i = 0; i < vec.size(); i++)
{
std::string dllName = getDriverFileName(vec[i]);
if(!dllName.empty())
m_AvailableDrivers.push_back(vec[i]);
}
#else
CLibrary driverLib;
#if defined(NL_OS_UNIX) && defined(NL_DRIVER_PREFIX)
driverLib.addLibPath(NL_DRIVER_PREFIX);
#endif
nlinfo("Detecting available sound drivers");
for(uint i = 0; i < vec.size(); i++)
{
std::string dllName = getDriverFileName(vec[i]);
if(!dllName.empty())
{
// Load it (adding standard nel pre/suffix, looking in library path and taking ownership)
if (driverLib.loadLibrary(dllName, true, true, true))
{
m_AvailableDrivers.push_back(vec[i]);
driverLib.freeLibrary();
}
}
}
#endif
#endif
return m_AvailableDrivers;
}
/*
* The static method which builds the sound driver instance
*/
@ -151,67 +283,9 @@ ISoundDriver *ISoundDriver::createDriver(IStringMapperProvider *stringMapper, TD
ISDRV_VERSION_PROC versionDriver = NULL;
// dll selected
std::string dllName;
// Choose the DLL
switch(driverType)
{
case DriverFMod:
#if defined (NL_COMP_MINGW)
dllName = "libnel_drv_fmod_win";
#elif defined (NL_OS_WINDOWS)
dllName = "nel_drv_fmod_win";
#elif defined (NL_OS_UNIX)
dllName = "nel_drv_fmod";
#else
# error "Driver name not define for this platform"
#endif // NL_OS_UNIX / NL_OS_WINDOWS
break;
case DriverOpenAl:
#if defined (NL_COMP_MINGW)
dllName = "libnel_drv_openal_win";
#elif defined (NL_OS_WINDOWS)
dllName = "nel_drv_openal_win";
#elif defined (NL_OS_UNIX)
dllName = "nel_drv_openal";
#else
# error "Driver name not define for this platform"
#endif
break;
case DriverDSound:
#if defined (NL_COMP_MINGW)
dllName = "libnel_drv_dsound_win";
#elif defined (NL_OS_WINDOWS)
dllName = "nel_drv_dsound_win";
#elif defined (NL_OS_UNIX)
nlerror("DriverDSound doesn't exist on Unix because it requires DirectX");
#else
# error "Driver name not define for this platform"
#endif
break;
case DriverXAudio2:
#if defined (NL_COMP_MINGW)
dllName = "libnel_drv_xaudio2_win";
#elif defined (NL_OS_WINDOWS)
dllName = "nel_drv_xaudio2_win";
#elif defined (NL_OS_UNIX)
nlerror("DriverXAudio2 doesn't exist on Unix because it requires DirectX");
#else
# error "Driver name not define for this platform"
#endif
break;
default:
#if defined (NL_COMP_MINGW)
dllName = "libnel_drv_xaudio2_win";
#elif defined (NL_OS_WINDOWS)
dllName = "nel_drv_xaudio2_win";
#elif defined (NL_OS_UNIX)
dllName = "nel_drv_openal";
#else
# error "Driver name not define for this platform"
#endif
break;
}
std::string dllName = getDriverFileName(driverType);
if (dllName.empty())
throw ESoundDriverCantCreateDriver(("Driver '%s' not available for this platform", ISoundDriver::getDriverName(driverType)));
CLibrary driverLib;

@ -262,7 +262,7 @@ void CSound::importForm(const std::string& filename, NLGEORGES::UFormElm& roo
_GroupController = CGroupControllerRoot::getInstance()->getGroupController(NLSOUND_SHEET_V1_DEFAULT_SOUND_GROUP_CONTROLLER);
#else
std::string groupControllerPath;
root.getValueByName(groupControllerPath, ".GroupControllerPath");
root.getValueByName(groupControllerPath, ".GroupController");
_GroupController = CGroupControllerRoot::getInstance()->getGroupController(groupControllerPath);
#endif

@ -21,5 +21,3 @@
// and not in this file
#include "stdafx.h"
void nlmax_shared_stdafx_dummy() { }

@ -18,6 +18,3 @@
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "std_afx.h"
void nlmax_nel_export_std_afx_dummy() { }

@ -19,6 +19,3 @@
#include "stdafx.h"
void nlmax_mesh_library_stdafx_dummy() { }

@ -1,3 +1 @@
#include "stdafx.h"
void nlmax_patch_edit_stdafx_dummy() { }

@ -18,5 +18,3 @@
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "stdafx.h"
void nlmax_patch_library_stdafx_dummy() { }

@ -1,3 +1 @@
#include "stdafx.h"
void nlmax_patch_painter_stdafx_dummy() { }

@ -65,157 +65,219 @@ if not args.noconf:
except NameError:
BuildQuality = 1
try:
if not args.preset:
if args.preset:
DummyUnknownName
RemapLocalFrom
except NameError:
RemapLocalFrom = 'R:'
try:
if args.preset:
DummyUnknownName
RemapLocalTo
except NameError:
RemapLocalTo = os.getenv('RC_ROOT').replace('\\', '/')
if (not RemapLocalTo) or (not ':' in RemapLocalTo):
RemapLocalTo = 'R:'
try:
if args.preset:
DummyUnknownName
ToolDirectories
except NameError:
ToolDirectories = [ 'R:/distribution/nel_tools_win_x64-distribution', 'R:/distribution/ryzom_tools_win_x64-distribution' ]
ToolDirectories = [ 'R:/distribution/nel_tools_win_x64', 'R:/distribution/ryzom_tools_win_x64' ]
try:
ToolSuffix
except NameError:
ToolSuffix = ".exe"
try:
if not args.preset:
if args.preset:
DummyUnknownName
ScriptDirectory
except NameError:
ScriptDirectory = "R:/code/nel/tools/build_gamedata"
try:
if not args.preset:
if args.preset:
DummyUnknownName
WorkspaceDirectory
except NameError:
WorkspaceDirectory = "R:/leveldesign/workspace"
try:
if not args.preset:
if args.preset:
DummyUnknownName
DatabaseDirectory
except NameError:
DatabaseDirectory = "R:/graphics"
try:
if not args.preset:
if args.preset:
DummyUnknownName
SoundDirectory
except NameError:
SoundDirectory = "R:/sound"
try:
if not args.preset:
if args.preset:
DummyUnknownName
SoundDfnDirectory
except NameError:
SoundDfnDirectory = "R:/sound/DFN"
try:
if not args.preset:
if args.preset:
DummyUnknownName
ExportBuildDirectory
except NameError:
ExportBuildDirectory = "R:/pipeline/export"
try:
if not args.preset:
if args.preset:
DummyUnknownName
InstallDirectory
except NameError:
InstallDirectory = "R:/pipeline/install"
try:
if not args.preset:
if args.preset:
DummyUnknownName
ClientDevDirectory
except NameError:
ClientDevDirectory = "R:/pipeline/client_dev"
try:
if not args.preset:
if args.preset:
DummyUnknownName
ClientDevLiveDirectory
except NameError:
ClientDevLiveDirectory = "R:/pipeline/client_dev_live"
try:
if args.preset:
DummyUnknownName
ClientPatchDirectory
except NameError:
ClientPatchDirectory = "R:/pipeline/client_patch"
try:
if not args.preset:
if args.preset:
DummyUnknownName
ClientInstallDirectory
except NameError:
ClientInstallDirectory = "R:/pipeline/client_install"
try:
if not args.preset:
if args.preset:
DummyUnknownName
ShardInstallDirectory
except NameError:
ShardInstallDirectory = "R:/pipeline/shard"
try:
if not args.preset:
if args.preset:
DummyUnknownName
ShardDevDirectory
except NameError:
ShardDevDirectory = "R:/pipeline/shard_dev"
try:
if args.preset:
DummyUnknownName
WorldEditInstallDirectory
except NameError:
WorldEditInstallDirectory = "R:/pipeline/worldedit"
try:
if not args.preset:
if args.preset:
DummyUnknownName
WorldEditorFilesDirectory
except NameError:
WorldEditorFilesDirectory = "R:/code/ryzom/common/data_leveldesign/leveldesign/world_editor_files"
try:
if not args.preset:
if args.preset:
DummyUnknownName
LeveldesignDirectory
except NameError:
LeveldesignDirectory = "R:/leveldesign"
try:
if not args.preset:
if args.preset:
DummyUnknownName
LeveldesignDfnDirectory
except NameError:
LeveldesignDfnDirectory = "R:/leveldesign/DFN"
try:
if not args.preset:
if args.preset:
DummyUnknownName
LeveldesignWorldDirectory
except NameError:
LeveldesignWorldDirectory = "R:/leveldesign/world"
try:
if not args.preset:
if args.preset:
DummyUnknownName
PrimitivesDirectory
except NameError:
PrimitivesDirectory = "R:/leveldesign/primitives"
try:
if not args.preset:
if args.preset:
DummyUnknownName
LeveldesignDataCommonDirectory
except NameError:
LeveldesignDataCommonDirectory = "R:/leveldesign/common"
try:
if not args.preset:
if args.preset:
DummyUnknownName
LeveldesignDataShardDirectory
except NameError:
LeveldesignDataShardDirectory = "R:/leveldesign/shard"
try:
if not args.preset:
if args.preset:
DummyUnknownName
TranslationDirectory
except NameError:
TranslationDirectory = "R:/leveldesign/translation"
try:
if not args.preset:
if args.preset:
DummyUnknownName
GamedevDirectory
except NameError:
GamedevDirectory = "R:/code/ryzom/client/data/gamedev"
try:
if not args.preset:
if args.preset:
DummyUnknownName
DataCommonDirectory
except NameError:
DataCommonDirectory = "R:/code/ryzom/common/data_common"
try:
if not args.preset:
if args.preset:
DummyUnknownName
DataShardDirectory
except NameError:
DataShardDirectory = "R:/code/ryzom/server/data_shard"
try:
if not args.preset:
if args.preset:
DummyUnknownName
WindowsExeDllCfgDirectories
except NameError:
# TODO: Separate 64bit and 32bit
WindowsExeDllCfgDirectories = [ '', 'R:/build/fv_x64/bin/Release', 'R:/distribution/external_x64', 'R:/code/ryzom/client', '', '', '' ]
try:
if not args.preset:
if args.preset:
DummyUnknownName
LinuxServiceExecutableDirectory
except NameError:
LinuxServiceExecutableDirectory = "R:/build/gcc_server/bin"
LinuxServiceExecutableDirectory = "R:/build/server_gcc/bin"
try:
if not args.preset:
if args.preset:
DummyUnknownName
LinuxClientExecutableDirectory
except NameError:
LinuxClientExecutableDirectory = "R:/build/gcc_client/bin"
LinuxClientExecutableDirectory = "R:/build/client_gcc/bin"
try:
if not args.preset:
if args.preset:
DummyUnknownName
PatchmanDevDirectory
except NameError:
PatchmanDevDirectory = "R:/patchman/terminal_dev"
try:
if args.preset:
DummyUnknownName
PatchmanCfgAdminDirectory
except NameError:
PatchmanCfgAdminDirectory = "R:/patchman/admin_install"
try:
if not args.preset:
if args.preset:
DummyUnknownName
PatchmanCfgDefaultDirectory
except NameError:
PatchmanCfgDefaultDirectory = "R:/patchman/default"
try:
if not args.preset:
if args.preset:
DummyUnknownName
PatchmanBridgeServerDirectory
except NameError:
PatchmanBridgeServerDirectory = "R:/pipeline/bridge_server"
@ -276,9 +338,11 @@ if not args.noconf:
ExportBuildDirectory = askVar(log, "[OUT] Export Build Directory", ExportBuildDirectory).replace("\\", "/")
InstallDirectory = askVar(log, "[OUT] Install Directory", InstallDirectory).replace("\\", "/")
ClientDevDirectory = askVar(log, "[OUT] Client Dev Directory", ClientDevDirectory).replace("\\", "/")
ClientDevLiveDirectory = askVar(log, "[OUT] Client Dev Live Directory", ClientDevLiveDirectory).replace("\\", "/")
ClientPatchDirectory = askVar(log, "[OUT] Client Patch Directory", ClientPatchDirectory).replace("\\", "/")
ClientInstallDirectory = askVar(log, "[OUT] Client Install Directory", ClientInstallDirectory).replace("\\", "/")
ShardInstallDirectory = askVar(log, "[OUT] Shard Data Install Directory", ShardInstallDirectory).replace("\\", "/")
ShardDevDirectory = askVar(log, "[OUT] Shard Dev Directory", ShardDevDirectory).replace("\\", "/")
WorldEditInstallDirectory = askVar(log, "[OUT] World Edit Data Install Directory", WorldEditInstallDirectory).replace("\\", "/")
LeveldesignDirectory = askVar(log, "[IN] Leveldesign Directory", LeveldesignDirectory).replace("\\", "/")
LeveldesignDfnDirectory = askVar(log, "[IN] Leveldesign DFN Directory", LeveldesignDfnDirectory).replace("\\", "/")
@ -300,6 +364,7 @@ if not args.noconf:
WindowsExeDllCfgDirectories[6] = askVar(log, "[IN] Septenary Windows exe/dll/cfg Directory", WindowsExeDllCfgDirectories[6]).replace("\\", "/")
LinuxServiceExecutableDirectory = askVar(log, "[IN] Linux Service Executable Directory", LinuxServiceExecutableDirectory).replace("\\", "/")
LinuxClientExecutableDirectory = askVar(log, "[IN] Linux Client Executable Directory", LinuxClientExecutableDirectory).replace("\\", "/")
PatchmanDevDirectory = askVar(log, "[IN] Patchman Directory", PatchmanDevDirectory).replace("\\", "/")
PatchmanCfgAdminDirectory = askVar(log, "[IN] Patchman Cfg Admin Directory", PatchmanCfgAdminDirectory).replace("\\", "/")
PatchmanCfgDefaultDirectory = askVar(log, "[IN] Patchman Cfg Default Directory", PatchmanCfgDefaultDirectory).replace("\\", "/")
PatchmanBridgeServerDirectory = askVar(log, "[OUT] Patchman Bridge Server Patch Directory", PatchmanBridgeServerDirectory).replace("\\", "/")
@ -350,6 +415,9 @@ if not args.noconf:
sf.write("# Quality option for this site (1 for BEST, 0 for DRAFT)\n")
sf.write("BuildQuality = " + str(BuildQuality) + "\n")
sf.write("\n")
sf.write("RemapLocalFrom = \"" + str(RemapLocalFrom) + "\"\n")
sf.write("RemapLocalTo = \"" + str(RemapLocalTo) + "\"\n")
sf.write("\n")
sf.write("ToolDirectories = " + str(ToolDirectories) + "\n")
sf.write("ToolSuffix = \"" + str(ToolSuffix) + "\"\n")
sf.write("\n")
@ -366,9 +434,11 @@ if not args.noconf:
sf.write("# Install directories\n")
sf.write("InstallDirectory = \"" + str(InstallDirectory) + "\"\n")
sf.write("ClientDevDirectory = \"" + str(ClientDevDirectory) + "\"\n")
sf.write("ClientDevLiveDirectory = \"" + str(ClientDevLiveDirectory) + "\"\n")
sf.write("ClientPatchDirectory = \"" + str(ClientPatchDirectory) + "\"\n")
sf.write("ClientInstallDirectory = \"" + str(ClientInstallDirectory) + "\"\n")
sf.write("ShardInstallDirectory = \"" + str(ShardInstallDirectory) + "\"\n")
sf.write("ShardDevDirectory = \"" + str(ShardDevDirectory) + "\"\n")
sf.write("WorldEditInstallDirectory = \"" + str(WorldEditInstallDirectory) + "\"\n")
sf.write("\n")
sf.write("# Utility directories\n")
@ -390,6 +460,7 @@ if not args.noconf:
sf.write("WindowsExeDllCfgDirectories = " + str(WindowsExeDllCfgDirectories) + "\n")
sf.write("LinuxServiceExecutableDirectory = \"" + str(LinuxServiceExecutableDirectory) + "\"\n")
sf.write("LinuxClientExecutableDirectory = \"" + str(LinuxClientExecutableDirectory) + "\"\n")
sf.write("PatchmanDevDirectory = \"" + str(PatchmanDevDirectory) + "\"\n")
sf.write("PatchmanCfgAdminDirectory = \"" + str(PatchmanCfgAdminDirectory) + "\"\n")
sf.write("PatchmanCfgDefaultDirectory = \"" + str(PatchmanCfgDefaultDirectory) + "\"\n")
sf.write("PatchmanBridgeServerDirectory = \"" + str(PatchmanBridgeServerDirectory) + "\"\n")
@ -407,7 +478,17 @@ if not args.noconf:
sf.write("\n")
sf.write("\n")
sf.write("# end of file\n")
sf.flush()
sf.close()
sf = open("configuration/buildsite_local.py", "w")
sfr = open("configuration/buildsite.py", "r")
for l in sfr:
sf.write(l.replace(RemapLocalFrom + '/', RemapLocalTo + '/'))
sf.flush()
sfr.close()
sf.close()
from buildsite_local import *
sys.path.append(WorkspaceDirectory)
from projects import *
@ -448,6 +529,7 @@ printLog(log, "")
# Additional directories
printLog(log, ">>> Setup additional directories <<<")
mkPath(log, ClientDevDirectory)
mkPath(log, ClientDevLiveDirectory)
mkPath(log, ClientPatchDirectory)
mkPath(log, ClientInstallDirectory)
@ -503,6 +585,7 @@ if not args.noverify:
findTool(log, ToolDirectories, TranslationToolsTool, ToolSuffix)
findTool(log, ToolDirectories, BuildWorldPackedColTool, ToolSuffix)
findTool(log, ToolDirectories, R2IslandsTexturesTool, ToolSuffix)
findTool(log, ToolDirectories, PatchmanServiceTool, ToolSuffix)
log.close()
if os.path.isfile("0_setup.log"):

@ -47,7 +47,7 @@ if os.path.isfile("log.log"):
os.remove("log.log")
log = open("log.log", "w")
from scripts import *
from buildsite import *
from buildsite_local import *
from tools import *
sys.path.append(WorkspaceDirectory)

@ -47,7 +47,7 @@ if os.path.isfile("log.log"):
os.remove("log.log")
log = open("log.log", "w")
from scripts import *
from buildsite import *
from buildsite_local import *
from tools import *
sys.path.append(WorkspaceDirectory)

@ -47,7 +47,7 @@ if os.path.isfile("log.log"):
os.remove("log.log")
log = open("log.log", "w")
from scripts import *
from buildsite import *
from buildsite_local import *
from tools import *
sys.path.append(WorkspaceDirectory)

@ -31,7 +31,7 @@ if os.path.isfile("log.log"):
os.remove("log.log")
log = open("log.log", "w")
from scripts import *
from buildsite import *
from buildsite_local import *
from tools import *
try:

@ -31,7 +31,7 @@ if os.path.isfile("log.log"):
os.remove("log.log")
log = open("log.log", "w")
from scripts import *
from buildsite import *
from buildsite_local import *
from tools import *
sys.path.append(WorkspaceDirectory)

@ -1,15 +1,17 @@
title Ryzom Core: 0_setup.py --noconf
0_setup.py --noconf
python 0_setup.py --noconf
title Ryzom Core: 1_export.py
1_export.py
python 1_export.py
title Ryzom Core: 2_build.py
2_build.py
python 2_build.py
title Ryzom Core: 3_install.py
3_install.py
python 3_install.py
title Ryzom Core: a1_worldedit_data.py
a1_worldedit_data.py
python a1_worldedit_data.py
title Ryzom Core: b1_client_dev.py
b1_client_dev.py
python b1_client_dev.py
title Ryzom Core: b2_shard_data.py
b2_shard_data.py
python b2_shard_data.py
title Ryzom Core: b3_shard_dev.py
python b3_shard_dev.py
title Ryzom Core: Ready

@ -1,9 +1,11 @@
title Ryzom Core: 3_install.py
3_install.py
python 3_install.py
title Ryzom Core: a1_worldedit_data.py
a1_worldedit_data.py
python a1_worldedit_data.py
title Ryzom Core: b1_client_dev.py
b1_client_dev.py
python b1_client_dev.py
title Ryzom Core: b2_shard_data.py
b2_shard_data.py
python b2_shard_data.py
title Ryzom Core: b3_shard_dev.py
python b3_shard_dev.py
title Ryzom Core: Ready

@ -24,14 +24,14 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
import time, sys, os, shutil, subprocess, distutils.dir_util
import time, sys, os, shutil, subprocess, distutils.dir_util, socket
sys.path.append("configuration")
if os.path.isfile("log.log"):
os.remove("log.log")
log = open("log.log", "w")
from scripts import *
from buildsite import *
from buildsite_local import *
from tools import *
sys.path.append(WorkspaceDirectory)
@ -45,9 +45,10 @@ printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "")
if not os.path.isfile(ClientDevDirectory + "/client.cfg"):
printLog(log, ">>> Generate client.cfg <<<")
cfg = open(ClientDevDirectory + "/client.cfg", "w")
mkPath(log, ClientDevLiveDirectory)
if not os.path.isfile(ClientDevLiveDirectory + "/client.cfg"):
printLog(log, ">>> Generate live dev client.cfg <<<")
cfg = open(ClientDevLiveDirectory + "/client.cfg", "w")
cfg.write("RootConfigFilename = \"client_default.cfg\";\n")
cfg.write("PreDataPath = {\n")
cfg.write("\t\"user\", \"patch\", \"" + DataCommonDirectory + "\", \"" + GamedevDirectory + "\", \"" + LeveldesignDirectory + "/translation/translated\", \"" + InstallDirectory + "\", \"data\", \"examples\" \n")
@ -57,6 +58,24 @@ if not os.path.isfile(ClientDevDirectory + "/client.cfg"):
cfg.write("DisplayLuaDebugInfo = 1;\n")
cfg.write("AllowDebugLua = 1;\n")
cfg.write("FullScreen = 0;\n")
cfg.flush()
cfg.close()
printLog(log, "")
mkPath(log, ClientDevDirectory)
if not os.path.isfile(ClientDevDirectory + "/client.cfg"):
printLog(log, ">>> Generate local dev client.cfg <<<")
cfg = open(ClientDevDirectory + "/client.cfg", "w")
cfgr = open(ClientDevLiveDirectory + "/client.cfg", "r")
for l in cfgr:
cfg.write(l)
cfgr.close()
cfg.write("StartupHost = \"http://" + socket.gethostname() + ":9042\";\n")
cfg.write("Application = {\n")
cfg.write(" \"dev\", \"./client_ryzom_r.exe\", \"./\" \n")
cfg.write("};\n")
cfg.flush()
cfg.close()
printLog(log, "")
printLog(log, ">>> Install data <<<")
@ -64,13 +83,22 @@ for category in InstallClientData:
if (category["UnpackTo"] != None):
printLog(log, "CATEGORY " + category["Name"])
targetPath = ClientDevDirectory
targetPathLive = ClientDevLiveDirectory
if (category["UnpackTo"] != ""):
targetPath += "/" + category["UnpackTo"]
targetPathLive += "/" + category["UnpackTo"]
mkPath(log, targetPath)
mkPath(log, targetPathLive)
for package in category["Packages"]:
printLog(log, "PACKAGE " + package[0])
mkPath(log, InstallDirectory + "/" + package[0])
if "exedll" in package[0]:
if package[0] == "exedll": # or package[0] == platformExeDll # TODO: 64-bit and Linux separation of exedll, only include one
copyFileIfNeeded(log, InstallDirectory + "/" + package[0] + "/client_default.cfg", targetPath)
copyFileIfNeeded(log, InstallDirectory + "/" + package[0] + "/client_default.cfg", targetPathLive)
else:
copyFilesNoTreeIfNeeded(log, InstallDirectory + "/" + package[0], targetPath)
copyFilesNoTreeIfNeeded(log, InstallDirectory + "/" + package[0], targetPathLive)
printLog(log, "")
log.close()

@ -31,7 +31,7 @@ if os.path.isfile("log.log"):
os.remove("log.log")
log = open("log.log", "w")
from scripts import *
from buildsite import *
from buildsite_local import *
from tools import *
sys.path.append(WorkspaceDirectory)

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

Loading…
Cancel
Save