Compare commits

..

558 Commits

Author SHA1 Message Date
kaetemi 6e4efe327a
Merge branch 'core4' into ryzomclassic-develop 3 years ago
kaetemi 1c035401c6
Merge remote-tracking branch 'ryzomcore/develop' into core4 3 years ago
kaetemi 87971fde0d
Merge remote-tracking branch 'ryzomcore/core4' into ryzomclassic-develop 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
kaetemi 3c86dc68fc
Merge branch 'core4' into ryzomclassic-develop 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 4 years ago
kaetemi d465191e96
Move sheet generator scripts to leveldesign 4 years ago
kaetemi fdc0af158c
Fix generated gender for 3dset 4 years ago
kaetemi 5a34b3dc59
Tweak xp level 4 years ago
kaetemi 03270f330f
Generate required NPCs for Ring 4 years ago
kaetemi 3fbb3242ee
Remove unused value 4 years ago
kaetemi 1dd98445ca
Generate generic action lists 4 years ago
kaetemi d607dec79e
Adjust folders, prepare a new success table 4 years ago
kaetemi df69ff8507
Generate generic magic dot ai actions 4 years ago
kaetemi efd2dea7e4
No need to specify melee type, since it's inherited from the equipped weapon 4 years ago
kaetemi bc5d0fae17
Add option to disable using the dodge resist table average in calculating mob damage 4 years ago
kaetemi 9bd90c47c4
Print out average dodge factor 4 years ago
kaetemi 010c2c84eb
Generate genereric aeo and curse actions 4 years ago
kaetemi 838a362fad
Generate generic actions for melee and range 4 years ago
kaetemi 48548c99b8
Rebalance generated stats 4 years ago
kaetemi 34e079c020
Generate appropriate values for EGS 4 years ago
kaetemi 144ebe7f72
Comment out unused variables 4 years ago
kaetemi 5ef4a97c8a
Fix missing log context 4 years ago
kaetemi 62ed0d6de9
Generate generic ai actions for magic damage 4 years ago
kaetemi 7ecc87e3ed
Extract required creature parents 4 years ago
kaetemi 1df9e53dd5
Extract required npc creatures from palette 4 years ago
kaetemi a8f147231d
Generate melee weapons 4 years ago
kaetemi f73be89553
Generate armors into proper folders 4 years ago
kaetemi 5a090b2943
Remove redundant caster parts from palette 4 years ago
kaetemi 190057b11b
Generate shield items 4 years ago
kaetemi 03b9e1f44f
Remove known missing from list 4 years ago
kaetemi 93dc106d95
List remaining missing items 4 years ago
kaetemi 5fc80fca13
Improve naming convention 4 years ago
kaetemi 3aeef70db8
Wipe packed shard sheets if visual slot table has changed 4 years ago
kaetemi c71980df2e
Fix missing piece of boss armor 4 years ago
kaetemi 34bb64cea7
Generate craftable refugee armor sheets 4 years ago
kaetemi fe9d945265
Generate craftable underwear sheets 4 years ago
kaetemi 725206c678
Add boss armor to generated sheets 4 years ago
kaetemi 43716f30fb
Add separate item list for manual additions 4 years ago
kaetemi 5117fd742b
Script to update references to renamed bricks and phrases 4 years ago
kaetemi d79f103525
Generate random mp count 4 years ago
kaetemi 151f5270bc
Test button for toggling armor (disabled) 4 years ago
kaetemi be7ee784ec
Always put the current brick name in the first column 4 years ago
kaetemi 3d174a1294
Track missing and duplicate sbricks 4 years ago
kaetemi 7a6227efcc
Extend parsing for additional armors 4 years ago
kaetemi fd14ad6c94
Generate craft brick and phrase for sitem 4 years ago
kaetemi c4025de222
Preserve previously extracted brick family indices 4 years ago
kaetemi 5346d2b15e
Tag brick family and skill trees 4 years ago
kaetemi 3cf8ca0959
Parse previous brick family indices to retain compatibility 4 years ago
kaetemi 68eb9149df
Generate armor sitem sheets 4 years ago
kaetemi 0115e0b745
Generate sitem parent sheets 4 years ago
kaetemi e0e85d0100
Parse parent sheet names as well 4 years ago
kaetemi e3ac824104
Simplify crafted rule for sitem name parser 4 years ago
kaetemi 56c3248198
Improve weapon matching tags 4 years ago
kaetemi 6cabc38192
Add script to match shape to sitem 4 years ago
kaetemi 3a2c47ac5a
Add script to parse shape names 4 years ago
kaetemi d9ac7b70a8
Write sitem name tags to output 4 years ago
kaetemi c41cdd76ff
Add script for extracting list of sheets required for R2 pallete. Add script for parsing and generating sitem names 4 years ago
kaetemi ec63cdc818
Fix world editor paths 4 years ago
kaetemi d235885d70
Fix truncated string conversion 4 years ago
kaetemi ef4fb03143
Update executable paths in tools 4 years ago
kaetemi f1e89f15f1
Merge branch 'core4' into ryzomclassic-develop 4 years ago
kaetemi f3b2a70c21
Revert login layout 4 years ago
kaetemi cf2bf5629f
Move item rename to be an admin command, not for player use 4 years ago
kaetemi 3a50ba1450
Revert login layout 4 years ago
kaetemi 08a44dbd59
Revert "Splash screen for core"
This reverts commit b1733439d0.
4 years ago
kaetemi c1aef72da3
Revert "Use better contrast"
This reverts commit a3dea88eb1.
4 years ago
kaetemi ec6b13a88b
Fix duplicate include 4 years ago
kaetemi 2889e81d63
Typo 4 years ago
kaetemi 678d888b5c
Merge stuff from atys branch 4 years ago
kaetemi 6a79a5bf0f
Include fixes from atys branch 4 years ago
kaetemi b4638c7969
Include fixes from atys branch 4 years ago
kaetemi 4028534f2a
Exclude sync and generated source from attribution 4 years ago
kaetemi a3dea88eb1
Use better contrast 4 years ago
kaetemi b1733439d0
Splash screen for core 4 years ago
kaetemi c919b1891b
Ensure python from the path is used 4 years ago
kaetemi 5df65ae36e
Add shard dev step to convenience scripts 4 years ago
kaetemi 56beb7e214
Add some additional utility scripts for the pipeline 4 years ago
kaetemi dea792a3f7
Option to automatically configure the dev shard in the web database 4 years ago
kaetemi c5ccd66749
Simplify web setup. Use service dashboard tool. Create phpmyadmin database automatically 4 years ago
kaetemi ff971efc42
Put hostname as default domain. This is convenient since we have one VM per domain for admin and web services 4 years ago
kaetemi 85d1180719
Automatically put the proper folder for dev shard 4 years ago
kaetemi 4d65d5c459
Fix sql default value 4 years ago
kaetemi 6f2cd1fa1b
Generate the correct path in the sql config 4 years ago
kaetemi 23b188cadc
Support launch ctrl on dev shard 4 years ago
kaetemi 4fb55a86d3
Add launch priority to dev shard configuration 4 years ago
kaetemi 3be4999816
Fix sql config template 4 years ago
kaetemi d08547121f
Fix webig 4 years ago
kaetemi 0483474ea0
Fix php warning 4 years ago
kaetemi 7f8d286bc5
Fix high res graph output error on windows 4 years ago
kaetemi 2ecaf3ecd9
Fix web warning 4 years ago
kaetemi 7a95ff23f3
Make admin tool graphs work on windows 4 years ago
kaetemi cb47713119
Update jpgraph 4 years ago
kaetemi 8adf8e228a
Fix web warnings 4 years ago
kaetemi 7e7494f897
Set dev shard rrdtool path 4 years ago
kaetemi 9cf4677005
Generate AES configuration for dev shard 4 years ago
kaetemi 8f40fdb7b4
Ignore duplicate file spam on dev shard, it's normal 4 years ago
kaetemi 7709977b48
Put the proper version number in service titles 4 years ago
kaetemi 25b403556f
Fix SQL string in admin tool with custom port 4 years ago
kaetemi 77e69856d4
Adjust SU port 4 years ago
kaetemi b6e79ee3e1
More useful defaults for generated batch 4 years ago
kaetemi 0a1689ae10
Adjust default ports from 49xxx range to 43xxx range 4 years ago
kaetemi cda6770adb
Use the service dashboard instead of wt and conemu 4 years ago
kaetemi d9b59c1fdc
Include Python with the quick start package 4 years ago
kaetemi 5a8fa2052b
Generate shard configuration for service dashboard 4 years ago
kaetemi 31f31e6d69
Fix python path in web config script 4 years ago
kaetemi 187ef3af19
Add scripts for preparing the package 4 years ago
kaetemi 880f850be7
Add tool availability checks to build script 4 years ago
kaetemi 0fe48635f5
Proper EOL for sh checkout 4 years ago
kaetemi 59b5d1228f
Don't override unchanged 4 years ago
kaetemi b594606862
Fix initial shard dev 4 years ago
kaetemi 10fc562e07
Add trick for reusable dev config 4 years ago
kaetemi 7175e7f9ed
Launch scripts for dev client 4 years ago
kaetemi a5d0f904a4
Install scripts may use real paths 4 years ago
kaetemi 45668dcbfe
Generate dev client folder without binaries to match dev shard behaviour 4 years ago
kaetemi 614da137ac
Remove a lost file 4 years ago
kaetemi 1d06892f16
Remove duplicate web folder 4 years ago
kaetemi 08c094e957
Remove exe 4 years ago
kaetemi 681f133400
Remove redundant cfg files 4 years ago
kaetemi cac99dc9ab
Add missing browser css. Restore login window layout 4 years ago
kaetemi d30a80acea
Include service folders in dev shard paths 4 years ago
kaetemi 486af5ec85
Fix working directory for created shortcuts 4 years ago
kaetemi 9230eb1621
Preconfigure web 4 years ago
kaetemi 08a28193b4
Can also run dev unifier in release mode 4 years ago
kaetemi 8ad0536eed
Fix initial configuration build 4 years ago
kaetemi 211d4d276d
Add initial template for quick start package 4 years ago
kaetemi 378bef8db3
Include build output in dev shard at lower prio 4 years ago
kaetemi e9080405fc
Update title 4 years ago
kaetemi 090ff7d509
Add script to help repairing translation hashes 4 years ago
kaetemi 39190cde60
Merge remote-tracking branch 'ryzomcore/develop' into ryzomclassic-develop 4 years ago
kaetemi db211ffff7
Put good defaults for development 4 years ago
kaetemi c3dcdd25de
Adjust path style in config 4 years ago
kaetemi 3b993c6cda
Update defaults 4 years ago
kaetemi bc9d15a149
Generate dev shard configuration using patchman 4 years ago
kaetemi e067e0eeeb
Add script to setup dev shard folder 4 years ago
kaetemi 7873a839ef
Change to GroupController 4 years ago
kaetemi 3352401f24
Version bump 4 years ago
kaetemi 549a015847
Ring database missing default fix 4 years ago
kaetemi fb1557c08e
Version bump 4 years ago
kaetemi a3626de8bb
Generate separate dev client for local and remote dev 4 years ago
kaetemi 0045696546
Simplify tool paths 4 years ago
kaetemi a5dd6aa857
Prefer local path configuration where relevant 4 years ago
kaetemi 5da1678357
Generate secondary buildsite config with real local path 4 years ago
kaetemi 694338302e
Cleanup 4 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 4 years ago
kaetemi 20ed0a4412
Only send position if client game tick advanced as well 4 years ago
kaetemi c8ecf0a756
Enable full frequency connection 4 years ago
kaetemi d07e219439
Cleanup unused FS tick value 4 years ago
kaetemi 92bfb0aafb
Re-add lag compensation time from client to tick value in mirror 4 years ago
kaetemi 4407fc2970
Position speed checks should be based on the client tick. This fixes excessive rubber banding 4 years ago
kaetemi 3f63f27143
Disable slow system metrics function because it really is slow and chokes the update loop 4 years ago
kaetemi cb9094f091
Merge branch 'develop' into ryzomclassic-develop 4 years ago
kaetemi 30117e92be
More hashing of sequential indices 4 years ago
kaetemi b9de2e99a3
Actually hashing entries for a hash map makes it immensely faster 4 years ago
kaetemi 77f92c72a9
Fix race conditions in frontend service send task 4 years ago
kaetemi b33ff3cb93
Remove useless CPU hog 4 years ago
kaetemi da9c5173a6
Improve debug message 4 years ago
kaetemi 3ec5a87d40
Generate script to launch tabbed 4 years ago
kaetemi 2cd2b9502f
Sender doesn't guarantee anything about pos, this doesn't seem to work on Win32 host 4 years ago
kaetemi 88e2ebd31c
Todo note 4 years ago
kaetemi 492865deed
Skip AES placeholder 4 years ago
kaetemi a1023f923f
Fix dev batch file generation to work with the current naming scheme 4 years ago
kaetemi ce8acd4ca2
Specify SQL server port 4 years ago
kaetemi 9d722bb70f
Show correct label for Editor mode in quit dialog, fix kaetemi/ryzomclassic#113 4 years ago
kaetemi 59c1c340b8
Restore some more ui xml formatting 4 years ago
kaetemi 43af8e6695
Restore some more ui xml formatting 4 years ago
kaetemi f128e0807c
Restore some more ui xml formatting 4 years ago
kaetemi 8cecbb4a7d
Restore mailbox and forums 4 years ago
kaetemi feb7e7a812
Merge branch 'develop' into ryzomclassic-develop 4 years ago
kaetemi 8b6c3276e4
Defer browsing while web server not set 4 years ago
kaetemi deb1c7c131
Remove hardcoded URLs in favour of the web URL provided by the shard 4 years ago
kaetemi fc3f0355a5
Remove web notification polling (remote code execution path) 4 years ago
kaetemi 578cef6c85
Update ring database charsets 4 years ago
kaetemi 413ca990d0
Upgrade nel database charsets 4 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
7 years ago
ulukyn f7f1a6035e Added: getSheetLocalizedName and getSheetLocalizedDesc lua bind
--HG--
branch : patches-from-atys
7 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
7 years ago
ulukyn a50bd10b84 Added: setDbProp64 lua function
--HG--
branch : patches-from-atys
7 years ago
ulukyn 57406f6a8c Added: luaSetModalParentList method for container
--HG--
branch : patches-from-atys
7 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
7 years ago
ulukyn 16ce2e454c Added: add an prefiex "u:" to ask tooltip and hardcode_text to use utf8 strings
--HG--
branch : patches-from-atys
7 years ago
ulukyn c7bdaf513c Changed: use trimSeparators to remove spaces and tabs in html styles args values
--HG--
branch : patches-from-atys
7 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
7 years ago
Nuno Gonçalves ed798cb62a Add new Mektoub type used for new pets companions
--HG--
branch : patches-from-atys
7 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
7 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
7 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

4
.gitignore vendored

@ -90,7 +90,6 @@ ylwrap
*.mk *.mk
# Visual Studio garbage # Visual Studio garbage
.vscode/
*.opensdf *.opensdf
UpgradeLog*.XML UpgradeLog*.XML
_UpgradeReport_Files _UpgradeReport_Files
@ -163,9 +162,7 @@ build/*
build-2010/* build-2010/*
build/* build/*
install/* install/*
win-build/
build_* build_*
install_*
nel/tools/build_gamedata/configuration/buildsite.py nel/tools/build_gamedata/configuration/buildsite.py
# Linux nel compile # Linux nel compile
@ -267,6 +264,7 @@ web/public_php/db_version_tool
web/public_php/db_version_web web/public_php/db_version_web
web/public_php/role_service web/public_php/role_service
web/public_php/role_support web/public_php/role_support
web/public_php/role_admin
web/public_php/role_domain web/public_php/role_domain
web/public_php/db_version_ring web/public_php/db_version_ring
web/public_php/config_user.php web/public_php/config_user.php

@ -1,28 +1,27 @@
4eddbaff0c5e5d685db96ee3e8427aa0fd96ac83 ryzomcore/v0.8.0 4eddbaff0c5e5d685db96ee3e8427aa0fd96ac83 v0.8.0
00d9b6e29e95f56785fbf85abe60afd34674f402 ryzomcore/v0.9.0 00d9b6e29e95f56785fbf85abe60afd34674f402 v0.9.0
79776c337176dd5b02e1a74fe5dfb703b91747aa ryzomcore/v0.9.1 79776c337176dd5b02e1a74fe5dfb703b91747aa v0.9.1
fedf2aa443d09707beed814b0f499c6a5519cc84 ryzomcore/v0.10.0 fedf2aa443d09707beed814b0f499c6a5519cc84 v0.10.0
edaa3624a56420b02ccc64c26059801a389927ee ryzomcore/v0.11.0 edaa3624a56420b02ccc64c26059801a389927ee v0.11.0
e3fe4855f22c3e75722e015dc33c091c340b3ad7 ryzomcore/v0.11.1 e3fe4855f22c3e75722e015dc33c091c340b3ad7 v0.11.1
9e583b717fd63be0be9fd60b99087abf1691ea49 ryzomcore/v0.11.2 9e583b717fd63be0be9fd60b99087abf1691ea49 v0.11.2
bfe5628e14a024ba7ea32e4b326ae433a07856b9 ryzomcore/v0.11.3 bfe5628e14a024ba7ea32e4b326ae433a07856b9 v0.11.3
9a6120735daa97c96ac5d85ca35c7f21f607bd87 ryzomcore/v0.12.0 9a6120735daa97c96ac5d85ca35c7f21f607bd87 v0.12.0
3e17907af67e8d66d80e6b714707bbf912607f2a ryzom-patch-3.0.0 3e92c7104c20d6bc6c2147b4b5fc289e8621d322 v1.0.0
153e0b605c9e0c83ba05b6428c62838b49cc84b2 ryzom-patch-3.0.1 8eb94c3549be898fdc4a7c6d791d2477bdc11a18 v1.0.1
9d41f2994d44b9aad92b83f945f114e4b6bed44a ryzom-patch-3.0.2 3e17907af67e8d66d80e6b714707bbf912607f2a ryzom/3.0.0
4300cc14aad098b1f86ea4c55577b7fa4a4cb5d2 ryzom-patch-3.1.0 153e0b605c9e0c83ba05b6428c62838b49cc84b2 ryzom/3.0.1
d4060f217f4f834cc62a33f2f1ccdf3c28298066 ryzom-patch-3.1.0-hotfix 9d41f2994d44b9aad92b83f945f114e4b6bed44a ryzom/3.0.2
043aaeb3d8a2a54177581b57bda87a9deaad510e ryzom-patch-3.1.0-april_patch 4300cc14aad098b1f86ea4c55577b7fa4a4cb5d2 ryzom/3.1.0
4036ecf59e83960f03acebc2089eb2ff5eeaed0a ryzom-patch-3.2.0 d4060f217f4f834cc62a33f2f1ccdf3c28298066 ryzom/3.1.0-hotfix
18403bb9485da3d9742c6f007a16d5619ebfb196 ryzom-patch-3.2.1 043aaeb3d8a2a54177581b57bda87a9deaad510e ryzom/3.1.0-april_patch
822ff8f8917ad66e09e2c21c983282f6f693b9f6 ryzom-patch-3.3.0 4036ecf59e83960f03acebc2089eb2ff5eeaed0a ryzom/3.2.0
00dde390a394fce9da06c2f3264140282158d39f ryzom-patch-3.3.0 18403bb9485da3d9742c6f007a16d5619ebfb196 ryzom/3.2.1
dcd4c4d161ef775136e18c7e8f5072b75dede27e ryzom-patch-3.3.1 822ff8f8917ad66e09e2c21c983282f6f693b9f6 ryzom/3.3.0
fc4be8ebec5ca754ef4453bc6a9faef90837c674 ryzom-patch-3.4.0 00dde390a394fce9da06c2f3264140282158d39f ryzom/3.3.0
70eba02e8eab6920586dbabf74e9e8180c729980 ryzom-patch-3.4.0 Steam Fix dcd4c4d161ef775136e18c7e8f5072b75dede27e ryzom/3.3.1
3941482843f9cd130cfc16634efc08d34a98ed35 ryzom-patch-3.4.0 Atysmas fc4be8ebec5ca754ef4453bc6a9faef90837c674 ryzom/3.4.0
ecae9feb4cceb78103e5d7236caccaf450796cdb ryzom-patch-3.5.0 70eba02e8eab6920586dbabf74e9e8180c729980 ryzom/3.4.0-steam_fix
95783afa226f241062134eb62f4323295d29ac84 ryzom-patch-3.5.0.9637 3941482843f9cd130cfc16634efc08d34a98ed35 ryzom/3.4.0-atysmas
2102fb276eb69d49ed4923042215312a63c47c08 Live-746 ecae9feb4cceb78103e5d7236caccaf450796cdb ryzom/3.5.0
8eb94c3549be898fdc4a7c6d791d2477bdc11a18 ryzomcore/v1.0.1 95783afa226f241062134eb62f4323295d29ac84 ryzom/3.5.0.9637
3e92c7104c20d6bc6c2147b4b5fc289e8621d322 ryzomcore/v1.0.0

@ -34,37 +34,11 @@ IF(COMMAND cmake_policy)
ENDIF() ENDIF()
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)
ENDIF()
#-----------------------------------------------------------------------------
INCLUDE(nel) INCLUDE(nel)
INCLUDE(ConfigureChecks) INCLUDE(ConfigureChecks)
INCLUDE(CheckDepends) INCLUDE(CheckDepends)
INCLUDE(${CMAKE_ROOT}/Modules/Documentation.cmake OPTIONAL) INCLUDE(${CMAKE_ROOT}/Modules/Documentation.cmake OPTIONAL)
MESSAGE("EXTERNAL ${WITH_EXTERNAL}")
# Force out of source builds. # Force out of source builds.
CHECK_OUT_OF_SOURCE() CHECK_OUT_OF_SOURCE()
@ -79,16 +53,12 @@ ENDIF()
CMAKE_MINIMUM_REQUIRED(VERSION 2.6) CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
PROJECT(RyzomCore CXX C) PROJECT(RyzomCore CXX C)
SET(NL_VERSION_MAJOR 1) SET(NL_VERSION_MAJOR 4)
SET(NL_VERSION_MINOR 1) SET(NL_VERSION_MINOR 0)
SET(NL_VERSION_PATCH 0 CACHE STRING "Patch version") SET(NL_VERSION_PATCH 0 CACHE STRING "Patch version")
SET(YEAR "2001-${CURRENT_YEAR}") SET(YEAR "2001-${CURRENT_YEAR}")
SET(AUTHOR "Winch Gate and The Ryzom Core Community") 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 # Redirect output files
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
@ -124,27 +94,27 @@ RYZOM_SETUP_PREFIX_PATHS()
#----------------------------------------------------------------------------- #-----------------------------------------------------------------------------
# Default values for URL's # 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_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_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_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_PATCH_URL "https://cdn.ryzom.dev/open/patch/" CACHE STRING "Ryzom Client Patch URL")
SET(RYZOM_CLIENT_APP_NAME "default") SET(RYZOM_CLIENT_APP_NAME "default")
SET(RYZOM_WEBIG_MAIN_URL "https://open.ryzom.dev/" CACHE STRING "Ryzom Client WebIG Main URL") SET(RYZOM_CLIENT_RELEASENOTES_URL "https://open.ryzom.dev/releasenotes/index.php" CACHE STRING "Ryzom Client Release Notes URL")
SET(RYZOM_WEBIG_TRUSTED_DOMAIN "open.ryzom.dev" CACHE STRING "Ryzom Client WebIG Trusted Domain") SET(RYZOM_CLIENT_RELEASENOTES_RING_URL "https://open.ryzom.dev/releasenotes_ring/index.php" CACHE STRING "Ryzom Client Release Notes URL")
#----------------------------------------------------------------------------- #-----------------------------------------------------------------------------
# urls when compiling ryzom live client # urls when compiling ryzom live client
IF(WITH_RYZOM_LIVE) IF(WITH_RYZOM_LIVE)
MESSAGE("Using RYZOM_LIVE urls") MESSAGE("Using RYZOM_LIVE urls")
SET(RYZOM_CLIENT_CREATE_ACCOUNT_URL "https://me.ryzom.com") SET(RYZOM_CLIENT_CREATE_ACCOUNT_URL "https://account.ryzom.com/signup/from_client.php")
SET(RYZOM_CLIENT_EDIT_ACCOUNT_URL "https://me.ryzom.com") SET(RYZOM_CLIENT_EDIT_ACCOUNT_URL "https://account.ryzom.com/payment_profile/index.php")
SET(RYZOM_CLIENT_FORGET_PASSWORD_URL "https://me.ryzom.com/?forget_password=1") SET(RYZOM_CLIENT_FORGET_PASSWORD_URL "https://account.ryzom.com/payment_profile/lost_secure_password.php")
SET(RYZOM_CLIENT_PATCH_URL "http://dl.ryzom.com/patch_live") SET(RYZOM_CLIENT_PATCH_URL "http://dl.ryzom.com/patch_live")
SET(RYZOM_CLIENT_APP_NAME "ryzom_live") SET(RYZOM_CLIENT_APP_NAME "ryzom_live")
SET(RYZOM_WEBIG_MAIN_URL "https://app.ryzom.com/") SET(RYZOM_CLIENT_RELEASENOTES_URL "https://app.ryzom.com/releasenotes/index.php")
SET(RYZOM_WEBIG_TRUSTED_DOMAIN "app.ryzom.com") SET(RYZOM_CLIENT_RELEASENOTES_RING_URL "https://app.ryzom.com/releasenotes_ring/index.php")
ENDIF() ENDIF()
#----------------------------------------------------------------------------- #-----------------------------------------------------------------------------
@ -160,28 +130,6 @@ IF(WIN32)
ENDIF() ENDIF()
ENDIF() ENDIF()
IF(HUNTER_ENABLED)
## TODO: hack for freetype hunter package
SET(ON 1)
##
HUNTER_ADD_PACKAGE(ZLIB)
FIND_PACKAGE(ZLIB CONFIG REQUIRED)
SET(ZLIB_LIBRARY ZLIB::zlib)
HUNTER_ADD_PACKAGE(libxml2)
FIND_PACKAGE(libxml2 CONFIG REQUIRED)
SET(LIBXML2_LIBRARIES ${LIBXML2_LIBRARIES} libxml2::libxml2)
HUNTER_ADD_PACKAGE(OpenSSL)
FIND_PACKAGE(OpenSSL REQUIRED)
# TODO: is OpenSSL::Crypto only needed for WIN32?
SET(OPENSSL_LIBRARIES OpenSSL::SSL OpenSSL::Crypto)
# for precompiled headers, not needed if using TARGET_PRECOMPILE_HEADERS() from cmake 3.16+
SET(ZLIB_INCLUDE_DIR ZLIB_ROOT/include)
SET(LIBXML2_INCLUDE_DIR ${LIBXML2_ROOT}/include/libxml2)
ELSE()
FIND_PACKAGE(ZLIB REQUIRED) FIND_PACKAGE(ZLIB REQUIRED)
FIND_PACKAGE(LibXml2 REQUIRED) FIND_PACKAGE(LibXml2 REQUIRED)
FIND_PACKAGE(PNG REQUIRED) FIND_PACKAGE(PNG REQUIRED)
@ -192,7 +140,6 @@ FIND_PACKAGE(Jpeg)
IF(WIN32) IF(WIN32)
SET(OPENSSL_LIBRARIES ${OPENSSL_LIBRARIES} Crypt32.lib) SET(OPENSSL_LIBRARIES ${OPENSSL_LIBRARIES} Crypt32.lib)
ENDIF() ENDIF()
ENDIF() #hunter
IF(WITH_LIBOVR) IF(WITH_LIBOVR)
FIND_PACKAGE(LibOVR) FIND_PACKAGE(LibOVR)
@ -286,7 +233,6 @@ ENDIF()
INCLUDE(FindHelpers) INCLUDE(FindHelpers)
#TODO: hunter qt package
IF(WITH_QT5) IF(WITH_QT5)
FIND_QT5() FIND_QT5()
ENDIF() ENDIF()
@ -298,7 +244,6 @@ IF(WITH_QT)
FIND_PACKAGE(Qt4 COMPONENTS QtCore QtGui QtXml QtOpenGL REQUIRED) FIND_PACKAGE(Qt4 COMPONENTS QtCore QtGui QtXml QtOpenGL REQUIRED)
ENDIF() ENDIF()
#TODO: hunter assimp package
IF(WITH_ASSIMP) IF(WITH_ASSIMP)
FIND_PACKAGE(assimp REQUIRED) FIND_PACKAGE(assimp REQUIRED)
ENDIF() ENDIF()
@ -308,20 +253,9 @@ IF(WITH_NEL)
FIND_PACKAGE(CppTest) FIND_PACKAGE(CppTest)
ENDIF() ENDIF()
IF(HUNTER_ENABLED) IF(WITH_GUI)
IF(WITH_GUI) FIND_PACKAGE(Luabind REQUIRED)
HUNTER_ADD_PACKAGE(luabind) ENDIF()
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) FIND_PACKAGE(CURL REQUIRED)
@ -372,7 +306,6 @@ IF(WITH_NEL)
ENDIF() ENDIF()
ENDIF() ENDIF()
ENDIF() ENDIF()
ENDIF() #hunter
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/nel/include) INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/nel/include)
ADD_SUBDIRECTORY(nel) ADD_SUBDIRECTORY(nel)

@ -0,0 +1,81 @@
# 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 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()
set( LUA_LIBRARIES "${LUA_LIBRARY}" CACHE STRING "Lua Libraries")
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_MATH_LIBRARY)

@ -10,18 +10,32 @@ MACRO(FIND_CORRECT_LUA_VERSION)
IF(LUABIND_LIBRARY_RELEASE MATCHES "\\.so") IF(LUABIND_LIBRARY_RELEASE MATCHES "\\.so")
INCLUDE(CheckDepends) INCLUDE(CheckDepends)
# check for Lua 5.3 # check for Lua 5.4
SET(LUA53_LIBRARIES liblua5.3 liblua-5.3 liblua.so.5.3) SET(LUA54_LIBRARIES liblua5.4 liblua-5.4 liblua.so.5.4)
FOREACH(_LIB ${LUA53_LIBRARIES}) FOREACH(_LIB ${LUA54_LIBRARIES})
CHECK_LINKED_LIBRARY(LUABIND_LIBRARY_RELEASE _LIB LUALIB_FOUND) CHECK_LINKED_LIBRARY(LUABIND_LIBRARY_RELEASE _LIB LUALIB_FOUND)
IF(LUALIB_FOUND) IF(LUALIB_FOUND)
MESSAGE(STATUS "Luabind is using Lua 5.3") MESSAGE(STATUS "Luabind is using Lua 5.4")
FIND_PACKAGE(Lua53 REQUIRED) FIND_PACKAGE(Lua54 REQUIRED)
BREAK() BREAK()
ENDIF() ENDIF()
ENDFOREACH() ENDFOREACH()
IF(NOT LUALIB_FOUND)
# check for Lua 5.3
SET(LUA53_LIBRARIES liblua5.3 liblua-5.3 liblua.so.5.3)
FOREACH(_LIB ${LUA53_LIBRARIES})
CHECK_LINKED_LIBRARY(LUABIND_LIBRARY_RELEASE _LIB LUALIB_FOUND)
IF(LUALIB_FOUND)
MESSAGE(STATUS "Luabind is using Lua 5.3")
FIND_PACKAGE(Lua53 REQUIRED)
BREAK()
ENDIF()
ENDFOREACH()
ENDIF()
IF(NOT LUALIB_FOUND) IF(NOT LUALIB_FOUND)
# check for Lua 5.2 # check for Lua 5.2
SET(LUA52_LIBRARIES liblua5.2 liblua-5.2 liblua.so.5.2) SET(LUA52_LIBRARIES liblua5.2 liblua-5.2 liblua.so.5.2)
@ -69,13 +83,7 @@ MACRO(FIND_CORRECT_LUA_VERSION)
ENDIF() ENDIF()
ELSE() ELSE()
# TODO: find a way to detect Lua version # TODO: find a way to detect Lua version
IF(HUNTER_ENABLED) IF(WITH_LUA53)
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) FIND_PACKAGE(Lua53 REQUIRED)
ELSEIF(WITH_LUA52) ELSEIF(WITH_LUA52)
FIND_PACKAGE(Lua52 REQUIRED) FIND_PACKAGE(Lua52 REQUIRED)
@ -95,21 +103,6 @@ ENDIF()
SET(LIBRARY_NAME_RELEASE) SET(LIBRARY_NAME_RELEASE)
SET(LIBRARY_NAME_DEBUG) SET(LIBRARY_NAME_DEBUG)
IF(WITH_LUA54)
IF(WITH_STLPORT)
LIST(APPEND LIBRARY_NAME_RELEASE luabind_stlport_lua54)
LIST(APPEND LIBRARY_NAME_DEBUG luabind_stlport_lua54d)
ENDIF()
LIST(APPEND LIBRARY_NAME_RELEASE luabind_lua54)
LIST(APPEND LIBRARY_NAME_DEBUG luabind_lua54d)
ENDIF()
IF(HUNTER_ENABLED)
LIST(APPEND LIBRARY_NAME_RELEASE luabind luabind09)
LIST(APPEND LIBRARY_NAME_DEBUG luabindd luabind09-d)
ENDIF()
IF(WITH_LUA53) IF(WITH_LUA53)
IF(WITH_STLPORT) IF(WITH_STLPORT)
LIST(APPEND LIBRARY_NAME_RELEASE luabind_stlport_lua53) LIST(APPEND LIBRARY_NAME_RELEASE luabind_stlport_lua53)

@ -501,17 +501,6 @@ IF(WINSDK_INCLUDE_DIR)
IF(WINSDK_VERSION STREQUAL "7.1" AND (MSVC11 OR MSVC12 OR MSVC14)) IF(WINSDK_VERSION STREQUAL "7.1" AND (MSVC11 OR MSVC12 OR MSVC14))
ADD_DEFINITIONS(-D_USING_V110_SDK71_) ADD_DEFINITIONS(-D_USING_V110_SDK71_)
ENDIF() 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() ELSE()
IF(NOT WindowsSDK_FIND_QUIETLY) IF(NOT WindowsSDK_FIND_QUIETLY)
MESSAGE(STATUS "Warning: Unable to find Windows SDK!") MESSAGE(STATUS "Warning: Unable to find Windows SDK!")

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

@ -1,537 +0,0 @@
# 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,22 +121,6 @@ MACRO(NL_ADD_RUNTIME_FLAGS name)
ENDMACRO(NL_ADD_RUNTIME_FLAGS) ENDMACRO(NL_ADD_RUNTIME_FLAGS)
MACRO(NL_ADD_STATIC_VID_DRIVERS name) 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(WITH_STATIC_DRIVERS)
IF(WIN32) IF(WIN32)
IF(WITH_DRIVER_DIRECT3D) IF(WITH_DRIVER_DIRECT3D)
@ -160,29 +144,9 @@ ELSE()
ENDIF() ENDIF()
ENDIF() ENDIF()
ENDIF() ENDIF()
ENDIF()#hunter
ENDMACRO(NL_ADD_STATIC_VID_DRIVERS) ENDMACRO(NL_ADD_STATIC_VID_DRIVERS)
MACRO(NL_ADD_STATIC_SND_DRIVERS name) 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(WITH_STATIC_DRIVERS)
IF(WIN32) IF(WIN32)
IF(WITH_DRIVER_DSOUND) IF(WITH_DRIVER_DSOUND)
@ -211,7 +175,6 @@ ELSE()
ENDIF() ENDIF()
ENDIF() ENDIF()
ENDIF() #hunter
ENDMACRO(NL_ADD_STATIC_SND_DRIVERS) ENDMACRO(NL_ADD_STATIC_SND_DRIVERS)
### ###
@ -286,8 +249,6 @@ MACRO(NL_SETUP_DEFAULT_OPTIONS)
OPTION(WITH_ASSIMP "Use assimp exporter" OFF) OPTION(WITH_ASSIMP "Use assimp exporter" OFF)
OPTION(WITH_LIBGSF "Use libgsf for max file library" OFF) OPTION(WITH_LIBGSF "Use libgsf for max file library" OFF)
OPTION(WITH_FFMPEG "Use ffmpeg for audio decoder" OFF)
### ###
# GUI toolkits # GUI toolkits
### ###
@ -321,7 +282,7 @@ MACRO(NL_SETUP_DEFAULT_OPTIONS)
OPTION(WITH_SNOWBALLS "Build Snowballs." OFF) OPTION(WITH_SNOWBALLS "Build Snowballs." OFF)
OPTION(WITH_TOOLS "Build Tools" OFF) OPTION(WITH_TOOLS "Build Tools" OFF)
OPTION(WITH_RYZOM_LIVE "Use ryzom.com urls" ON) OPTION(WITH_RYZOM_LIVE "Use ryzom.com urls" OFF)
ENDMACRO(NL_SETUP_DEFAULT_OPTIONS) ENDMACRO(NL_SETUP_DEFAULT_OPTIONS)
MACRO(NL_SETUP_NEL_DEFAULT_OPTIONS) MACRO(NL_SETUP_NEL_DEFAULT_OPTIONS)
@ -1232,11 +1193,7 @@ MACRO(SETUP_EXTERNAL)
ENDIF() ENDIF()
IF(WIN32) IF(WIN32)
IF (HUNTER_ENABLED) FIND_PACKAGE(External REQUIRED)
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 using custom boost, we need to define the right variables used by official boost CMake module
IF(DEFINED BOOST_DIR) IF(DEFINED BOOST_DIR)
@ -1279,7 +1236,7 @@ MACRO(SETUP_EXTERNAL)
IF(WIN32) IF(WIN32)
# Must include DXSDK before WINSDK # Must include DXSDK before WINSDK
FIND_PACKAGE(DirectXSDK) FIND_PACKAGE(DirectXSDK REQUIRED)
# IF(DXSDK_INCLUDE_DIR) # IF(DXSDK_INCLUDE_DIR)
# INCLUDE_DIRECTORIES(${DXSDK_INCLUDE_DIR}) # INCLUDE_DIRECTORIES(${DXSDK_INCLUDE_DIR})
# ENDIF() # ENDIF()
@ -1288,8 +1245,5 @@ MACRO(SETUP_EXTERNAL)
IF(MSVC) IF(MSVC)
FIND_PACKAGE(MSVC REQUIRED) FIND_PACKAGE(MSVC REQUIRED)
FIND_PACKAGE(WindowsSDK REQUIRED) FIND_PACKAGE(WindowsSDK REQUIRED)
IF(NOT DXSDK_DIR)
MESSAGE(FATAL_ERROR "DirectX SDK or DirectX files from Windows SDK not found.")
ENDIF()
ENDIF() ENDIF()
ENDMACRO() ENDMACRO()

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

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

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

@ -10,25 +10,17 @@ IF(WIN32)
ENDIF() ENDIF()
IF(WITH_3D) IF(WITH_3D)
IF(HUNTER_ENABLED) FIND_PACKAGE(FreeType)
HUNTER_ADD_PACKAGE(freetype)
FIND_PACKAGE(freetype CONFIG REQUIRED)
SET(FREETYPE_LIBRARIES freetype::freetype)
ELSE()
FIND_PACKAGE(FreeType)
ENDIF() #hunter
IF(WITH_NEL_CEGUI) IF(WITH_NEL_CEGUI)
FIND_PACKAGE(CEGUI) FIND_PACKAGE(CEGUI)
ENDIF() ENDIF()
ENDIF() ENDIF()
IF(WITH_SOUND AND NOT HUNTER_ENABLED) IF(WITH_SOUND)
FIND_PACKAGE(Ogg) FIND_PACKAGE(Ogg)
FIND_PACKAGE(Vorbis) FIND_PACKAGE(Vorbis)
IF(WITH_FFMPEG) FIND_PACKAGE(FFmpeg COMPONENTS AVCODEC AVFORMAT AVUTIL SWRESAMPLE)
FIND_PACKAGE(FFmpeg REQUIRED COMPONENTS AVCODEC AVFORMAT AVUTIL SWRESAMPLE)
ENDIF()
IF(WITH_DRIVER_OPENAL) IF(WITH_DRIVER_OPENAL)
FIND_PACKAGE(OpenAL) FIND_PACKAGE(OpenAL)

@ -134,16 +134,6 @@ namespace NLGUI
void setTexturePushed(const std::string &l, const std::string &m, const std::string &r); void setTexturePushed(const std::string &l, const std::string &m, const std::string &r);
void setTextureOver(const std::string &l, const std::string &m, const std::string &r); void setTextureOver(const std::string &l, const std::string &m, const std::string &r);
// lua
void setTextureLua (const std::string &name);
void setTexturePushedLua (const std::string &name);
void setTextureOverLua (const std::string &name);
// return texture _l.tga
std::string getTexture () const;
std::string getTexturePushed () const;
std::string getTextureOver() const;
int luaGetViewText(CLuaState &ls); int luaGetViewText(CLuaState &ls);
REFLECT_EXPORT_START(CCtrlTextButton, CCtrlBaseButton) REFLECT_EXPORT_START(CCtrlTextButton, CCtrlBaseButton)
@ -158,9 +148,6 @@ namespace NLGUI
REFLECT_SINT32("wmin", getWMin, setWMin) REFLECT_SINT32("wmin", getWMin, setWMin)
REFLECT_SINT32("hmin", getHMin, setHMin) REFLECT_SINT32("hmin", getHMin, setHMin)
REFLECT_LUA_METHOD("getViewText", luaGetViewText) REFLECT_LUA_METHOD("getViewText", luaGetViewText)
REFLECT_STRING("texture", getTexture, setTextureLua);
REFLECT_STRING("texture_pushed", getTexturePushed, setTexturePushedLua);
REFLECT_STRING("texture_over", getTextureOver, setTextureOverLua);
REFLECT_EXPORT_END REFLECT_EXPORT_END
void onRemoved(); void onRemoved();

@ -85,7 +85,10 @@ namespace NLGUI
/// Language code of the browser( e.g.: en, hu ) /// Language code of the browser( e.g.: en, hu )
std::string languageCode; std::string languageCode;
/// List of domains the widget can consider secure. /// List of domains the widget can consider secure.
std::vector< std::string > trustedDomains; std::vector<std::string> trustedDomains;
/// Web server
std::string webServer;
std::string webServerDomain;
/// Maximum concurrent MultiCurl connections per CGroupHTML instance /// Maximum concurrent MultiCurl connections per CGroupHTML instance
sint32 curlMaxConnections; sint32 curlMaxConnections;
@ -391,9 +394,6 @@ namespace NLGUI
CSSBackgroundRenderer m_HtmlBackground; CSSBackgroundRenderer m_HtmlBackground;
CSSBackgroundRenderer m_BodyBackground; CSSBackgroundRenderer m_BodyBackground;
// active table.tr background color from css or from bgcolor attribute
std::vector<NLMISC::CRGBA> m_TableRowBackgroundColor;
// Valid base href was found // Valid base href was found
bool _IgnoreBaseUrlTag; bool _IgnoreBaseUrlTag;
// Fragment from loading url // Fragment from loading url
@ -969,7 +969,6 @@ namespace NLGUI
// stop all curl downalods (html and data) // stop all curl downalods (html and data)
void releaseDownloads(); void releaseDownloads();
void releaseDataDownloads();
void checkDownloads(); void checkDownloads();
// _CurlWWW download finished // _CurlWWW download finished

@ -76,16 +76,16 @@ namespace NLGUI
void reindexChilds(); void reindexChilds();
// escape text tag or attribute value // escape text tag or attribute value
std::string htmlEscape(const std::string &val) const; std::string htmlEscape(std::string val, bool isAttribute = false) const;
// serialize element attributes as string // serialize element attributes as string
std::string serializeAttributes(bool escape = true) const; std::string serializeAttributes() const;
// serialize child elements as html string // serialize child elements as html string
std::string serializeChilds(bool escape = true) const; std::string serializeChilds() const;
// serialize itself and children as html string // serialize itself and children as html string
std::string serialize(bool escape = true) const; std::string serialize() const;
// debug // debug
std::string toString(bool tree = false, uint depth = 0) const; std::string toString(bool tree = false, uint depth = 0) const;

@ -3,7 +3,7 @@
// //
// This source file has been modified by the following contributors: // This source file has been modified by the following contributors:
// Copyright (C) 2013-2014 Laszlo KIS-ADAM (dfighter) <dfighter1985@gmail.com> // 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 // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as // it under the terms of the GNU Affero General Public License as
@ -383,7 +383,6 @@ namespace NLGUI
void dummySet(const std::string &value); void dummySet(const std::string &value);
public: public:
// export some properties // export some properties
REFLECT_EXPORT_START(CInterfaceElement, CReflectable) REFLECT_EXPORT_START(CInterfaceElement, CReflectable)
REFLECT_BOOL ("active", getActive, setActive); REFLECT_BOOL ("active", getActive, setActive);
@ -398,6 +397,7 @@ namespace NLGUI
REFLECT_SINT32 ("h_real", getHReal, dummySet); REFLECT_SINT32 ("h_real", getHReal, dummySet);
REFLECT_STRING ("id", getIdByValue, dummySet); REFLECT_STRING ("id", getIdByValue, dummySet);
REFLECT_STRING ("sizeref", getSizeRefAsString, setSizeRef); REFLECT_STRING ("sizeref", getSizeRefAsString, setSizeRef);
REFLECT_STRING ("posparent", getPosParent, setPosParent);
REFLECT_LUA_METHOD("updateCoords", luaUpdateCoords); REFLECT_LUA_METHOD("updateCoords", luaUpdateCoords);
REFLECT_LUA_METHOD("invalidateCoords", luaInvalidateCoords); REFLECT_LUA_METHOD("invalidateCoords", luaInvalidateCoords);
REFLECT_LUA_METHOD("invalidateContent", luaInvalidateContent); REFLECT_LUA_METHOD("invalidateContent", luaInvalidateContent);
@ -525,6 +525,8 @@ namespace NLGUI
void setSizeParent( const std::string &id ); void setSizeParent( const std::string &id );
void getSizeParent( std::string &id ) const; void getSizeParent( std::string &id ) const;
std::string getPosParent() const;
void setSerializable( bool b ){ serializable = b; } void setSerializable( bool b ){ serializable = b; }
bool IsSerializable() const{ return serializable; } bool IsSerializable() const{ return serializable; }

@ -119,8 +119,8 @@ namespace NLGUI
void enableStringSelection(uint start, uint end); void enableStringSelection(uint start, uint end);
void disableStringSelection(); void disableStringSelection();
/// Get displayed text /// Get
std::string getText() const { return _Text; } std::string getText() const { return _HardText.empty() ? _Text : _HardText; }
#ifdef RYZOM_LUA_UCSTRING #ifdef RYZOM_LUA_UCSTRING
ucstring getTextAsUtf16() const; // Compatibility ucstring getTextAsUtf16() const; // Compatibility
ucstring getHardTextAsUtf16() const; // Compatibility ucstring getHardTextAsUtf16() const; // Compatibility
@ -188,7 +188,6 @@ namespace NLGUI
/// From a line number, get the character at which it ends (not including any '\n' ), or -1 if invalid /// 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; 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; } std::string getHardText() const { return _HardText.empty() ? _Text : _HardText; }
void setHardText (const std::string &ht); //< Localizes strings starting with "ui" void setHardText (const std::string &ht); //< Localizes strings starting with "ui"
#ifdef RYZOM_LUA_UCSTRING #ifdef RYZOM_LUA_UCSTRING
@ -283,10 +282,8 @@ namespace NLGUI
bool _FontSizeCoef; bool _FontSizeCoef;
bool _Embolden; bool _Embolden;
bool _Oblique; bool _Oblique;
// width of the font in pixel. // width of the font in pixel. Just a Hint for tabing format (computed with '_')
float _FontWidth; float _FontWidth;
// width of tabs
float _TabWidth;
// strings to use when computing font size // strings to use when computing font size
std::string _FontSizingChars; std::string _FontSizingChars;
std::string _FontSizingFallback; std::string _FontSizingFallback;

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

@ -3,6 +3,7 @@
// //
// This source file has been modified by the following contributors: // This source file has been modified by the following contributors:
// Copyright (C) 2013 Laszlo KIS-ADAM (dfighter) <dfighter1985@gmail.com> // 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 // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as // 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, 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, 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, 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: // This source file has been modified by the following contributors:
// Copyright (C) 2013 Laszlo KIS-ADAM (dfighter) <dfighter1985@gmail.com> // 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 // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as // it under the terms of the GNU Affero General Public License as
@ -96,7 +97,7 @@ public:
_Property = 0; _Property = 0;
_oldProperty = 0; _oldProperty = 0;
_Type = UNKNOWN; _Type = UNKNOWN;
m_Nullable = false; _Nullable = false;
_Changed = false; _Changed = false;
_LastChangeGC = 0; _LastChangeGC = 0;
} }
@ -237,7 +238,7 @@ private:
EPropType _Type; EPropType _Type;
/// nullable /// nullable
bool m_Nullable; bool _Nullable;
/// true if this value has changed /// true if this value has changed
bool _Changed; bool _Changed;

@ -380,7 +380,7 @@ extern bool _assertex_stop_1(bool &ignoreNextTime);
#define nlassume(exp) do { } while (0) #define nlassume(exp) do { } while (0)
#endif #endif
#ifdef NL_NO_ASSERT #ifdef NL_NO_DEBUG
# define nlassert(exp) nlassume(exp) # define nlassert(exp) nlassume(exp)
# define nlassertonce(exp) nlassume(exp) # define nlassertonce(exp) nlassume(exp)
# define nlassertex(exp, str) nlassume(exp) # define nlassertex(exp, str) nlassume(exp)

@ -25,6 +25,7 @@
#include "debug.h" #include "debug.h"
#include "common.h" #include "common.h"
#include "stream.h" #include "stream.h"
#include "wang_hash.h"
namespace NLMISC { namespace NLMISC {
@ -577,6 +578,7 @@ public:
};*/ };*/
// Traits for hash_map using CEntityId // Traits for hash_map using CEntityId
#if 0
struct CEntityIdHashMapTraits struct CEntityIdHashMapTraits
{ {
enum { bucket_size = 4, min_buckets = 8 }; enum { bucket_size = 4, min_buckets = 8 };
@ -596,7 +598,27 @@ struct CEntityIdHashMapTraits
return id1.getShortId() < id2.getShortId(); 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) /*inline std::stringstream &operator << (std::stringstream &__os, const CEntityId &__t)
{ {

@ -71,11 +71,8 @@ public:
*/ */
void registerClass(const KeyType &key, IFactoryRegister<BaseClass> *factoryRegister) 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());
//nlassert(_FactoryRegisters.find(key) == _FactoryRegisters.end()); _FactoryRegisters.insert(std::make_pair(key, factoryRegister));
//_FactoryRegisters.insert(std::make_pair(key, factoryRegister));
if (_FactoryRegisters.find(key) == _FactoryRegisters.end())
_FactoryRegisters.insert(std::make_pair(key, factoryRegister));
} }
/** Create a new instance of a factorable object. /** Create a new instance of a factorable object.

@ -174,6 +174,10 @@
# define NL_COMP_GCC # define NL_COMP_GCC
#endif #endif
#if defined(_HAS_CPP0X) || defined(__GXX_EXPERIMENTAL_CXX0X__) || (defined(NL_COMP_VC_VERSION) && NL_COMP_VC_VERSION >= 110)
# define NL_ISO_CPP0X_AVAILABLE
#endif
#if defined(NL_COMP_GCC) && (__cplusplus >= 201103L) #if defined(NL_COMP_GCC) && (__cplusplus >= 201103L)
# define NL_NO_EXCEPTION_SPECS # define NL_NO_EXCEPTION_SPECS
#endif #endif
@ -229,10 +233,6 @@
# endif # endif
#endif #endif
#if defined(_HAS_CPP0X) || defined(__GXX_EXPERIMENTAL_CXX0X__) || (defined(NL_COMP_VC_VERSION) && NL_COMP_VC_VERSION >= 110) || (defined(NL_COMP_GCC) && (GCC_VERSION >= 40400) && (__cplusplus >= 201103L))
# define NL_ISO_CPP0X_AVAILABLE
#endif
// Remove stupid Visual C++ warnings // Remove stupid Visual C++ warnings
#ifdef NL_OS_WINDOWS #ifdef NL_OS_WINDOWS
# pragma warning (disable : 4503) // STL: Decorated name length exceeded, name was truncated # pragma warning (disable : 4503) // STL: Decorated name length exceeded, name was truncated
@ -274,7 +274,7 @@
//#define NL_NO_DEBUG //#define NL_NO_DEBUG
#undef NL_NO_DEBUG #undef NL_NO_DEBUG
#define NL_NO_ASSERT
// Standard types // Standard types

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

@ -72,4 +72,3 @@
#endif // XML_MACROS_H #endif // XML_MACROS_H

@ -1,6 +1,9 @@
// NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/> // NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
// Copyright (C) 2010 Winch Gate Property Limited // 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 // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as // it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the // published by the Free Software Foundation, either version 3 of the
@ -92,6 +95,11 @@ public:
/// exchange memory data /// exchange memory data
void swap(CMessage &other); 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 /// 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); void setType (const std::string &name, TMessageType type=OneWay);

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

@ -34,7 +34,7 @@ class CCurlHttpClient
public: public:
/// Constructor /// Constructor
CCurlHttpClient() : _CurlStruct(NULL), m_Verify(true) {} CCurlHttpClient() : _CurlStruct(NULL) {}
/// Connect to an http server (string by val is intended). If you specify a whole URL, an attempt will be made to determine the server. /// Connect to an http server (string by val is intended). If you specify a whole URL, an attempt will be made to determine the server.
bool connect(const std::string &server); bool connect(const std::string &server);
@ -63,8 +63,6 @@ public:
/// Disconnect if connected (otherwise does nothing) /// Disconnect if connected (otherwise does nothing)
void disconnect(); void disconnect();
const char *lastError() { return &m_ErrorBuf[0]; }
protected: protected:
/// Helper /// Helper
@ -80,10 +78,6 @@ private:
std::vector<uint8> _ReceiveBuffer; std::vector<uint8> _ReceiveBuffer;
std::string _Auth; // must be kept here because curl only stores the char pointer std::string _Auth; // must be kept here because curl only stores the char pointer
std::vector<char> m_ErrorBuf;
bool m_Verify;
}; };
extern CCurlHttpClient CurlHttpClient; extern CCurlHttpClient CurlHttpClient;

@ -4,7 +4,6 @@ ADD_EXECUTABLE(nl_sample_font WIN32 ${SRC})
ADD_DEFINITIONS(-DFONT_DIR="\\"${NL_SHARE_ABSOLUTE_PREFIX}/nl_sample_font/\\"") ADD_DEFINITIONS(-DFONT_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) TARGET_LINK_LIBRARIES(nl_sample_font nelmisc nel3d)
NL_DEFAULT_PROPS(nl_sample_font "NeL, Samples, 3D: Font") NL_DEFAULT_PROPS(nl_sample_font "NeL, Samples, 3D: Font")
NL_ADD_RUNTIME_FLAGS(nl_sample_font) NL_ADD_RUNTIME_FLAGS(nl_sample_font)

@ -999,9 +999,6 @@ private:
bool createWindow(const GfxMode& mode); bool createWindow(const GfxMode& mode);
bool destroyWindow(); bool destroyWindow();
// Return monitor info and positon in multi monitor setup or false if monitor not found.
bool getMonitorByName(const std::string &name, sint32 &x, sint32 &y, uint32 &w, uint32 &h) const;
enum EWindowStyle { EWSWindowed, EWSFullscreen }; enum EWindowStyle { EWSWindowed, EWSFullscreen };
void setWindowSize(uint32 width, uint32 height); void setWindowSize(uint32 width, uint32 height);

@ -1,5 +1,5 @@
// NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/> // NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
// Copyright (C) 2010-2020 Winch Gate Property Limited // Copyright (C) 2010-2017 Winch Gate Property Limited
// //
// This source file has been modified by the following contributors: // This source file has been modified by the following contributors:
// Copyright (C) 2010 Robert TIMM (rti) <mail@rtti.de> // Copyright (C) 2010 Robert TIMM (rti) <mail@rtti.de>

@ -650,6 +650,8 @@ bool CDriverGL::setDisplay(nlWindow wnd, const GfxMode &mode, bool show, bool re
_win = EmptyWindow; _win = EmptyWindow;
_CurrentMode = mode;
_WindowVisible = false; _WindowVisible = false;
_Resizable = resizeable; _Resizable = resizeable;
_DestroyWindow = false; _DestroyWindow = false;
@ -1192,8 +1194,6 @@ bool CDriverGL::saveScreenMode()
#ifdef HAVE_XRANDR #ifdef HAVE_XRANDR
// TODO: if using mode switching, save current xrandr mode to _OldSizeID
res = true;
if (!res && _xrandr_version > 0) if (!res && _xrandr_version > 0)
{ {
XRRScreenConfiguration *screen_config = XRRGetScreenInfo(_dpy, RootWindow(_dpy, screen)); XRRScreenConfiguration *screen_config = XRRGetScreenInfo(_dpy, RootWindow(_dpy, screen));
@ -1254,8 +1254,6 @@ bool CDriverGL::restoreScreenMode()
#ifdef HAVE_XRANDR #ifdef HAVE_XRANDR
// TODO: if using mode switching, then restore mode from _OldSizeID
res = true;
if (!res && _xrandr_version > 0) if (!res && _xrandr_version > 0)
{ {
Window root = RootWindow(_dpy, screen); Window root = RootWindow(_dpy, screen);
@ -1350,8 +1348,7 @@ bool CDriverGL::setScreenMode(const GfxMode &mode)
&& mode.Width == previousMode.Width && mode.Width == previousMode.Width
&& mode.Height == previousMode.Height && mode.Height == previousMode.Height
&& mode.Depth == previousMode.Depth && mode.Depth == previousMode.Depth
&& mode.Frequency == previousMode.Frequency && mode.Frequency == previousMode.Frequency)
&& mode.DisplayDevice == previousMode.DisplayDevice)
return true; return true;
#if defined(NL_OS_WINDOWS) #if defined(NL_OS_WINDOWS)
@ -1391,8 +1388,6 @@ bool CDriverGL::setScreenMode(const GfxMode &mode)
bool found = false; bool found = false;
#ifdef HAVE_XRANDR #ifdef HAVE_XRANDR
// TODO: implement mode switching using xrandr crts
found = true;
if (!found && _xrandr_version > 0) if (!found && _xrandr_version > 0)
{ {
@ -1916,92 +1911,8 @@ bool CDriverGL::setWindowStyle(EWindowStyle windowStyle)
return true; return true;
} }
bool CDriverGL::getMonitorByName(const std::string &name, sint32 &x, sint32 &y, uint32 &w, uint32 &h) const
{
bool found = false;
#if HAVE_XRANDR
int screen = DefaultScreen(_dpy);
// xrandr 1.5+
if (_xrandr_version >= 105)
{
int nmonitors = 0;
XRRMonitorInfo *monitor = XRRGetMonitors(_dpy, RootWindow(_dpy, screen), 1, &nmonitors);
if (!monitor)
return false;
for(sint i = 0; i< nmonitors; ++i)
{
char* pname = XGetAtomName(_dpy, monitor[i].name);
found = (nlstricmp(pname, name) == 0);
XFree(pname);
if (found)
{
x = monitor[i].x;
y = monitor[i].y;
w = monitor[i].width;
h = monitor[i].height;
break;
}
}
XRRFreeMonitors(monitor);
}
else
{
XRRScreenResources *resources = XRRGetScreenResourcesCurrent(_dpy, RootWindow(_dpy, screen));
if (!resources)
resources = XRRGetScreenResources(_dpy, RootWindow(_dpy, screen));
for(uint i = 0; i < resources->noutput; ++i)
{
XRROutputInfo *output = XRRGetOutputInfo(_dpy, resources, resources->outputs[i]);
if (!output)
continue;
if (output->crtc && output->connection == RR_Connected && nlstricmp(name, output->name) == 0)
{
// physical monitor
XRRCrtcInfo *crtc = XRRGetCrtcInfo(_dpy, resources, output->crtc);
if (crtc)
{
found = true;
x = crtc->x;
y = crtc->y;
// TODO: test rotation
if (crtc->rotation == RR_Rotate_0 || crtc->rotation == RR_Rotate_180)
{
w = crtc->width;
h = crtc->height;
}
else
{
w = crtc->height;
h = crtc->width;
}
XRRFreeCrtcInfo(crtc);
}
}
XRRFreeOutputInfo(output);
if (found)
break;
}
XRRFreeScreenResources(resources);
}
#endif
return found;
}
// -------------------------------------------------- // --------------------------------------------------
bool CDriverGL::setMode(const GfxMode& amode) bool CDriverGL::setMode(const GfxMode& mode)
{ {
H_AUTO_OGL(CDriverGL_setMode); H_AUTO_OGL(CDriverGL_setMode);
@ -2009,10 +1920,6 @@ bool CDriverGL::setMode(const GfxMode& amode)
if (!_DestroyWindow) if (!_DestroyWindow)
return true; return true;
#if !(HAVE_XRANDR)
const GfxMode &mode = amode;
#endif
#if defined(NL_OS_WINDOWS) #if defined(NL_OS_WINDOWS)
// save relative cursor // save relative cursor
POINT cursorPos; POINT cursorPos;
@ -2022,92 +1929,21 @@ bool CDriverGL::setMode(const GfxMode& amode)
BOOL cursorPosOk = isSystemCursorInClientArea() BOOL cursorPosOk = isSystemCursorInClientArea()
&& GetCursorPos(&cursorPos) && GetCursorPos(&cursorPos)
&& ScreenToClient(_win, &cursorPos); && ScreenToClient(_win, &cursorPos);
// FIXME: this probably needs to use _CurrentMode instead of mode
sint curX = (sint)cursorPos.x * (sint)mode.Width; sint curX = (sint)cursorPos.x * (sint)mode.Width;
sint curY = (sint)cursorPos.y * (sint)mode.Height; sint curY = (sint)cursorPos.y * (sint)mode.Height;
#endif #endif
#if HAVE_XRANDR
GfxMode mode = amode;
if (!mode.Windowed)
{
GfxMode current;
if (!getCurrentScreenMode(current))
nlinfo("3D: XrandR: Reading active monitor info failed");
sint newX = _WindowX;
sint newY = _WindowY;
// make sure resolution matches requested or currently active monitor's resolution
mode.Width = current.Width;
mode.Height = current.Height;
if (!mode.DisplayDevice.empty())
{
uint newW = current.Width;
uint newH = current.Height;
if (getMonitorByName(mode.DisplayDevice, newX, newY, newW, newH))
{
mode.Width = newW;
mode.Height = newH;
}
else
{
nlinfo("3D: XrandR: Reading requested monitor '%s' info failed, using '%s'", mode.DisplayDevice.c_str(), current.DisplayDevice.c_str());
mode.DisplayDevice = current.DisplayDevice;
}
}
// switching monitors.
// first move mouse pointer to target monitor and then move window.
// 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;
uint mouseY = mode.Height / 2;
XWindowAttributes xwa;
XGetWindowAttributes(_dpy, _win, &xwa);
if (xwa.map_state != IsUnmapped)
{
Window root_win;
Window child_win;
sint root_x, root_y, win_x, win_y;
uint mask;
Bool res = XQueryPointer(_dpy, _win, &root_win, &child_win, &root_x, &root_y, &win_x, &win_y, &mask);
if (res)
{
mouseX = (uint)((float)win_x * mode.Width / current.Width);
mouseY = (uint)((float)win_y * mode.Height / current.Height);
}
}
XWarpPointer(_dpy, None, root, None, None, None, None, newX + mouseX, newY + mouseY);
XMoveWindow(_dpy, _win, newX, newY);
_WindowX = newX;
_WindowY = newY;
setWindowStyle(EWSFullscreen);
}
}
#endif
if (!setScreenMode(mode)) if (!setScreenMode(mode))
return false; return false;
_CurrentMode.Depth = mode.Depth;
_CurrentMode.Frequency = mode.Frequency;
_CurrentMode.DisplayDevice = mode.DisplayDevice;
// when changing window style, it's possible system change window size too // when changing window style, it's possible system change window size too
setWindowStyle(mode.Windowed ? EWSWindowed : EWSFullscreen); setWindowStyle(mode.Windowed ? EWSWindowed : EWSFullscreen);
setWindowPos(_WindowX, _WindowY);
if (!mode.Windowed)
_CurrentMode.Depth = mode.Depth;
setWindowSize(mode.Width, mode.Height); setWindowSize(mode.Width, mode.Height);
setWindowPos(_WindowX, _WindowY);
switch (_CurrentMode.Depth) switch (_CurrentMode.Depth)
{ {
@ -2284,66 +2120,6 @@ bool CDriverGL::getModes(std::vector<GfxMode> &modes)
int screen = DefaultScreen(_dpy); int screen = DefaultScreen(_dpy);
#if defined(HAVE_XRANDR) #if defined(HAVE_XRANDR)
if (_xrandr_version >= 105)
{
int nmonitors = 0;
// virtual monitors
XRRMonitorInfo *monitor = XRRGetMonitors(_dpy, RootWindow(_dpy, screen), 1, &nmonitors);
for(sint i = 0; i < nmonitors; ++i)
{
char * name = XGetAtomName(_dpy, monitor[i].name);
GfxMode mode;
mode.DisplayDevice = name;
mode.Width = monitor[i].width;
mode.Height = monitor[i].height;
mode.Frequency = 0;
modes.push_back(mode);
XFree(name);
}
XRRFreeMonitors(monitor);
}
else
{
XRRScreenResources *resources = XRRGetScreenResourcesCurrent(_dpy, RootWindow(_dpy, screen));
if (!resources)
resources = XRRGetScreenResources(_dpy, RootWindow(_dpy, screen));
std::map<int, int> resourceModeMap;
for(sint i = 0; i< resources->nmode; ++i)
resourceModeMap.insert(std::make_pair(resources->modes[i].id, i));
for(sint i = 0; i < resources->noutput; ++i)
{
XRROutputInfo *output = XRRGetOutputInfo(_dpy, resources, resources->outputs[i]);
if (!output)
continue;
if (output->crtc && output->connection == RR_Connected)
{
// physical monitor
XRRCrtcInfo *crtc = XRRGetCrtcInfo(_dpy, resources, output->crtc);
if (crtc)
{
std::map<int,int>::const_iterator it = resourceModeMap.find(crtc->mode);
if (it != resourceModeMap.end())
{
GfxMode mode;
mode.DisplayDevice = output->name;
mode.Width = resources->modes[it->second].width;
mode.Height = resources->modes[it->second].height;
mode.Frequency = 0;
modes.push_back(mode);
}
XRRFreeCrtcInfo(crtc);
}
}
XRRFreeOutputInfo(output);
}
XRRFreeScreenResources(resources);
}
found = modes.size() > 0;
if (!found && _xrandr_version >= 100) if (!found && _xrandr_version >= 100)
{ {
XRRScreenConfiguration *screen_config = XRRGetScreenInfo(_dpy, RootWindow(_dpy, screen)); XRRScreenConfiguration *screen_config = XRRGetScreenInfo(_dpy, RootWindow(_dpy, screen));
@ -2479,120 +2255,6 @@ bool CDriverGL::getCurrentScreenMode(GfxMode &mode)
int screen = DefaultScreen(_dpy); int screen = DefaultScreen(_dpy);
#ifdef HAVE_XRANDR #ifdef HAVE_XRANDR
int x = 0;
int y = 0;
Window child;
// get window position so we can compare monitors (or mouse position if window not visible yet)
XWindowAttributes xwa;
XGetWindowAttributes(_dpy, _win, &xwa);
if (xwa.map_state != IsUnmapped)
{
XTranslateCoordinates(_dpy, _win, xwa.root, xwa.x, xwa.y, &x, &y, &child);
}
else
{
sint rx, ry, wx, wy;
uint mask;
Bool res = XQueryPointer(_dpy, RootWindow(_dpy, screen), &child, &child, &rx, &ry, &wx, &wy, &mask);
if (res)
{
x = rx;
y = ry;
}
}
if (_xrandr_version >= 105)
{
int nmonitors = 0;
XRRMonitorInfo *monitor = XRRGetMonitors(_dpy, RootWindow(_dpy, screen), 1, &nmonitors);
if (monitor)
{
sint bestMatch = -1;
for(sint i = 0; i< nmonitors; ++i)
{
if ((x >= monitor[i].x && x < (monitor[i].x + monitor[i].width) &&
y >= monitor[i].y && y < (monitor[i].y + monitor[i].height)) ||
(monitor[i].primary && bestMatch == -1))
{
bestMatch = i;
}
}
// best match or primary monitor
if (bestMatch != -1)
{
found = true;
char* pname = XGetAtomName(_dpy, monitor[bestMatch].name);
mode.DisplayDevice = pname;
mode.Width = monitor[bestMatch].width;
mode.Height = monitor[bestMatch].height;
mode.Windowed = _CurrentMode.Windowed;
mode.OffScreen = false;
mode.Depth = (uint) DefaultDepth(_dpy, screen);
mode.Frequency = 0;
XFree(pname);
}
XRRFreeMonitors(monitor);
}
}
else
{
XRRScreenResources *resources = XRRGetScreenResourcesCurrent(_dpy, RootWindow(_dpy, screen));
if (!resources)
resources = XRRGetScreenResources(_dpy, RootWindow(_dpy, screen));
for(uint i = 0; i < resources->noutput; ++i)
{
XRROutputInfo *output = XRRGetOutputInfo(_dpy, resources, resources->outputs[i]);
if (!output)
continue;
if (output->crtc && output->connection == RR_Connected)
{
XRRCrtcInfo *crtc = XRRGetCrtcInfo(_dpy, resources, output->crtc);
if (crtc)
{
sint width, height;
bool match = false;
// TODO: test rotation
if (crtc->rotation == RR_Rotate_0 || crtc->rotation == RR_Rotate_180)
{
width = crtc->width;
height = crtc->height;
}
else
{
width = crtc->height;
height = crtc->width;
}
if (x >= crtc->x && y >= crtc->y && x < (crtc->x + width) && y < (crtc->y + height))
{
found = true;
mode.DisplayDevice = output->name;
mode.Width = width;
mode.Height = height;
mode.Windowed = _CurrentMode.Windowed;
mode.OffScreen = false;
mode.Depth = (uint) DefaultDepth(_dpy, screen);
mode.Frequency = 0;
}
XRRFreeCrtcInfo(crtc);
}
}
XRRFreeOutputInfo(output);
if (found)
break;
}
XRRFreeScreenResources(resources);
}
if (!found && _xrandr_version > 0) if (!found && _xrandr_version > 0)
{ {
@ -2770,6 +2432,7 @@ void CDriverGL::setWindowPos(sint32 x, sint32 y)
_DecorationWidth = -1; _DecorationWidth = -1;
_DecorationHeight = -1; _DecorationHeight = -1;
} }
XMoveWindow(_dpy, _win, x, y); XMoveWindow(_dpy, _win, x, y);
} }
@ -3108,24 +2771,13 @@ void CDriverGL::setWindowSize(uint32 width, uint32 height)
SetWindowPos(_win, NULL, 0, 0, rc.right - rc.left, rc.bottom - rc.top, flags); SetWindowPos(_win, NULL, 0, 0, rc.right - rc.left, rc.bottom - rc.top, flags);
// init window width and height // init window width and height
if (_CurrentMode.Windowed) RECT clientRect;
{ GetClientRect(_win, &clientRect);
// TODO: this gives wrong info for initial fullscreen window so limit for windowed only for now _CurrentMode.Width = uint16(clientRect.right-clientRect.left);
RECT clientRect; _CurrentMode.Height = uint16(clientRect.bottom-clientRect.top);
GetClientRect(_win, &clientRect); GetWindowRect(_win, &clientRect);
_CurrentMode.Width = uint16(clientRect.right-clientRect.left); _WindowX = clientRect.left;
_CurrentMode.Height = uint16(clientRect.bottom-clientRect.top); _WindowY = clientRect.top;
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) #elif defined(NL_OS_MAC)

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

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

@ -331,7 +331,6 @@ bool CDriverUser::getCurrentScreenMode(CMode &mode)
GfxMode gfxMode; GfxMode gfxMode;
bool res= _Driver->getCurrentScreenMode(gfxMode); bool res= _Driver->getCurrentScreenMode(gfxMode);
mode.Windowed= gfxMode.Windowed; mode.Windowed= gfxMode.Windowed;
mode.DisplayDevice= gfxMode.DisplayDevice;
mode.Width= gfxMode.Width; mode.Width= gfxMode.Width;
mode.Height= gfxMode.Height; mode.Height= gfxMode.Height;
mode.Depth= gfxMode.Depth; mode.Depth= gfxMode.Depth;

@ -981,11 +981,10 @@ void CLodCharacterManager::addTextureCompute(CLodCharacterInstance &instance,
return; return;
// get lookup ptr. // get lookup ptr.
nlassert(lodTexture.Texture.size()==NL3D_CLOD_TEXT_SIZE);
if (lodTexture.Texture.size() < NL3D_CLOD_TEXT_SIZE) if (lodTexture.Texture.size() < NL3D_CLOD_TEXT_SIZE)
return; return;
nlassert(lodTexture.Texture.size()==NL3D_CLOD_TEXT_SIZE);
const CLodCharacterTexture::CTUVQ *lookUpPtr= &lodTexture.Texture[0]; const CLodCharacterTexture::CTUVQ *lookUpPtr= &lodTexture.Texture[0];
// apply the lodTexture, taking only better quality (ie nearer 0) // apply the lodTexture, taking only better quality (ie nearer 0)

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

@ -1,5 +1,5 @@
// NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/> // NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
// Copyright (C) 2010-2020 Winch Gate Property Limited // Copyright (C) 2010 Winch Gate Property Limited
// //
// This source file has been modified by the following contributors: // This source file has been modified by the following contributors:
// Copyright (C) 2013 Jan BOON (Kaetemi) <jan.boon@kaetemi.be> // Copyright (C) 2013 Jan BOON (Kaetemi) <jan.boon@kaetemi.be>
@ -1751,7 +1751,7 @@ void CVegetableManager::swapIgRdrPassHardMode(CVegetableInstanceGroup *ig, uin
// *************************************************************************** // ***************************************************************************
void CVegetableManager::setGlobalDensity(float density) void CVegetableManager::setGlobalDensity(float density)
{ {
clamp(density, 0.f, 100.f); clamp(density, 0.f, 1.f);
_GlobalDensity= density; _GlobalDensity= density;
} }

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

@ -140,6 +140,13 @@ namespace NLGUI
// flush draw cache to ensure correct draw order // flush draw cache to ensure correct draw order
rVR.flush(); rVR.flush();
sint32 clipX, clipY, clipW, clipH;
if (m_Viewport)
{
rVR.getClipWindow(clipX, clipY, clipW, clipH);
rVR.setClipWindow(m_Viewport->getXReal(), m_Viewport->getYReal(), m_Viewport->getWReal(), m_Viewport->getHReal());
}
// TODO: no need for widget manager, if global color is set from parent // TODO: no need for widget manager, if global color is set from parent
CRGBA globalColor; CRGBA globalColor;
if (m_ModulateGlobalColor) if (m_ModulateGlobalColor)
@ -159,6 +166,9 @@ namespace NLGUI
// flush draw cache to ensure correct draw order // flush draw cache to ensure correct draw order
rVR.flush(); rVR.flush();
if (m_Viewport)
rVR.setClipWindow(clipX, clipY, clipW, clipH);
} }
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
@ -428,7 +438,7 @@ namespace NLGUI
if (bg.repeatX == CSS_VALUE_ROUND) 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; texW = areaW / numTiles;
if (bg.height.isAuto() && bg.repeatY != CSS_VALUE_ROUND) if (bg.height.isAuto() && bg.repeatY != CSS_VALUE_ROUND)
{ {
@ -439,7 +449,7 @@ namespace NLGUI
if (bg.repeatY == CSS_VALUE_ROUND) 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; texH = areaH / numTiles;
if (bg.width.isAuto() && bg.repeatX != CSS_VALUE_ROUND) 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) 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" "%", "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 pos = 0;
std::string::size_type len = value.size(); std::string::size_type len = value.size();

@ -1103,19 +1103,7 @@ namespace NLGUI
// first loop -> true // first loop -> true
// second loop -> false && break // second loop -> false && break
loop = !loop; loop = !loop;
if (next < parts.size())
if (next >= parts.size())
break;
val = toLower(parts[next]);
if (val == "center")
{
if (bgPositionX.empty()) bgPositionX = "center";
if (bgPositionY.empty()) bgPositionY = "center";
// consume 'center'
next++;
}
else if (val == "left" || val == "right")
{ {
val = toLowerAscii(parts[next]); val = toLowerAscii(parts[next]);
if (val == "center") if (val == "center")

@ -872,7 +872,6 @@ namespace NLGUI
if (CCtrlBase::handleEvent(event)) return true; if (CCtrlBase::handleEvent(event)) return true;
if (!_Active || _Frozen) if (!_Active || _Frozen)
return false; return false;
if (event.getType() == NLGUI::CEventDescriptor::mouse) if (event.getType() == NLGUI::CEventDescriptor::mouse)
{ {
const NLGUI::CEventDescriptorMouse &eventDesc = (const NLGUI::CEventDescriptorMouse &)event; const NLGUI::CEventDescriptorMouse &eventDesc = (const NLGUI::CEventDescriptorMouse &)event;
@ -1256,7 +1255,6 @@ namespace NLGUI
if(wReal <= maxWReal) if(wReal <= maxWReal)
return; return;
// compute the new ofsX. // compute the new ofsX.
sint32 ofsX= _Target->getOfsX(); sint32 ofsX= _Target->getOfsX();
ofsX+= dx; ofsX+= dx;

@ -1105,69 +1105,6 @@ namespace NLGUI
// *************************************************************************** // ***************************************************************************
void CCtrlTextButton::setTextureLua(const std::string &name)
{
_TextureIdNormal[0].setTexture(std::string(name + "_l.tga").c_str());
_TextureIdNormal[1].setTexture(std::string(name + "_m.tga").c_str());
_TextureIdNormal[2].setTexture(std::string(name + "_r.tga").c_str());
}
// ***************************************************************************
void CCtrlTextButton::setTexturePushedLua(const std::string &name)
{
_TextureIdPushed[0].setTexture(std::string(name + "_l.tga").c_str());
_TextureIdPushed[1].setTexture(std::string(name + "_m.tga").c_str());
_TextureIdPushed[2].setTexture(std::string(name + "_r.tga").c_str());
}
// ***************************************************************************
void CCtrlTextButton::setTextureOverLua(const std::string &name)
{
_TextureIdOver[0].setTexture(std::string(name + "_l.tga").c_str());
_TextureIdOver[1].setTexture(std::string(name + "_m.tga").c_str());
_TextureIdOver[2].setTexture(std::string(name + "_r.tga").c_str());
}
// ***************************************************************************
std::string CCtrlTextButton::getTexture() const
{
std::string tx = CViewRenderer::getInstance()->getTextureNameFromId(_TextureIdNormal[0]);
std::string::size_type i = tx.rfind("_l.tga");
if (i != std::string::npos)
tx = tx.substr(0, i);
return tx;
}
// ***************************************************************************
std::string CCtrlTextButton::getTexturePushed() const
{
std::string tx = CViewRenderer::getInstance()->getTextureNameFromId(_TextureIdOver[0]);
std::string::size_type i = tx.rfind("_l.tga");
if (i != std::string::npos)
tx = tx.substr(0, i);
return tx;
}
// ***************************************************************************
std::string CCtrlTextButton::getTextureOver() const
{
std::string tx = CViewRenderer::getInstance()->getTextureNameFromId(_TextureIdPushed[0]);
std::string::size_type i = tx.rfind("_l.tga");
if (i != std::string::npos)
tx = tx.substr(0, i);
return tx;
}
// ***************************************************************************
int CCtrlTextButton::luaGetViewText(CLuaState &ls) int CCtrlTextButton::luaGetViewText(CLuaState &ls)
{ {
const char *funcName = "getViewText"; const char *funcName = "getViewText";

@ -299,11 +299,6 @@ namespace NLGUI
void CGroupHTML::ImageDownloadCB::finish() 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) // tmpdest file does not exist if download skipped (ie cache was used)
if (CFile::fileExists(tmpdest) || CFile::getFileSize(tmpdest) == 0) if (CFile::fileExists(tmpdest) || CFile::getFileSize(tmpdest) == 0)
{ {
@ -327,7 +322,7 @@ namespace NLGUI
// to temp file temporarily. that forces driver to reload texture from disk // to temp file temporarily. that forces driver to reload texture from disk
// ITexture::touch() seem not to do this. // ITexture::touch() seem not to do this.
// cache was updated, first set texture as temp file // cache was updated, first set texture as temp file
for(std::vector<SImageInfo>::iterator it = vec.begin(); it != vec.end(); ++it) for(std::vector<SImageInfo>::iterator it = Images.begin(); it != Images.end(); ++it)
{ {
SImageInfo &img = *it; SImageInfo &img = *it;
Parent->setImage(img.Image, tmpdest, img.Type); Parent->setImage(img.Image, tmpdest, img.Type);
@ -344,7 +339,7 @@ namespace NLGUI
} }
// even if image was cached, incase there was 'http://' image set to CViewBitmap // even if image was cached, incase there was 'http://' image set to CViewBitmap
for(std::vector<SImageInfo>::iterator it = vec.begin(); it != vec.end(); ++it) for(std::vector<SImageInfo>::iterator it = Images.begin(); it != Images.end(); ++it)
{ {
SImageInfo &img = *it; SImageInfo &img = *it;
Parent->setImage(img.Image, dest, img.Type); Parent->setImage(img.Image, dest, img.Type);
@ -408,8 +403,11 @@ namespace NLGUI
// Check if domain is on TrustedDomain // Check if domain is on TrustedDomain
bool CGroupHTML::isTrustedDomain(const string &domain) bool CGroupHTML::isTrustedDomain(const string &domain)
{ {
if (domain == options.webServerDomain)
return true;
vector<string>::iterator it; vector<string>::iterator it;
it = find ( options.trustedDomains.begin(), options.trustedDomains.end(), domain); it = find(options.trustedDomains.begin(), options.trustedDomains.end(), domain);
return it != options.trustedDomains.end(); return it != options.trustedDomains.end();
} }
@ -1058,13 +1056,6 @@ namespace NLGUI
_CurlWWW = NULL; _CurlWWW = NULL;
} }
releaseDataDownloads();
}
void CGroupHTML::releaseDataDownloads()
{
LOG_DL("Clear pointers to %d curls", Curls.size());
// remove all queued and already started downloads // remove all queued and already started downloads
for(std::list<CDataDownload*>::iterator it = Curls.begin(); it != Curls.end(); ++it) for(std::list<CDataDownload*>::iterator it = Curls.begin(); it != Curls.end(); ++it)
{ {
@ -3088,11 +3079,17 @@ namespace NLGUI
_IgnoreHeadTag = false; _IgnoreHeadTag = false;
_IgnoreBaseUrlTag = false; _IgnoreBaseUrlTag = false;
_AutoIdSeq = 0; _AutoIdSeq = 0;
m_TableRowBackgroundColor.clear();
paragraphChange (); paragraphChange ();
releaseDataDownloads(); // 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();
}*/
} }
// *************************************************************************** // ***************************************************************************
@ -3421,6 +3418,16 @@ namespace NLGUI
string finalUrl; string finalUrl;
bool isLocal = lookupLocalFile (finalUrl, _URL.c_str(), true); 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; _URL = finalUrl;
CUrlParser uri (_URL); CUrlParser uri (_URL);
@ -5318,7 +5325,7 @@ namespace NLGUI
string suri = elm.getAttribute("href"); string suri = elm.getAttribute("href");
if(suri.find("ah:") == 0) if(suri.find("ah:") == 0)
{ {
if (_TrustedDomain || suri.find("ah:script:") == 0) if (_TrustedDomain)
_Link.back() = suri; _Link.back() = suri;
} }
else else
@ -6183,13 +6190,11 @@ namespace NLGUI
void CGroupHTML::htmlOBJECTend(const CHtmlElement &elm) void CGroupHTML::htmlOBJECTend(const CHtmlElement &elm)
{ {
if (!_TrustedDomain)
return;
if (_ObjectType=="application/ryzom-data") if (_ObjectType=="application/ryzom-data")
{ {
if (!_TrustedDomain)
return;
if (!_ObjectData.empty()) if (!_ObjectData.empty())
{ {
if (addBnpDownload(_ObjectData, _ObjectAction, _ObjectScript, _ObjectMD5Sum)) if (addBnpDownload(_ObjectData, _ObjectAction, _ObjectScript, _ObjectMD5Sum))
@ -6199,20 +6204,6 @@ namespace NLGUI
_ObjectScript.clear(); _ObjectScript.clear();
} }
} }
else if (_ObjectType=="application/ryzom-tutorial")
{
while(strFindReplace(_ObjectScript, "[", ""));
while(strFindReplace(_ObjectScript, "]", ""));
CLuaManager::getInstance().executeLuaScript("\ngame:executeTutorial([["+_ObjectScript+"]])\n", true);
_ObjectScript.clear();
}
else if (_ObjectType=="application/ryzom-script")
{
while(strFindReplace(_ObjectScript, "[", ""));
while(strFindReplace(_ObjectScript, "]", ""));
CLuaManager::getInstance().executeLuaScript("\ngame:executeRyzomScript([["+_ObjectScript+"]])\n", true);
_ObjectScript.clear();
}
_Object = false; _Object = false;
} }
@ -6629,11 +6620,20 @@ namespace NLGUI
// *************************************************************************** // ***************************************************************************
void CGroupHTML::htmlTD(const CHtmlElement &elm) void CGroupHTML::htmlTD(const CHtmlElement &elm)
{ {
CRGBA rowColor = CRGBA::Transparent;
// remember row color so we can blend it with cell color
if (!_CellParams.empty())
rowColor = _CellParams.back().BgColor;
// Get cells parameters // Get cells parameters
getCellsParameters(elm, true); getCellsParameters(elm, true);
if (!m_TableRowBackgroundColor.empty() && m_TableRowBackgroundColor.back().A > 0) // if cell has own background,then it must be blended with row
_Style.Current.Background.color.blendFromui(m_TableRowBackgroundColor.back(), _Style.Current.Background.color, _Style.Current.Background.color.A); if (rowColor.A > 0 && _Style.Current.Background.color.A < 255)
{
_Style.Current.Background.color.blendFromui(rowColor,
_Style.Current.Background.color, _Style.Current.Background.color.A);
}
if (elm.ID == HTML_TH) if (elm.ID == HTML_TH)
{ {
@ -6798,7 +6798,7 @@ namespace NLGUI
_TextAreaTemplate = !templateName.empty() ? templateName : DefaultFormTextAreaGroup; _TextAreaTemplate = !templateName.empty() ? templateName : DefaultFormTextAreaGroup;
std::string content = strFindReplaceAll(elm.serializeChilds(false), std::string("\r"), std::string("")); std::string content = strFindReplaceAll(elm.serializeChilds(), std::string("\r"), std::string(""));
CInterfaceGroup *textArea = addTextArea (_TextAreaTemplate, _TextAreaName.c_str (), _TextAreaRow, _TextAreaCols, true, content, _TextAreaMaxLength); CInterfaceGroup *textArea = addTextArea (_TextAreaTemplate, _TextAreaName.c_str (), _TextAreaRow, _TextAreaCols, true, content, _TextAreaMaxLength);
if (textArea) if (textArea)
@ -6831,7 +6831,7 @@ namespace NLGUI
// if (!_ReadingHeadTag) return; // if (!_ReadingHeadTag) return;
// consume all child elements // consume all child elements
_TitleString = strFindReplaceAll(elm.serializeChilds(false), std::string("\t"), std::string(" ")); _TitleString = strFindReplaceAll(elm.serializeChilds(), std::string("\t"), std::string(" "));
_TitleString = strFindReplaceAll(_TitleString, std::string("\n"), std::string(" ")); _TitleString = strFindReplaceAll(_TitleString, std::string("\n"), std::string(" "));
setTitle(_TitleString); setTitle(_TitleString);
} }
@ -6849,9 +6849,6 @@ namespace NLGUI
// Get cells parameters // Get cells parameters
getCellsParameters(elm, true); getCellsParameters(elm, true);
m_TableRowBackgroundColor.push_back(_CellParams.back().BgColor);
_CellParams.back().BgColor = CRGBA::Transparent;
// TODO: this probably ends up in first cell // TODO: this probably ends up in first cell
renderPseudoElement(":before", elm); renderPseudoElement(":before", elm);
@ -6866,7 +6863,6 @@ namespace NLGUI
renderPseudoElement(":after", elm); renderPseudoElement(":after", elm);
popIfNotEmpty(_CellParams); popIfNotEmpty(_CellParams);
popIfNotEmpty(m_TableRowBackgroundColor);
} }
// *************************************************************************** // ***************************************************************************

@ -1,5 +1,5 @@
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/> // Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
// Copyright (C) 2010-2020 Winch Gate Property Limited // Copyright (C) 2010-2019 Winch Gate Property Limited
// //
// This source file has been modified by the following contributors: // This source file has been modified by the following contributors:
// Copyright (C) 2013 Laszlo KIS-ADAM (dfighter) <dfighter1985@gmail.com> // Copyright (C) 2013 Laszlo KIS-ADAM (dfighter) <dfighter1985@gmail.com>
@ -380,23 +380,6 @@ namespace NLGUI
if (pUG) if (pUG)
setUserGroupRight((uint)_Lines.size()-1, pUG, true); setUserGroupRight((uint)_Lines.size()-1, pUG, true);
} }
// usergroup from simple icon
CXMLAutoPtr icon((const char*) xmlGetProp (cur, (xmlChar*)"icon"));
if (icon)
{
typedef std::pair<std::string, std::string> TTmplParams;
std::vector<TTmplParams> vparams;
uint lineIndex = _Lines.size()-1;
vparams.push_back(TTmplParams("id", toString("icon%d", lineIndex)));
vparams.push_back(TTmplParams("sizeref", ""));
vparams.push_back(TTmplParams("icon_texture", (const char*)icon));
//vparams.push_back(TTmplParams("icon_color", options.ColorNormal.toString()));
string lineId = toString("%s:icon", pV->getId().c_str());
CInterfaceGroup *pUG = CWidgetManager::getInstance()->getParser()->createGroupInstance("menu_row_icon", lineId, vparams);
if (pUG)
setUserGroupLeft((uint)_Lines.size()-1, pUG, true);
}
} }
cur = cur->next; cur = cur->next;
} }
@ -589,6 +572,8 @@ namespace NLGUI
CGroupFrame::updateCoords(); CGroupFrame::updateCoords();
bool mustUpdate = false;
if (_MaxVisibleLine > 0 && sint32(_Lines.size())>_MaxVisibleLine) if (_MaxVisibleLine > 0 && sint32(_Lines.size())>_MaxVisibleLine)
{ {
for(k = 0; k < _Lines.size(); ++k) for(k = 0; k < _Lines.size(); ++k)
@ -619,6 +604,7 @@ namespace NLGUI
_SelectionView->setW (-8-8-2); _SelectionView->setW (-8-8-2);
_ScrollBar->setSerializable( false ); _ScrollBar->setSerializable( false );
addCtrl(_ScrollBar); addCtrl(_ScrollBar);
mustUpdate = true;
} }
break; break;
} }
@ -667,7 +653,13 @@ namespace NLGUI
} }
} }
CGroupFrame::updateCoords();
if (mustUpdate)
{
CGroupFrame::updateCoords();
}
// *** Setup SubMenus and CheckBoxes Positions // *** Setup SubMenus and CheckBoxes Positions
sint32 maxViewW = 0; sint32 maxViewW = 0;

@ -142,33 +142,30 @@ namespace NLGUI
} }
// *************************************************************************** // ***************************************************************************
std::string CHtmlElement::htmlEscape(const std::string &val) const std::string CHtmlElement::htmlEscape(std::string val, bool isAttribute) const
{ {
if (val.find_first_of("\"'&<>\xA0") == std::string::npos) static const std::string searchReplace[] = {
return val; "&", "&amp;",
"<", "&lt;",
">", "&gt;",
"\xA0", "&nbsp;",
};
std::string ret; for(uint i = 0; i < (sizeof(searchReplace) / sizeof(searchReplace[0])); i+=2)
// resize is quaranteed, make room for some free replacements val = strFindReplaceAll(val, searchReplace[i], searchReplace[i+1]);
ret.reserve(val.size() + 24);
for(size_t pos = 0; pos != val.size(); pos++) if (isAttribute)
{ {
switch(val[pos]) static const std::string q = "\"";
{ static const std::string quot = "&quot;";
case '"': ret.append("&quot;"); break; val = strFindReplaceAll(val, q, quot);
case '\'': ret.append("&#39;"); break;
case '&': ret.append("&amp;"); break;
case '<': ret.append("&lt;"); break;
case '>': ret.append("&gt;"); break;
case '\xA0': ret.append("&nbsp;"); break;
default : ret.append(&val[pos],1); break;
}
} }
return ret; return val;
} }
// *************************************************************************** // ***************************************************************************
std::string CHtmlElement::serializeAttributes(bool escape) const std::string CHtmlElement::serializeAttributes() const
{ {
std::string result; std::string result;
for(std::map<std::string, std::string>::const_iterator it = Attributes.begin(); it != Attributes.end(); ++it) for(std::map<std::string, std::string>::const_iterator it = Attributes.begin(); it != Attributes.end(); ++it)
@ -182,30 +179,30 @@ namespace NLGUI
{ {
result += " "; result += " ";
} }
result += (escape ? htmlEscape(*it2) : *it2); result += htmlEscape(*it2, true);
} }
result += "\""; result += "\"";
} }
else else
{ {
result += " " + it->first + "=\"" + (escape ? htmlEscape(it->second) : it->second) + "\""; result += " " + it->first + "=\"" + htmlEscape(it->second, true) + "\"";
} }
} }
return result; return result;
} }
// *************************************************************************** // ***************************************************************************
std::string CHtmlElement::serializeChilds(bool escape) const std::string CHtmlElement::serializeChilds() const
{ {
std::string result; std::string result;
for(std::list<CHtmlElement>::const_iterator it = Children.begin(); it != Children.end(); ++it) for(std::list<CHtmlElement>::const_iterator it = Children.begin(); it != Children.end(); ++it)
result += it->serialize(escape); result += it->serialize();
return result; return result;
} }
// *************************************************************************** // ***************************************************************************
std::string CHtmlElement::serialize(bool escape) const std::string CHtmlElement::serialize() const
{ {
if (Type == TEXT_NODE) if (Type == TEXT_NODE)
{ {
@ -214,14 +211,12 @@ namespace NLGUI
parent->ID == HTML_NOSCRIPT)) parent->ID == HTML_NOSCRIPT))
{ {
return Value; return Value;
} else if (escape) {
return htmlEscape(Value);
} else { } else {
return Value; return htmlEscape(Value);
} }
} }
std::string result = "<" + Value + serializeAttributes(escape) + ">"; std::string result = "<" + Value + serializeAttributes() + ">";
if (ID == HTML_AREA || ID == HTML_BASE || ID == HTML_BR || if (ID == HTML_AREA || ID == HTML_BASE || ID == HTML_BR ||
ID == HTML_COL || ID == HTML_EMBED || ID == HTML_HR || ID == HTML_COL || ID == HTML_EMBED || ID == HTML_HR ||
@ -236,7 +231,7 @@ namespace NLGUI
result += "\n"; result += "\n";
if (!Children.empty()) if (!Children.empty())
result += serializeChilds(escape); result += serializeChilds();
result += "</" + Value + ">"; result += "</" + Value + ">";

@ -1,5 +1,5 @@
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/> // Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
// Copyright (C) 2010-2020 Winch Gate Property Limited // Copyright (C) 2010-2018 Winch Gate Property Limited
// //
// This source file has been modified by the following contributors: // This source file has been modified by the following contributors:
// Copyright (C) 2013-2014 Laszlo KIS-ADAM (dfighter) <dfighter1985@gmail.com> // Copyright (C) 2013-2014 Laszlo KIS-ADAM (dfighter) <dfighter1985@gmail.com>
@ -438,6 +438,14 @@ namespace NLGUI
parseSizeRef(sizeref.c_str()); parseSizeRef(sizeref.c_str());
} }
// ------------------------------------------------------------------------------------------------
std::string CInterfaceElement::getPosParent() const
{
std::string id;
getPosParent(id);
return id;
}
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
std::string CInterfaceElement::getSizeRefAsString() const std::string CInterfaceElement::getSizeRefAsString() const
{ {
@ -1164,8 +1172,6 @@ namespace NLGUI
{ {
_Active = state; _Active = state;
invalidateCoords(); invalidateCoords();
// force invalidate CViewText/CGroupTable inner elements
invalidateContent();
} }
} }

@ -208,9 +208,10 @@ namespace NLGUI
// *************************************************************************** // ***************************************************************************
bool getCssLength (float &value, std::string &unit, const std::string &str, bool neg) 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" "%", "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 pos = 0;
std::string::size_type len = str.size(); std::string::size_type len = str.size();

@ -42,12 +42,6 @@
#define assert(x) #define assert(x)
#endif #endif
// Always use unique_ptr with ValyriaTear/luabind on Ubuntu 20,
// since the setting is not stored in build_information.hpp
#ifndef LUABIND_USE_CXX11
#define LUABIND_USE_CXX11
#endif
#include <luabind/luabind.hpp> #include <luabind/luabind.hpp>
#include <nel/misc/algo.h> #include <nel/misc/algo.h>
#include <nel/misc/path.h> #include <nel/misc/path.h>

@ -48,12 +48,6 @@
# define assert(x) # define assert(x)
#endif #endif
// Always use unique_ptr with ValyriaTear/luabind on Ubuntu 20,
// since the setting is not stored in build_information.hpp
#ifndef LUABIND_USE_CXX11
#define LUABIND_USE_CXX11
#endif
#include <luabind/luabind.hpp> #include <luabind/luabind.hpp>
// in luabind > 0.6, LUABIND_MAX_ARITY is set to 10 // in luabind > 0.6, LUABIND_MAX_ARITY is set to 10
#if LUABIND_MAX_ARITY == 10 #if LUABIND_MAX_ARITY == 10
@ -226,9 +220,7 @@ namespace NLGUI
void CLuaIHM::push(CLuaState &ls, const ucstring &value) void CLuaIHM::push(CLuaState &ls, const ucstring &value)
{ {
//H_AUTO(Lua_CLuaIHM_push) //H_AUTO(Lua_CLuaIHM_push)
#if defined(LUABIND_STACK_HPP_INCLUDED) #if LUABIND_VERSION > 600
luabind::push(ls.getStatePointer(), value);
#elif (LUABIND_VERSION > 600)
luabind::detail::push(ls.getStatePointer(), value); luabind::detail::push(ls.getStatePointer(), value);
#else #else
luabind::object obj(ls.getStatePointer(), value); luabind::object obj(ls.getStatePointer(), value);
@ -1123,6 +1115,7 @@ namespace NLGUI
if(!pIE) if(!pIE)
{ {
ls.pushNil(); ls.pushNil();
nlerror("getCurrentWindowUnder(): No UICaller found. return Nil");
} }
else else
{ {
@ -1163,9 +1156,7 @@ namespace NLGUI
case CInterfaceExprValue::RGBA: case CInterfaceExprValue::RGBA:
{ {
CRGBA color = value.getRGBA(); CRGBA color = value.getRGBA();
#if defined(LUABIND_STACK_HPP_INCLUDED) #if LUABIND_VERSION > 600
luabind::push(ls.getStatePointer(), color);
#elif (LUABIND_VERSION > 600)
luabind::detail::push(ls.getStatePointer(), color); luabind::detail::push(ls.getStatePointer(), color);
#else #else
luabind::object obj(ls.getStatePointer(), color); luabind::object obj(ls.getStatePointer(), color);
@ -1425,9 +1416,7 @@ namespace NLGUI
case CReflectedProperty::UCString: case CReflectedProperty::UCString:
{ {
ucstring str = (reflectedObject.*(property.GetMethod.GetUCString))(); ucstring str = (reflectedObject.*(property.GetMethod.GetUCString))();
#if defined(LUABIND_STACK_HPP_INCLUDED) #if LUABIND_VERSION > 600
luabind::push(ls.getStatePointer(), str);
#elif (LUABIND_VERSION > 600)
luabind::detail::push(ls.getStatePointer(), str); luabind::detail::push(ls.getStatePointer(), str);
#else #else
luabind::object obj(ls.getStatePointer(), str); luabind::object obj(ls.getStatePointer(), str);
@ -1438,9 +1427,7 @@ namespace NLGUI
case CReflectedProperty::UCStringRef: case CReflectedProperty::UCStringRef:
{ {
ucstring str = (reflectedObject.*(property.GetMethod.GetUCStringRef))(); ucstring str = (reflectedObject.*(property.GetMethod.GetUCStringRef))();
#if defined(LUABIND_STACK_HPP_INCLUDED) #if LUABIND_VERSION > 600
luabind::push(ls.getStatePointer(), str);
#elif (LUABIND_VERSION > 600)
luabind::detail::push(ls.getStatePointer(), str); luabind::detail::push(ls.getStatePointer(), str);
#else #else
luabind::object obj(ls.getStatePointer(), str); luabind::object obj(ls.getStatePointer(), str);
@ -1455,9 +1442,7 @@ namespace NLGUI
case CReflectedProperty::RGBA: case CReflectedProperty::RGBA:
{ {
CRGBA color = (reflectedObject.*(property.GetMethod.GetRGBA))(); CRGBA color = (reflectedObject.*(property.GetMethod.GetRGBA))();
#if defined(LUABIND_STACK_HPP_INCLUDED) #if LUABIND_VERSION > 600
luabind::push(ls.getStatePointer(), color);
#elif (LUABIND_VERSION > 600)
luabind::detail::push(ls.getStatePointer(), color); luabind::detail::push(ls.getStatePointer(), color);
#else #else
luabind::object obj(ls.getStatePointer(), color); luabind::object obj(ls.getStatePointer(), color);

@ -70,17 +70,7 @@ namespace NLGUI
} }
catch( const ELuaError &e ) catch( const ELuaError &e )
{ {
#if !FINAL_VERSION nlwarning( e.luaWhat().c_str() );
nlwarning("--- LUA ERROR ---");
nlwarning(e.luaWhat().c_str());
std::vector<std::string> res;
NLMISC::explode(luaScript, std::string("\n"), res);
for(uint k = 0; k < res.size(); ++k)
{
nlwarning("%.05u %s", k, res[k].c_str());
}
nlwarning("--- ********* ---");
#endif
return false; return false;
} }

@ -481,13 +481,7 @@ namespace NLGUI
} }
else else
{ {
if (_HtmlDownload) _HtmlDownload = NULL;
{
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); _TextureId.setTexture (TxName.c_str (), _TxtOffsetX, _TxtOffsetY, _TxtWidth, _TxtHeight, false);
} }
} }

@ -95,7 +95,6 @@ namespace NLGUI
_FontWidth= 0; _FontWidth= 0;
_FontHeight = 0; _FontHeight = 0;
_FontLegHeight = 0; _FontLegHeight = 0;
_TabWidth= 0;
_TextSelection= false; _TextSelection= false;
_TextSelectionStart= 0; _TextSelectionStart= 0;
@ -1030,10 +1029,7 @@ namespace NLGUI
if (_MultiLine) if (_MultiLine)
{ {
if (NLMISC::startsWith(propPtr, "u:")) setTextFormatTaged(CI18N::get(propPtr));
setTextFormatTaged(std::string(propPtr).substr(2));
else
setTextFormatTaged(CI18N::get(propPtr));
} }
else else
{ {
@ -1285,7 +1281,7 @@ namespace NLGUI
px += firstSpace; px += firstSpace;
// skip tabulation before current word // skip tabulation before current word
if(currWord.Format.TabX) if(currWord.Format.TabX)
px= max(px, (float)(_XReal * _Scale + currWord.Format.TabX*_TabWidth)); px= max(px, (float)(_XReal * _Scale + currWord.Format.TabX*_FontWidth));
// draw. We take floorf px to avoid filtering of letters that are not located on a pixel boundary // draw. We take floorf px to avoid filtering of letters that are not located on a pixel boundary
float fx = px / _Scale; float fx = px / _Scale;
@ -1469,7 +1465,7 @@ namespace NLGUI
} }
} }
nlassert(_Text.empty() || ((_Localized && (NLMISC::startsWith(getHardText(), "ui"))) == (_HardText.empty() == _Text.empty()))); nlassert(_Text.empty() || ((_Localized && (NLMISC::startsWith(getText(), "ui"))) == (_HardText.empty() == _Text.empty())));
} }
// *************************************************************************** // ***************************************************************************
@ -1768,7 +1764,7 @@ namespace NLGUI
getFormatTagChange(i, formatTagIndex, wordFormat); getFormatTagChange(i, formatTagIndex, wordFormat);
// Ensure the line witdh count the tab // Ensure the line witdh count the tab
rWidthCurrentLine= max(rWidthCurrentLine, (float)wordFormat.TabX*_TabWidth); rWidthCurrentLine= max(rWidthCurrentLine, (float)wordFormat.TabX*_FontWidth);
} }
NL3D::UTextContext *TextContext = CViewRenderer::getTextContext(_FontName); NL3D::UTextContext *TextContext = CViewRenderer::getTextContext(_FontName);
@ -1952,7 +1948,7 @@ namespace NLGUI
// compute size of spaces/Tab + word // compute size of spaces/Tab + word
newLineWidth = lineWidth + numSpaces * _SpaceWidth; newLineWidth = lineWidth + numSpaces * _SpaceWidth;
newLineWidth = max(newLineWidth, (float)wordFormat.TabX*_TabWidth); newLineWidth = max(newLineWidth, (float)wordFormat.TabX*_FontWidth);
newLineWidth+= si.StringWidth; newLineWidth+= si.StringWidth;
} }
// //
@ -3114,6 +3110,8 @@ namespace NLGUI
TextContext->setEmbolden (_Embolden); TextContext->setEmbolden (_Embolden);
TextContext->setOblique (_Oblique); TextContext->setOblique (_Oblique);
#if 1
UTextContext::CStringInfo si = TextContext->getStringInfo("XO"); UTextContext::CStringInfo si = TextContext->getStringInfo("XO");
float xoHeight = si.StringHeight; float xoHeight = si.StringHeight;
@ -3144,14 +3142,34 @@ namespace NLGUI
si = TextContext->getStringInfo(" "); si = TextContext->getStringInfo(" ");
_SpaceWidth = si.StringWidth; _SpaceWidth = si.StringWidth;
// Font Width // Font Width (used for <tab>)
si = TextContext->getStringInfo("O"); si = TextContext->getStringInfo("O");
_FontWidth = si.StringWidth; _FontWidth = si.StringWidth;
// Tab Width (used for {Txx}) #else
// if not set to "_", breaks item help window
// Letter size
UTextContext::CStringInfo si = TextContext->getStringInfo(_FontSizingChars);
// font generator changes unknown glyphs to dot '.'. use fallback if it looks odd
if (_FontSize > (si.StringHeight + si.StringLine))
{
si = TextContext->getStringInfo(_FontSizingFallback);
}
// add a padding of 1 pixel else the top will be truncated
_FontHeight = si.StringHeight + 1;
_FontLegHeight = si.StringLine;
// Space width
si = TextContext->getStringInfo(" ");
_SpaceWidth = si.StringWidth;
// Font Width (used for <tab>)
si = TextContext->getStringInfo("_"); si = TextContext->getStringInfo("_");
_TabWidth = si.StringWidth; _FontWidth = si.StringWidth;
#endif
} }
@ -3620,7 +3638,6 @@ namespace NLGUI
f.serial(_Localized); f.serial(_Localized);
SERIAL_SINT(_FontSize); SERIAL_SINT(_FontSize);
SERIAL_UINT(_FontWidth); SERIAL_UINT(_FontWidth);
SERIAL_UINT(_TabWidth);
SERIAL_UINT(_FontHeight); SERIAL_UINT(_FontHeight);
SERIAL_UINT(_FontLegHeight); SERIAL_UINT(_FontLegHeight);
f.serial(_SpaceWidth); f.serial(_SpaceWidth);

@ -435,7 +435,22 @@ namespace NLGUI
CWidgetManager::SMasterGroup &rMG = _MasterGroups[nMasterGroup]; CWidgetManager::SMasterGroup &rMG = _MasterGroups[nMasterGroup];
CInterfaceElement *pIEL = rMG.Group->getElement (sEltId); CInterfaceElement *pIEL = rMG.Group->getElement (sEltId);
if (pIEL != NULL) 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; 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; return NULL;
} }

@ -183,21 +183,6 @@ IF(WITH_GTK)
ENDIF() ENDIF()
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) IF(JPEG_FOUND)
INCLUDE_DIRECTORIES(${JPEG_INCLUDE_DIR}) INCLUDE_DIRECTORIES(${JPEG_INCLUDE_DIR})
ADD_DEFINITIONS(-DUSE_JPEG) ADD_DEFINITIONS(-DUSE_JPEG)
@ -217,7 +202,6 @@ ELSE()
TARGET_LINK_LIBRARIES(nelmisc ${PNG_LIBRARY}) TARGET_LINK_LIBRARIES(nelmisc ${PNG_LIBRARY})
ENDIF() ENDIF()
#TODO: needed for hunter aswell?
IF(UNIX) IF(UNIX)
TARGET_LINK_LIBRARIES(nelmisc -lc -ldl) TARGET_LINK_LIBRARIES(nelmisc -lc -ldl)
IF(APPLE) IF(APPLE)

@ -3269,79 +3269,77 @@ CRGBAF CBitmap::getColor (float x, float y) const
uint32 i; uint32 i;
bool isValid = true;
for (i = 0; i < 4; ++i) for (i = 0; i < 4; ++i)
{ {
if (nX[i] < 0 || nY[i] < 0 || nX[i] >= nWidth || nY[i] >= nHeight) nlassert (nX[i] >= 0);
isValid = false; nlassert (nY[i] >= 0 );
nlassert (nX[i] < nWidth);
nlassert (nY[i] < nHeight);
} }
if (isValid) // Decimal part of (x,y)
{ x = x - (float)nX[0];
// Decimal part of (x,y) y = y - (float)nY[0];
x = x - (float)nX[0];
y = y - (float)nY[0];
switch (this->PixelFormat) switch (this->PixelFormat)
{
case RGBA:
case DXTC1:
case DXTC1Alpha:
case DXTC3:
case DXTC5:
{ {
case RGBA: CRGBAF finalVal;
case DXTC1: CRGBA val[4];
case DXTC1Alpha:
case DXTC3:
case DXTC5:
{
CRGBAF finalVal;
CRGBA val[4];
if (this->PixelFormat == RGBA) if (this->PixelFormat == RGBA)
{
for (i = 0; i < 4; ++i)
{ {
for (i = 0; i < 4; ++i) val[i] = CRGBA (rBitmap[(nX[i]+nY[i]*nWidth)*4+0],
{ rBitmap[(nX[i]+nY[i]*nWidth)*4+1],
val[i] = CRGBA (rBitmap[(nX[i]+nY[i]*nWidth)*4+0], rBitmap[(nX[i]+nY[i]*nWidth)*4+2],
rBitmap[(nX[i]+nY[i]*nWidth)*4+1], rBitmap[(nX[i]+nY[i]*nWidth)*4+3]);
rBitmap[(nX[i]+nY[i]*nWidth)*4+2],
rBitmap[(nX[i]+nY[i]*nWidth)*4+3]);
}
} }
else }
else
{
// slower version : get from DXT
for (i = 0; i < 4; ++i)
{ {
// slower version : get from DXT val[i] = getPixelColor(nX[i], nY[i]);
for (i = 0; i < 4; ++i)
{
val[i] = getPixelColor(nX[i], nY[i]);
}
} }
}
finalVal.R = getColorInterp (x, y, val[0].R, val[1].R, val[2].R, val[3].R); finalVal.R = getColorInterp (x, y, val[0].R, val[1].R, val[2].R, val[3].R);
finalVal.G = getColorInterp (x, y, val[0].G, val[1].G, val[2].G, val[3].G); finalVal.G = getColorInterp (x, y, val[0].G, val[1].G, val[2].G, val[3].G);
finalVal.B = getColorInterp (x, y, val[0].B, val[1].B, val[2].B, val[3].B); finalVal.B = getColorInterp (x, y, val[0].B, val[1].B, val[2].B, val[3].B);
finalVal.A = getColorInterp (x, y, val[0].A, val[1].A, val[2].A, val[3].A); finalVal.A = getColorInterp (x, y, val[0].A, val[1].A, val[2].A, val[3].A);
finalVal /= 255.f; finalVal /= 255.f;
return finalVal; return finalVal;
} }
break; break;
case Alpha: case Alpha:
case Luminance: case Luminance:
{ {
float finalVal; float finalVal;
float val[4]; float val[4];
for (i = 0; i < 4; ++i) for (i = 0; i < 4; ++i)
val[i] = rBitmap[(nX[i]+nY[i]*nWidth)]; val[i] = rBitmap[(nX[i]+nY[i]*nWidth)];
finalVal = getColorInterp (x, y, val[0], val[1], val[2], val[3]); finalVal = getColorInterp (x, y, val[0], val[1], val[2], val[3]);
finalVal /= 255.f; finalVal /= 255.f;
if (this->PixelFormat == Alpha) if (this->PixelFormat == Alpha)
return CRGBAF (1.f, 1.f, 1.f, finalVal); return CRGBAF (1.f, 1.f, 1.f, finalVal);
else // Luminance else // Luminance
return CRGBAF (finalVal, finalVal, finalVal, 1.f); return CRGBAF (finalVal, finalVal, finalVal, 1.f);
}
break;
default: break;
} }
break;
default: break;
} }
return CRGBAF (0.0f, 0.0f, 0.0f, 0.0f); return CRGBAF (0.0f, 0.0f, 0.0f, 0.0f);

@ -3,7 +3,7 @@
// //
// This source file has been modified by the following contributors: // This source file has been modified by the following contributors:
// Copyright (C) 2013 Laszlo KIS-ADAM (dfighter) <dfighter1985@gmail.com> // 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 // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as // it under the terms of the GNU Affero General Public License as
@ -55,11 +55,11 @@ void CCDBNodeLeaf::init( xmlNodePtr node, IProgressCallback &/* progressCallBac
CXMLAutoPtr nullable((const char*)xmlGetProp (node, (xmlChar*)"nullable")); CXMLAutoPtr nullable((const char*)xmlGetProp (node, (xmlChar*)"nullable"));
if ((const char *) nullable != NULL) if ((const char *) nullable != NULL)
{ {
m_Nullable = (nullable.getDatas()[0] == '1'); _Nullable = (nullable.getDatas()[0] == '1');
} }
else else
{ {
m_Nullable = false; _Nullable = false;
} }
// Read type // Read type
@ -99,6 +99,9 @@ void CCDBNodeLeaf::init( xmlNodePtr node, IProgressCallback &/* progressCallBac
// IF it is a TEXT. // IF it is a TEXT.
if(!strcmp(type, "TEXT")) if(!strcmp(type, "TEXT"))
_Type = ICDBNode::TEXT; _Type = ICDBNode::TEXT;
// IF it is a PACKED.
else if (!strcmp(type, "PACKED"))
_Type = ICDBNode::PACKED;
// ELSE type unknown. // ELSE type unknown.
else else
{ {
@ -143,6 +146,15 @@ void CCDBNodeLeaf::write( CTextId& id, FILE * f)
fprintf(f,"%" NL_I64 "d\t%s\n",_Property,id.toString().c_str()); fprintf(f,"%" NL_I64 "d\t%s\n",_Property,id.toString().c_str());
} // write // } // 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 // readDelta
//----------------------------------------------- //-----------------------------------------------
@ -155,20 +167,24 @@ void CCDBNodeLeaf::readDelta(TGameCycle gc, CBitMemStream & f )
uint64 recvd = 0; uint64 recvd = 0;
uint64 isNull = 0; uint64 isNull = 0;
if (m_Nullable) if (_Nullable)
{ {
f.serial(isNull, 1); f.serial(isNull, 1);
} }
uint bits; uint bits;
if (_Type == TEXT) if (!isNull)
bits = 32; {
else if (_Type <= I64) if (_Type == TEXT)
bits = _Type; bits = 32;
else else if (_Type == PACKED)
bits = _Type - 64; bits = readPackedBitCount(f);
f.serial(recvd, bits); 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 the DB update is older than last DB update, abort (but after the read!!)
if(gc<_LastChangeGC) if(gc<_LastChangeGC)
@ -181,18 +197,24 @@ void CCDBNodeLeaf::readDelta(TGameCycle gc, CBitMemStream & f )
_Property = (sint64)recvd; _Property = (sint64)recvd;
// if signed // if signed
if (! ((_Type == TEXT) || (_Type <= I64))) if (! ((_Type == TEXT) || (_Type == PACKED) || (_Type <= I64)))
{ {
// extend bit sign if (!isNull)
sint64 mask = (((sint64)1)<<bits)-(sint64)1;
if( (_Property >> (bits-1))==1 )
{ {
_Property |= ~mask; // extend bit sign
sint64 mask = (((sint64)1)<<bits)-(sint64)1;
if( (_Property >> (bits-1))==1 )
{
_Property |= ~mask;
}
} }
} }
if ( verboseDatabase ) if ( verboseDatabase )
{ {
nlinfo( "CDB: Read value (%u bits) %" NL_I64 "d", bits, _Property ); 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 // bkup the date of change

@ -52,9 +52,8 @@ ICommand::ICommand(const char *categoryName, const char *commandName, const char
if (comm != LocalCommands->end ()) if (comm != LocalCommands->end ())
{ {
nlinfo("command with same name: %s", commandName);
// 2 commands have the same name // 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 else
{ {

@ -288,7 +288,7 @@ void CEntityIdTranslator::registerEntity (const CEntityId &eid, const ucstring &
return; 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))); RegisteredEntities.insert (make_pair(reid, CEntityIdTranslator::CEntity(entityName, uid, userName, entitySlot, shardId)));
NameIndex.insert(make_pair(toLower(entityName), reid)); NameIndex.insert(make_pair(toLower(entityName), reid));
} }

@ -17,6 +17,7 @@
// You should have received a copy of the GNU Affero General Public License // 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/>. // along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "stdmisc.h"
#include <nel/misc/seven_zip.h> #include <nel/misc/seven_zip.h>
#include <nel/misc/types_nl.h> #include <nel/misc/types_nl.h>

@ -188,7 +188,6 @@
# endif // NL_CPU_INTEL # endif // NL_CPU_INTEL
# ifdef NL_OS_MAC # ifdef NL_OS_MAC
# include <sys/mount.h> # include <sys/mount.h>
# include <sys/sysctl.h>
# else # else
# include <sys/vfs.h> # include <sys/vfs.h>
# endif # endif

@ -612,7 +612,7 @@ void initAdmin (bool dontUseAES)
{ {
CUnifiedNetwork::getInstance()->setServiceUpCallback ("AES", cbAESConnection, NULL); CUnifiedNetwork::getInstance()->setServiceUpCallback ("AES", cbAESConnection, NULL);
CUnifiedNetwork::getInstance()->setServiceDownCallback ("AES", cbAESDisconnection, 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])); CUnifiedNetwork::getInstance()->addCallbackArray (CallbackArray, sizeof(CallbackArray)/sizeof(CallbackArray[0]));
} }

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

@ -266,9 +266,14 @@ void uncbServiceIdentification(CMessage &msgin, TSockId from, CCallbackNetBase &
nlinfo ("HNETL5: + connect ident '%s' %s-%hu pos %hu ext %d", from->asString().c_str(), inSName.c_str(), inSid.get(), (uint16)pos, (uint8)isExternal); nlinfo ("HNETL5: + connect ident '%s' %s-%hu pos %hu ext %d", from->asString().c_str(), inSName.c_str(), inSid.get(), (uint16)pos, (uint8)isExternal);
if(isExternal) if (isExternal)
{ {
nlassert (pos == 0);
#ifdef NL_OS_WINDOWS
pos = 0;
#else
nlassert(pos == 0);
#endif
} }
if (inSid.get() == 0) if (inSid.get() == 0)

@ -2,7 +2,7 @@
// Copyright (C) 2010-2019 Winch Gate Property Limited // Copyright (C) 2010-2019 Winch Gate Property Limited
// //
// This source file has been modified by the following contributors: // 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 // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as // 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); CPrimitiveWorldImage *wI=primitive->getWorldImage (worldImage);
#if !FINAL_VERSION #if !FINAL_VERSION
/* // Check BB width not too large #ifndef RYZOM_FORGE
// Check BB width not too large
if (wI->getBBXMax() - wI->getBBXMin() > _CellWidth) if (wI->getBBXMax() - wI->getBBXMin() > _CellWidth)
{ {
nlwarning ("Primitives have moved more than a cell, width: %f.", (float)(wI->getBBXMax() - wI->getBBXMin())); 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())); nlwarning ("Primitives have moved more than a cell, height: %f.", (float)(wI->getBBYMax() - wI->getBBYMin()));
} }
*/ #endif
#endif #endif
// Get coordinate in the cell array // Get coordinate in the cell array

@ -90,23 +90,6 @@ SOURCE_GROUP("user_classes" FILES ${USER_CLASSES})
NL_TARGET_LIB(nelsound ${HEADERS} ${SRC}) 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(${VORBIS_INCLUDE_DIR})
INCLUDE_DIRECTORIES(${OGG_INCLUDE_DIR}) INCLUDE_DIRECTORIES(${OGG_INCLUDE_DIR})

@ -26,16 +26,9 @@ SOURCE_GROUP(util FILES
NL_TARGET_DRIVER(${NLDRV_AL_LIB} ${SRC}) NL_TARGET_DRIVER(${NLDRV_AL_LIB} ${SRC})
IF(HUNTER_ENABLED) INCLUDE_DIRECTORIES(${OPENAL_INCLUDE_DIR})
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} nelmisc nelsnd_lowlevel ${OPENAL_LIBRARY}) TARGET_LINK_LIBRARIES(${NLDRV_AL_LIB} ${OPENAL_LIBRARY} nelmisc nelsnd_lowlevel)
NL_DEFAULT_PROPS(${NLDRV_AL_LIB} "NeL, Driver, Sound: OpenAL") NL_DEFAULT_PROPS(${NLDRV_AL_LIB} "NeL, Driver, Sound: OpenAL")
NL_ADD_RUNTIME_FLAGS(${NLDRV_AL_LIB}) NL_ADD_RUNTIME_FLAGS(${NLDRV_AL_LIB})
NL_ADD_LIB_SUFFIX(${NLDRV_AL_LIB}) NL_ADD_LIB_SUFFIX(${NLDRV_AL_LIB})

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

@ -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); _GroupController = CGroupControllerRoot::getInstance()->getGroupController(NLSOUND_SHEET_V1_DEFAULT_SOUND_GROUP_CONTROLLER);
#else #else
std::string groupControllerPath; std::string groupControllerPath;
root.getValueByName(groupControllerPath, ".GroupControllerPath"); root.getValueByName(groupControllerPath, ".GroupController");
_GroupController = CGroupControllerRoot::getInstance()->getGroupController(groupControllerPath); _GroupController = CGroupControllerRoot::getInstance()->getGroupController(groupControllerPath);
#endif #endif

@ -131,6 +131,13 @@ namespace NLWEB
// only use OpenSSL callback if not using Windows SSPI and using OpenSSL backend // only use OpenSSL callback if not using Windows SSPI and using OpenSSL backend
if (useOpenSSLBackend && !(data && data->features & CURL_VERSION_SSPI)) if (useOpenSSLBackend && !(data && data->features & CURL_VERSION_SSPI))
{ {
#ifdef NL_OS_WINDOWS
// load native Windows CA Certs
addCertificatesFrom("CA");
addCertificatesFrom("AuthRoot");
addCertificatesFrom("ROOT");
#endif
isUsingOpenSSLBackend = true; isUsingOpenSSLBackend = true;
} }
else else
@ -172,6 +179,40 @@ namespace NLWEB
return name; return name;
} }
#ifdef NL_OS_WINDOWS
void addCertificatesFrom(LPCSTR root)
{
HCERTSTORE hStore;
PCCERT_CONTEXT pContext = NULL;
X509 *x509;
hStore = CertOpenSystemStore(NULL, root);
if (hStore)
{
while (pContext = CertEnumCertificatesInStore(hStore, pContext))
{
x509 = NULL;
x509 = d2i_X509(NULL, (const unsigned char **)&pContext->pbCertEncoded, pContext->cbCertEncoded);
if (x509)
{
CertEntry entry;
entry.cert = x509;
entry.file = root;
entry.name = getCertName(x509);
CertList.push_back(entry);
}
}
CertFreeCertificateContext(pContext);
CertCloseStore(hStore, 0);
}
// this is called before debug context is set and log ends up in log.log
//nlinfo("Loaded %d certificates from '%s' certificate store", (int)CertList.size(), root);
}
#endif
void addCertificatesFromFile(const std::string &cert) void addCertificatesFromFile(const std::string &cert)
{ {
if (!isInitialized) if (!isInitialized)

@ -75,9 +75,8 @@ static const std::string CAFilename = "cacert.pem"; // https://curl.haxx.se/docs
// *************************************************************************** // ***************************************************************************
bool CCurlHttpClient::verifyServer(bool verify) bool CCurlHttpClient::verifyServer(bool verify)
{ {
m_Verify = verify;
curl_easy_setopt(_Curl, CURLOPT_SSL_VERIFYPEER, verify ? 1 : 0);
curl_easy_setopt(_Curl, CURLOPT_SSL_VERIFYHOST, verify ? 2 : 0); curl_easy_setopt(_Curl, CURLOPT_SSL_VERIFYHOST, verify ? 2 : 0);
curl_easy_setopt(_Curl, CURLOPT_SSL_VERIFYPEER, verify ? 1 : 0);
// specify custom CA certs // specify custom CA certs
CCurlCertificates::addCertificateFile(CAFilename); CCurlCertificates::addCertificateFile(CAFilename);
@ -98,8 +97,8 @@ bool CCurlHttpClient::sendRequest(const std::string& methodWB, const std::string
curl_easy_setopt(_Curl, CURLOPT_URL, url.c_str()); curl_easy_setopt(_Curl, CURLOPT_URL, url.c_str());
if (url.length() > 8 && (url[4] == 's' || url[4] == 'S')) // 01234 https if (url.length() > 8 && (url[4] == 's' || url[4] == 'S')) // 01234 https
{ {
curl_easy_setopt(_Curl, CURLOPT_SSL_VERIFYPEER, m_Verify ? 1L : 0); curl_easy_setopt(_Curl, CURLOPT_SSL_VERIFYPEER, 1L);
curl_easy_setopt(_Curl, CURLOPT_SSL_VERIFYHOST, m_Verify ? 2L : 0); curl_easy_setopt(_Curl, CURLOPT_SSL_VERIFYHOST, 2L);
} }
// Authentication // Authentication
@ -125,17 +124,15 @@ bool CCurlHttpClient::sendRequest(const std::string& methodWB, const std::string
curl_easy_setopt(_Curl, CURLOPT_WRITEFUNCTION, CCurlHttpClient::writeDataFromCurl); curl_easy_setopt(_Curl, CURLOPT_WRITEFUNCTION, CCurlHttpClient::writeDataFromCurl);
curl_easy_setopt(_Curl, CURLOPT_WRITEDATA, this); curl_easy_setopt(_Curl, CURLOPT_WRITEDATA, this);
if (!m_ErrorBuf.size()) char errorbuf [CURL_ERROR_SIZE+1];
m_ErrorBuf.resize(CURL_ERROR_SIZE + 1); curl_easy_setopt(_Curl, CURLOPT_ERRORBUFFER, errorbuf);
m_ErrorBuf[0] = '\0';
curl_easy_setopt(_Curl, CURLOPT_ERRORBUFFER, &m_ErrorBuf[0]);
// Send // Send
CURLcode res = curl_easy_perform(_Curl); CURLcode res = curl_easy_perform(_Curl);
if (res != 0) if (res != 0)
{ {
if (verbose) if (verbose)
nlwarning(&m_ErrorBuf[0]); nlwarning(errorbuf);
return false; return false;
} }

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

@ -1,15 +1,17 @@
title Ryzom Core: 0_setup.py --noconf title Ryzom Core: 0_setup.py --noconf
0_setup.py --noconf python 0_setup.py --noconf
title Ryzom Core: 1_export.py title Ryzom Core: 1_export.py
1_export.py python 1_export.py
title Ryzom Core: 2_build.py title Ryzom Core: 2_build.py
2_build.py python 2_build.py
title Ryzom Core: 3_install.py title Ryzom Core: 3_install.py
3_install.py python 3_install.py
title Ryzom Core: a1_worldedit_data.py title Ryzom Core: a1_worldedit_data.py
a1_worldedit_data.py python a1_worldedit_data.py
title Ryzom Core: b1_client_dev.py title Ryzom Core: b1_client_dev.py
b1_client_dev.py python b1_client_dev.py
title Ryzom Core: b2_shard_data.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 title Ryzom Core: Ready

@ -1,9 +1,11 @@
title Ryzom Core: 3_install.py title Ryzom Core: 3_install.py
3_install.py python 3_install.py
title Ryzom Core: a1_worldedit_data.py title Ryzom Core: a1_worldedit_data.py
a1_worldedit_data.py python a1_worldedit_data.py
title Ryzom Core: b1_client_dev.py title Ryzom Core: b1_client_dev.py
b1_client_dev.py python b1_client_dev.py
title Ryzom Core: b2_shard_data.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 title Ryzom Core: Ready

@ -24,14 +24,14 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>. # 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") sys.path.append("configuration")
if os.path.isfile("log.log"): if os.path.isfile("log.log"):
os.remove("log.log") os.remove("log.log")
log = open("log.log", "w") log = open("log.log", "w")
from scripts import * from scripts import *
from buildsite import * from buildsite_local import *
from tools import * from tools import *
sys.path.append(WorkspaceDirectory) 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, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "") printLog(log, "")
if not os.path.isfile(ClientDevDirectory + "/client.cfg"): mkPath(log, ClientDevLiveDirectory)
printLog(log, ">>> Generate client.cfg <<<") if not os.path.isfile(ClientDevLiveDirectory + "/client.cfg"):
cfg = open(ClientDevDirectory + "/client.cfg", "w") printLog(log, ">>> Generate live dev client.cfg <<<")
cfg = open(ClientDevLiveDirectory + "/client.cfg", "w")
cfg.write("RootConfigFilename = \"client_default.cfg\";\n") cfg.write("RootConfigFilename = \"client_default.cfg\";\n")
cfg.write("PreDataPath = {\n") cfg.write("PreDataPath = {\n")
cfg.write("\t\"user\", \"patch\", \"" + DataCommonDirectory + "\", \"" + GamedevDirectory + "\", \"" + LeveldesignDirectory + "/translation/translated\", \"" + InstallDirectory + "\", \"data\", \"examples\" \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("DisplayLuaDebugInfo = 1;\n")
cfg.write("AllowDebugLua = 1;\n") cfg.write("AllowDebugLua = 1;\n")
cfg.write("FullScreen = 0;\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, "")
printLog(log, ">>> Install data <<<") printLog(log, ">>> Install data <<<")
@ -64,13 +83,22 @@ for category in InstallClientData:
if (category["UnpackTo"] != None): if (category["UnpackTo"] != None):
printLog(log, "CATEGORY " + category["Name"]) printLog(log, "CATEGORY " + category["Name"])
targetPath = ClientDevDirectory targetPath = ClientDevDirectory
targetPathLive = ClientDevLiveDirectory
if (category["UnpackTo"] != ""): if (category["UnpackTo"] != ""):
targetPath += "/" + category["UnpackTo"] targetPath += "/" + category["UnpackTo"]
targetPathLive += "/" + category["UnpackTo"]
mkPath(log, targetPath) mkPath(log, targetPath)
mkPath(log, targetPathLive)
for package in category["Packages"]: for package in category["Packages"]:
printLog(log, "PACKAGE " + package[0]) printLog(log, "PACKAGE " + package[0])
mkPath(log, InstallDirectory + "/" + package[0]) mkPath(log, InstallDirectory + "/" + package[0])
copyFilesNoTreeIfNeeded(log, InstallDirectory + "/" + package[0], targetPath) 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, "") printLog(log, "")
log.close() log.close()

@ -0,0 +1,152 @@
#!/usr/bin/python
#
# \file b2_shard_data.py
# \brief Install shard data
# \date 2009-02-18 16:19GMT
# \author Jan Boon (Kaetemi)
# Python port of game data build pipeline.
# Install shard data
#
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2009-2014 by authors
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
import time, sys, os, shutil, subprocess, distutils.dir_util
sys.path.append("configuration")
if os.path.isfile("log.log"):
os.remove("log.log")
log = open("log.log", "w")
from scripts import *
from buildsite_local import *
from tools import *
sys.path.append(WorkspaceDirectory)
from projects import *
# Log error
printLog(log, "")
printLog(log, "-------")
printLog(log, "--- Install to shard dev")
printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "")
# Find tools
PatchmanService = findTool(log, ToolDirectories, PatchmanServiceTool, ToolSuffix)
printLog(log, "")
mkPath(log, ShardDevDirectory)
mkPath(log, ShardDevDirectory + "/local")
printLog(log, ">>> Generate shard dev local.cfg <<<")
cfg = open(ShardDevDirectory + "/local.cfg", "w")
cfg.write("WindowStyle = \"WIN\";\n")
cfg.write("Paths += {\n")
cfg.write(" \"" + ShardDevDirectory + "/local\",\n")
cfg.write(" \"" + DataCommonDirectory + "\",\n")
cfg.write(" \"" + DataShardDirectory + "\",\n")
cfg.write(" \"" + LeveldesignDirectory + "\",\n")
cfg.write(" \"" + WorldEditorFilesDirectory + "\",\n")
for dir in InstallShardDataDirectories:
mkPath(log, ShardInstallDirectory + "/" + dir)
cfg.write(" \"" + ShardInstallDirectory + "/" + dir + "\",\n")
for multiDir in InstallShardDataMultiDirectories:
dstDir = multiDir[0]
mkPath(log, ShardInstallDirectory + "/" + dstDir)
cfg.write(" \"" + ShardInstallDirectory + "/" + dstDir + "\",\n")
cfg.write("};\n")
cfg.write("RRDToolPath = \"..\\..\\..\\external\\rrdtool\\rrdtool.exe\";\n")
cfg.write("StartCommands += {\n")
cfg.write(" // \"gw_aes.transportRemove aes_l3c\",\n")
cfg.write("};\n")
cfg.write("NegFiltersWarning += {\n")
cfg.write(" \"already inserted from\",\n")
cfg.write("};\n")
cfg.write("// Allow player to stay connected to FS when services go down\n")
cfg.write("DontNeedBackend = 1;\n")
cfg.flush()
cfg.close()
printLog(log, "")
if not os.path.exists(ShardDevDirectory + "/aes_state.txt"):
printLog(log, ">>> Generate shard dev aes_state.txt <<<")
f = open(ShardDevDirectory + "/aes_state.txt", "w")
f.write("ShardOrders unifier so_autostart_off\n")
f.write("ShardOrders mainland so_autostart_off\n")
f.write("ShardOrders ring so_autostart_off\n")
f.flush()
f.close()
printLog(log, "")
mkPath(log, ShardDevDirectory + "/ras")
if not os.path.exists(ShardDevDirectory + "/ras/as_state.txt"):
printLog(log, ">>> Generate shard dev as_state.txt <<<")
f = open(ShardDevDirectory + "/ras/as_state.txt", "w")
f.write("ShardOrders unifier so_autostart_off\n")
f.write("ShardOrders mainland so_autostart_off\n")
f.write("ShardOrders ring so_autostart_off\n")
f.flush()
f.close()
printLog(log, "")
for execDir in InstallShardDataExecutables:
dstDir = execDir[0]
mkPath(log, PatchmanCfgDefaultDirectory)
mkPath(log, InstallDirectory)
mkPath(log, ShardDevDirectory + "/live/" + dstDir)
printLog(log, "SHARD PACKAGE " + dstDir)
copyFileListNoTreeIfNeeded(log, PatchmanCfgDefaultDirectory, ShardDevDirectory + "/live/" + dstDir, execDir[2])
copyFileListNoTreeIfNeeded(log, InstallDirectory, ShardDevDirectory + "/live/" + dstDir, execDir[3])
for cfgName in execDir[2]:
cfgPath = ShardDevDirectory + "/live/" + dstDir + "/" + cfgName
found = False
with open(cfgPath, "r") as f:
for l in f:
if "Paths += {" in l:
found = True
if not found:
with open(cfgPath, "a") as cfg:
cfg.write("\n")
cfg.write("Paths += {\n")
cfg.write(" \"" + ShardDevDirectory + "/live/" + dstDir + "\",\n")
cfg.write("};\n")
cfg.write("\n")
cfg.flush()
printLog(log, "")
if PatchmanService == "":
toolLogFail(log, PatchmanServiceTool, ToolSuffix)
else:
mkPath(log, PatchmanDevDirectory)
cwDir = os.getcwd().replace("\\", "/")
os.chdir(PatchmanDevDirectory)
if os.path.isfile("log.log"):
os.remove("log.log")
subprocess.call([ PatchmanService, "-C.", "-L." ])
if os.path.isfile("log.log"):
f = open("log.log", "r")
for l in f:
printLog(log, l.rstrip())
f.close()
os.chdir(cwDir)
printLog(log, "")
log.close()
if os.path.isfile("b3_shard_dev.log"):
os.remove("b3_shard_dev.log")
shutil.copy("log.log", time.strftime("%Y-%m-%d-%H-%M-GMT", time.gmtime(time.time())) + "_shard_dev.log")
shutil.move("log.log", "b3_shard_dev.log")

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

@ -1,11 +1,11 @@
title Ryzom Core: 1_export.py (CHARACTERS) title Ryzom Core: 1_export.py (CHARACTERS)
1_export.py -ipj common/characters common/characters_maps_hr python 1_export.py -ipj common/characters common/characters_maps_hr
title Ryzom Core: 2_build.py (CHARACTERS) title Ryzom Core: 2_build.py (CHARACTERS)
2_build.py -ipj common/characters common/characters_maps_hr python 2_build.py -ipj common/characters common/characters_maps_hr
title Ryzom Core: 3_install.py (CHARACTERS) title Ryzom Core: 3_install.py (CHARACTERS)
3_install.py -ipj common/characters common/characters_maps_hr python 3_install.py -ipj common/characters common/characters_maps_hr
title Ryzom Core: b1_client_dev.py (CHARACTERS) title Ryzom Core: b1_client_dev.py (CHARACTERS)
b1_client_dev.py python b1_client_dev.py
title Ryzom Core: b2_shard_data.py (CHARACTERS) title Ryzom Core: b2_shard_data.py (CHARACTERS)
b2_shard_data.py python b2_shard_data.py
title Ryzom Core: Ready (CHARACTERS) title Ryzom Core: Ready (CHARACTERS)

@ -96,6 +96,20 @@ def needUpdateLogRemoveDest(log, source, dest):
printLog(log, "SKIP " + dest) printLog(log, "SKIP " + dest)
return 0 return 0
def needUpdateLogRemoveDestSilentSkip(log, source, dest):
if (os.path.isfile(source)):
if (os.path.isfile(dest)):
if (os.stat(source).st_mtime > os.stat(dest).st_mtime):
os.remove(dest)
printLog(log, source + " -> " + dest)
return 1
else:
return 0
printLog(log, source + " -> " + dest)
return 1
printLog(log, "MISSING " + source)
return 0
def copyFileList(log, dir_source, dir_target, files): def copyFileList(log, dir_source, dir_target, files):
for fileName in files: for fileName in files:
if fileName != ".svn" and fileName != ".." and fileName != "." and fileName != "*.*": if fileName != ".svn" and fileName != ".." and fileName != "." and fileName != "*.*":

@ -98,4 +98,5 @@ PatchGenTool = "patch_gen"
TranslationToolsTool = "translation_tools" TranslationToolsTool = "translation_tools"
BuildWorldPackedColTool = "build_world_packed_col" BuildWorldPackedColTool = "build_world_packed_col"
R2IslandsTexturesTool = "r2_islands_textures" R2IslandsTexturesTool = "r2_islands_textures"
PatchmanServiceTool = "ryzom_patchman_service"
SevenZipTool = "7za" SevenZipTool = "7za"

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

@ -1,13 +1,15 @@
title Ryzom Core: 0_setup.py (EXECUTABLES) title Ryzom Core: 0_setup.py (EXECUTABLES)
0_setup.py --noconf -ipj common/gamedev common/exedll common/cfg common/data_common python 0_setup.py --noconf -ipj common/gamedev common/exedll common/cfg common/data_common
title Ryzom Core: 1_export.py (EXECUTABLES) title Ryzom Core: 1_export.py (EXECUTABLES)
1_export.py -ipj common/gamedev common/exedll common/cfg common/data_common python 1_export.py -ipj common/gamedev common/exedll common/cfg common/data_common
title Ryzom Core: 2_build.py (EXECUTABLES) title Ryzom Core: 2_build.py (EXECUTABLES)
2_build.py -ipj common/gamedev common/exedll common/cfg common/data_common python 2_build.py -ipj common/gamedev common/exedll common/cfg common/data_common
title Ryzom Core: 3_install.py (EXECUTABLES) title Ryzom Core: 3_install.py (EXECUTABLES)
3_install.py -ipj common/gamedev common/exedll common/cfg common/data_common python 3_install.py -ipj common/gamedev common/exedll common/cfg common/data_common
title Ryzom Core: b1_client_dev.py title Ryzom Core: b1_client_dev.py
b1_client_dev.py python b1_client_dev.py
title Ryzom Core: b2_shard_data.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 title Ryzom Core: Ready

@ -0,0 +1,11 @@
title Ryzom Core: 1_export.py (FAUNA)
python 1_export.py -ipj common/fauna
title Ryzom Core: 2_build.py (FAUNA)
python 2_build.py -ipj common/fauna
title Ryzom Core: 3_install.py (FAUNA)
python 3_install.py -ipj common/fauna
title Ryzom Core: b1_client_dev.py (FAUNA)
python b1_client_dev.py
title Ryzom Core: b2_shard_data.py (FAUNA)
python b2_shard_data.py
title Ryzom Core: Ready (FAUNA)

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

Loading…
Cancel
Save