Commit graph

8077 commits

Author SHA1 Message Date
vladislavbelov
23a023507a Replaces GL_LINES, GL_QUADS, GL_TRIANGLE_STRIP and GL_TRIANGLE_FAN by GL_TRIANGLES.
This was SVN commit r26488.
2022-02-26 00:37:27 +00:00
vladislavbelov
59a0a74951 Fixes a degenerate triangle on terrain sides of map corners.
This was SVN commit r26487.
2022-02-25 23:45:54 +00:00
vladislavbelov
d5d1754991 Moves polygon mode handling to PipelineState and CDeviceCommandContext.
This was SVN commit r26486.
2022-02-25 22:05:06 +00:00
vladislavbelov
a87cb6c94d Moves GL depth comparison function to SamplerDesc.
This was SVN commit r26485.
2022-02-25 20:02:03 +00:00
vladislavbelov
0d2faa1cab Adds debug context option for GL context creation.
This was SVN commit r26484.
2022-02-25 16:26:56 +00:00
vladislavbelov
8a63adc40d Uses CDeviceCommandContext as an input parameter for CCanvas2D.
This was SVN commit r26480.
2022-02-25 08:14:11 +00:00
vladislavbelov
d1f1d41a9f Uses triangles for drawing lines in CCanvas2D.
Differential Revision: https://code.wildfiregames.com/D4444
This was SVN commit r26479.
2022-02-25 06:59:57 +00:00
Freagarach
b778caf146 Move FormationName and Icon from cmpFormation to cmpIdentity.
Reduces duplication across components.
Allows to provide specific names and history for formations.

Differential revision: https://code.wildfiregames.com/D4476
Comments by: @bb, @Stan
Fixes #6400

This was SVN commit r26476.
2022-02-24 06:51:07 +00:00
vladislavbelov
6a0fc31c33 Replaces GL_QUADS by GL_TRIANGLES for drawing overlays and debug frustums.
This was SVN commit r26465.
2022-02-22 18:41:31 +00:00
vladislavbelov
731b85b9a2 Adds GPU scoped labels for console, logger and profiler.
This was SVN commit r26444.
2022-02-20 21:55:29 +00:00
vladislavbelov
a0b0effd50 Fixes minimap after map reloading.
Reported By: marder
This was SVN commit r26439.
2022-02-20 10:51:11 +00:00
vladislavbelov
aac1a64675 Moves dynamic geometry for rendering sky to static vertex buffer.
This was SVN commit r26424.
2022-02-19 20:07:55 +00:00
bb
0f07c368ed Allow more general contexts in json translatable strings
While at it fix the messages.json from ea72437739 (missing excludeMask
and make the keywords objects not arrays)
Comments By: Freagarach
Differential Revision: D4483
This was SVN commit r26422.
2022-02-19 17:21:23 +00:00
vladislavbelov
b0826da1bc Fixes not drawing brushes under water when refractions are enabled.
This was SVN commit r26411.
2022-02-19 15:44:32 +00:00
vladislavbelov
36833d1df2 Moves max texture size to backend device capabilities.
This was SVN commit r26409.
2022-02-18 23:17:48 +00:00
vladislavbelov
5eb21cbfbf Adds debug labels to backend framebuffers.
This was SVN commit r26408.
2022-02-18 23:00:11 +00:00
vladislavbelov
b949f19875 Moves GL debug information toggle to run-time to make it easier to test after release.
This was SVN commit r26407.
2022-02-18 22:38:45 +00:00
vladislavbelov
cff79b421a Moves GL vertex and index buffer management to CDeviceCommandContext.
Tested By: Stan
Differential Revision: https://code.wildfiregames.com/D4493
This was SVN commit r26406.
2022-02-18 17:33:12 +00:00
Freagarach
6a2a297c0e Clean LoadPlayerSettings in Player-helper.
- Removed obsolete C++-side `addPlayer`, introduced in 4fed9b8242, moved
out of Atlas in 1c0536bf08, unused after 9ee44bd9b8.
- Get the player settings from a local function (avoids passing
arguments).
- Removed setting the standard diplomacy (done in cmpPlayerManager since
132020f88e).
- Create entity when adding a player instead of creating it and
instructing the playermanager to add it.
- Changed/Removed some comments.

Differential revision: https://code.wildfiregames.com/D4482
Comments by: @Stan
This was SVN commit r26404.
2022-02-18 08:10:13 +00:00
Stan
6496aea364 Update unitTables.py for A25 and trunk
- Add support for mul_round
- Correct table
- BUGFIX: correct roster table via the mixin Civ fix
- avoid long lines for PEP8 compliance
- for mod development outside .svn repo, create symlink
- replace all TAB indents to 4 spaces for PEP8
- TAB to 4 spaces to be PEP8 compliant
- refactor complex inline logic to compute and formatting
- beautify and avoid long lines to be PEP8 compliant
- beautify and simplify JS table format code
- Using more accessible color scheme
- Better color scheme
- main analysis file
- Rename the new version back to keep consistancy
- dependency JS library
- Unit analysis result
- Rewrite specilized table logic to only show changed
- Prefer numeric flag over string flag to refactor
- Re-format HTML templates into readable source code
- Civ specific table now renders non-empty
- Update computeCivTemplate to parse A25 template dir
- Cleanup debugging flags
- Update copyright notice to 2022
- Explain how the code works for future development
- Initial README
- Refactor: put HTML IO code in a single function
- Refactor: include JavaScript as verbatim str
- Refactor: separate computation from IO
- Refactor: compute templates before HTML IO
- Refactor: compute CivTemplates before HTML IO
- Refactor: compute separate from IO code
- Fixed melee and ranged attack damage parsing
- Fixed Resistance parsing
- Implement the undefined function complain
- Rename Armour -> Resistance
- Simplify NumericStatProcess logic

Patch by: @hyiltiz
Differential Revision: https://code.wildfiregames.com/D4445
This was SVN commit r26403.
2022-02-17 22:41:53 +00:00
bb
3484a3d483 Move parabolic range computation to rangemanager
Co-proposed By: Freagarach
Reviewed By: Freagarach
Test written By: Stan
Comments By: vladislavbelov, stan, wraitii, Silier
Depricates: D4356

Differential Revision: D3249
This was SVN commit r26392.
2022-02-15 20:31:55 +00:00
bb
47e79c71d5 Make CGUIText variables camel case
Reviewed By: vladislavbelov
Differential Revision: D4491
This was SVN commit r26379.
2022-02-14 17:48:08 +00:00
vladislavbelov
6ec956553a Fixes builds after d0115185b9 by removing includes to res handle.
This was SVN commit r26372.
2022-02-14 06:29:50 +00:00
Stan
59df75e78b Fixes two clang warnings.
Refs #5550 #5294

This was SVN commit r26370.
2022-02-13 23:41:47 +00:00
vladislavbelov
d0115185b9 Removes unused and redundant h_mgr after 0e599a3176 and dd91a5e0ef.
This was SVN commit r26369.
2022-02-13 22:31:36 +00:00
vladislavbelov
dd91a5e0ef Removes unused ogl_tex after 4de89c3db1 and 492a109b68.
This was SVN commit r26368.
2022-02-13 22:07:56 +00:00
vladislavbelov
492a109b68 Removes redundant ogl_tex quality option after 4de89c3db1.
This was SVN commit r26367.
2022-02-13 21:53:02 +00:00
vladislavbelov
aaf378f041 Moves backend capabilities to CDevice.
This was SVN commit r26366.
2022-02-13 21:46:03 +00:00
vladislavbelov
4de89c3db1 Moves texture management to CDeviceCommandContext, adds quality options.
Comments By: nwtour, Stan
Tested By: nwtour, Stan
Differential Revision: https://code.wildfiregames.com/D4488
This was SVN commit r26365.
2022-02-13 19:30:28 +00:00
Stan
936fb5a172 Replace checkrefs.pl by a python script. This makes it easier to run on Windows for non technical persons.
- Add support for tips
- Fix other scripts not writing to the correct output (they were writing
info messages to stderr)

Based on a patch by: @mammadori	and @cyrille
Differential Revision: https://code.wildfiregames.com/D3213
This was SVN commit r26350.
2022-02-12 15:43:42 +00:00
bb
9696b18a72 Happy new year bb.
See previous commit

This was SVN commit r26339.
2022-02-10 16:38:24 +00:00
bb
505bead1da Some minor improvements for the localization scripts
Comments By: Stan
Reviewed By Freagarach

Differential Revision: D4397
This was SVN commit r26338.
2022-02-10 16:18:49 +00:00
Stan
f55282fc96 Add a python equivalent to validate.pl.
Refs: D3213

This was SVN commit r26334.
2022-02-09 23:06:40 +00:00
Stan
adcd1d105c Improve the validator.py script. Fix false positives with particles and variants. Use a logger instead.
This was SVN commit r26333.
2022-02-09 22:07:36 +00:00
Angen
0a72a02ea0 Make scale variables constant
b4fbbed379

This was SVN commit r26307.
2022-02-06 11:11:35 +00:00
vladislavbelov
a17fad722a Moves framebuffer management to CDeviceCommandContext.
Tested By: Langbart, nwtour
Differential Revision: https://code.wildfiregames.com/D4475
This was SVN commit r26302.
2022-02-05 16:59:23 +00:00
Freagarach
ea72437739 Move GenericName, History and Icon from the civ-JSON to cmpIdentity.
Since the players/civs already have cmpIdentity, use it.
This forces civs to have corresponding XML in the `special/players/`
folder.

Also moves the files from `special/player/` to `special/players/`
consistent with other folders. And moves the generic `player.xml` one
level up.

Differential revision: https://code.wildfiregames.com/D4473
Help and comments by: @Stan, @wraitii
This was SVN commit r26298.
2022-02-05 06:24:45 +00:00
vladislavbelov
37aa0456c8 Fixes missed assignment to currentTech in ParticleRenderer added in 5adbe4f1a3.
This was SVN commit r26296.
2022-02-04 16:27:35 +00:00
vladislavbelov
ac77d1c3e0 Moves scissor test management to DeviceCommandContext.
This was SVN commit r26288.
2022-02-01 17:58:21 +00:00
vladislavbelov
aeaf495da3 Renames GL::CTexture levelCount to MIPLevelCount to match Tex.
This was SVN commit r26287.
2022-02-01 16:48:24 +00:00
vladislavbelov
a1f98b016b Moves depth and stencil tests to PipelineState and DeviceCommandContext.
Differential Revision: https://code.wildfiregames.com/D4471
This was SVN commit r26286.
2022-02-01 16:38:55 +00:00
vladislavbelov
709e8292b0 Moves color mask, depth mask and function management from CShaderPass to DeviceCommandContext.
Tested By: Langbart
Comments By: Stan
Differential Revision: https://code.wildfiregames.com/D4465
This was SVN commit r26284.
2022-01-31 20:10:06 +00:00
vladislavbelov
22db9202f1 Fixes EOL in PipelineState files after 5adbe4f1a3.
This was SVN commit r26283.
2022-01-31 11:47:58 +00:00
vladislavbelov
8c068aab07 Removes possibility to link lowlevel library dynamically.
Tested By: Langbart
Differential Revision: https://code.wildfiregames.com/D4470
This was SVN commit r26281.
2022-01-31 06:53:30 +00:00
vladislavbelov
02c96903c5 Renames sgn function to Sign to fit the naming of other MathUtil functions.
This was SVN commit r26276.
2022-01-30 20:51:01 +00:00
wraitii
0e403632cf Allow giving different weights to different templates when pushing.
This makes it possible to make units heavier, which both push more & get
pushed less by other units.
In particular, the diff does it for siege units & elephants.

This improves movement for these units in crowd situation, since they
will now basically not move when other regular units push into them.

Supported By: asterix, marder
Refs #6127

Differential Revision: https://code.wildfiregames.com/D4452
This was SVN commit r26275.
2022-01-30 14:22:27 +00:00
wraitii
4df03ed2d2 Run the AI in the same Compartment as the simulation. Let the AI access Sim data.
This is a paradigm change for AI computation.
Historically, the AI was intended to be run in a separate thread from
the simulation. The idea was that slow AI wouldn't stop the renderer
from being smooth.

In that original design, the AI received a copy of the game world and
used that to run its logic. This meant the simulation could safely do
whatever it wanted in the meantime. This copy was done via AIProxy &
AIInterface.

This design ended up having significant flaws:
- The copying impacts the simulation negatively, particularly because
AIProxy subscribes to a lot of messages (sometimes sent exclusively to
it). This time cannot be threaded, and impacts MP games without AIs.
- Copying the data is increasingly difficult. Modifiers are a headache,
LOS is not implemented. Lots of logic is duplicated.

The intended benefits of the design also failed to realise somewhat:
- The AI was never threaded, and in fact, it is probably better to try
and thread Sim + AI from the renderer than just the AI, at which point
threading the AI specifically brings little benefit.

The new design is much simpler and straighforward, but this has some
side-effects:
- The AI can now change the simulation. This can be used for cheating,
or possibly for a tutorial AI.
- The AI runs in the same GC zone as the simulation, which may lead to
more frequent Sim GCs (but overall we might expect a reduction in
temporary objects).
- The AI state was essentially cached, so replacing some functions with
Engine.QueryInterface might be slower. The tradeoff should be balanced
by lower AIProxy computation times.

Future work:
- Threading some specific AI tasks could still be worthwhile, but should
be done in specific worker threads, allowed to run over several turns if
needed.

Technical note: the AI 'global' is in its own Realm, which means name
collisions with the same are not possible.

Other notes:
- The RL Interface uses the AI Interface and thus will gradually lose
some data there. Given that the RL Interface can now request data
however, this should be dine.

Refs #5962, #2370

Differential Revision: https://code.wildfiregames.com/D3769
This was SVN commit r26274.
2022-01-30 13:33:34 +00:00
wraitii
0779c64052 Add tests for fixed::FromFraction
Differential Revision: https://code.wildfiregames.com/D4458
This was SVN commit r26273.
2022-01-30 12:57:08 +00:00
wraitii
d740b4f335 Fix bug where 'archive' XMB files could end up being written to the user mod
Users sometimes ended up with bad (wrong version) XMB files in the user
mod. This resulted in A25 loading a black screen.
There is a combination of unfortunate code paths that lead to this. The
core issue is that:
- cdd75deafb changed the XMB loading code that if there is an error in
Init from a cached XMB, it reports an error. This error happens to be
silent, because the GUI expects CXeromyces to do its own error reporting
(a pretty poor decision, all in all, but whatever). This explained why
the black screen showed no errors.
- The code flow attemps to load an 'archive' XMB first, then only a
loose cache. _But_ if the XMB that fails to load is an archive (which
generally never happens except when using incompatible mods, which is
generally less easy in A25 since we added code to stop that), then the
game will try to recreate the XMB as an 'archived' path, not a 'loose
cache' path as it would usually do.
- Because the 'archived' path already exists in the VFS, the game will
attempt to overwrite that. It so happens that in non-dev copies, this
writes to the user mod.
- Because the user-mod is always loaded, this was unexpected for users.

Fixing this is rather simple: the game should never attempt to write
'archive' XMBs in that function. Added explicit barrier, which shouldn't
matter performance-wise but fixes the issue by writing in the proper
place, and also properly recovering in case of read failure.
I will note that the game will still try to load the archived file, and
recreate it every time, but I don't think that's a particularly big
deal, in general having engine-incompatible mods in the future should be
harder because of A25 changes there.
(NB: users that have used both A24 and A25 should perhaps still be
advised to check their user mod folder, otherwise they'll end up
recreating those files forever).

Reported by: dave_k
Fixes #6320

Differential Revision: https://code.wildfiregames.com/D4275
This was SVN commit r26272.
2022-01-30 12:50:43 +00:00
wraitii
e0d98cd94d Call SetTerrainDirty on CModelAbstract without going through CmpVisualActor
The UnitManager already lists all units, so we do not need to go through
the visual actor of entities to update them. This is faster and
decouples simulation & graphics code slightly.

Further, the simulation does not need to know about texture changes (see
also 410d2e883a), so remove those calls in Atlas.

Differential Revision: https://code.wildfiregames.com/D4455
This was SVN commit r26270.
2022-01-29 08:28:04 +00:00