CnCNet / xna-cncnet-client

XNA / MonoGame based client for playing classic Command & Conquer games both online and offline with a CnCNet game spawner.
Other
223 stars 86 forks source link

Implement the reading of `UsingVinifera` boolean value to `ClientDefinitions.ini`. #470

Open CCHyper opened 1 year ago

CCHyper commented 1 year ago

Implement the reading of UsingVinifera boolean value to ClientDefinitions.ini to allow Vinifera support for specific features going forward.

Also, the following should be added to the bottom of the template ClientDefinitions.ini that ships with the client package;

; Set to true to if your mod uses Vinifera and needs to support any new features it provides (Tiberian Sun only).
UsingVinifera=false
Metadorius commented 1 year ago

I don't think singling out extension-specific features this way is a correct move. We should not hardcode features and instead strive towards generalization. For example, to support Phobos new features Starkku remade settings and made it so custom settings can be added.

CCHyper commented 1 year ago

I don't think singling out extension-specific features this way is a correct move. We should not hardcode features and instead strive towards generalization. For example, to support Phobos new features Starkku remade settings and made it so custom settings can be added.

What do you suggest as a solution that would work for both extension projects?

Metadorius commented 1 year ago

What do you suggest as a solution that would work for both extension projects?

I would need to know what features on the client side specifically are needed. Currently Phobos doesn't require any specific features, the only client-side thing that interacts with Phobos is custom RA2MD.ini settings. If Vinifera needs custom setting toggles too - the client already supports them without any edits, have a look here: https://github.com/Starkku/cncnet-client-mod-base/blob/df5dbdf62cb1f7af5e333118ef9636f6e38f646d/ClientFiles/Resources/OptionsWindow.ini#L43

CCHyper commented 1 year ago

What do you suggest as a solution that would work for both extension projects?

I would need to know what features on the client side specifically are needed. Currently Phobos doesn't require any specific features, the only client-side thing that interacts with Phobos is custom RA2MD.ini settings. If Vinifera needs custom setting toggles too - the client already supports them without any edits, have a look here: https://github.com/Starkku/cncnet-client-mod-base/blob/df5dbdf62cb1f7af5e333118ef9636f6e38f646d/ClientFiles/Resources/OptionsWindow.ini#L43

Vinifera's support are not systems the end-user can toggle, these are required to support custom loading screens only when the mod uses Vinifera, for example.

For example; SPAWN.INI

[Basic]
LS400BkgdName=LS400GDI1A.PCX
LS400TextLoc=200,150

Perhaps a new INI which defines what is to be written in addition to SPAWN.INI would be best.

Metadorius commented 1 year ago

I would need to see more context later, but my general comment is that I think we don't need to gate all of the Vinifera-specific stuff behind such a toggle, but rather individual toggles for individual adjustments when they are implemented. For example, hypothetically this feature may be ported to Phobos, then the UsingVinifera toggle wouldn't fit.

CCHyper commented 1 year ago

I would need to see more context later, but my general comment is that I think we don't need to gate all of the Vinifera-specific stuff behind such a toggle, but rather individual toggles for individual adjustments when they are implemented. For example, hypothetically this feature may be ported to Phobos, then the UsingVinifera toggle wouldn't fit.

I agree in this case, but there still needs to be a system in place where any/all extension projects can define the control for their new features. A UI toggle is not a solution here, it needs to be a lower level as these can impact how the game initializes.

Metadorius commented 1 year ago

I meant UI toggles for Phobos specific settings as an example of implementing a generalisation improvement instead of hardcoding the toggles into the client itself, not as a solution for this issue. Yeah I agree, I just think they need to be more granular and, if possible, more generalized.