I think this is a vital question as well. We've been told that multiple simultaneous mods are supported, but I'd really like to know in detail how that works so that we know how to create our mods to ensure maximum compatibility with other mods.
- How is mod priority handled if two mods are installed and are changing the same data/functionality? (Load order or some attempt at a merge?)
Regarding Channel Packing, which textures should use which channels?
Will it be possible to blend textures with different UV Channels? (To for example have a > 0-1 UV space texture be blended with a unique 0-1 UV space texture)
Will it be possible to switch between different UV tiling values based on distance? And also switch materials?
How many channels can be used for vertex painting materials?
Flipped Y-Channel Normals?
People are sending me questions and I just add them here. I don't really understand half of them either
YesWill we be able to add C# Library ?
Here we go:
How is mod priority handled if two mods are installed and are changing the same data/functionality? (Load order or some attempt at a merge?)
Will 3rd party C# libraries be supported? Is this decided by what is shipped with the game client or can it be part of a mod?
What configuration options will exist on the server? (Custom factions using existing assets, for example)
Will there be a way to remotely control a server through something like a web api or web hooks?
What network commands will exist to update both client and server? (Spawn item network command was added to allow armor to be updated on clients as well as server in warband)
yes1. can you do PInvoke a DLL?
yes2. are native mscorlib such as system.net.sockets and filestream available?
yes3. Is it possible to attach Bannerlord process and step through managed code?
yes4. Is it possible to query the AI state and party in the campaign map?
yes5. Is it possible to call external program and run them in background? (useful to run dedicated server on demand in background)
view templates like: Modules\Native\GUI\Prefabs\Options\SPOptions\KeybindingPopup.xml6. How do you code the UI?
var sView = ViewCreatorManager.CreateScreenView<HostOptionsScreen>(new SPHostGameVM(lobbystate));
ScreenManager.PushScreen(sView);
this._gauntletLayer = new GauntletLayer(4000, "GauntletLayer");
this._gauntletMovie = this._gauntletLayer.LoadMovie("CustomHostGame", this._dataSource);
this._gauntletLayer.InputRestrictions.SetInputRestrictions(true, TL.InputUsageMask.All);
this._gauntletLayer.Input.RegisterHotKeyCategory(HotKeyManager.GetCategory("GenericPanelGameKeyCategory"));
this._gauntletLayer.IsFocusLayer = true;
base.AddLayer(this._gauntletLayer);
Can you source your answers? I can see you've been looking through the files, but that doesn't necessarily give you the answer to questions like "Is it possible to query the AI state and party in the campaign map?".
MultiplayerLobbyGauntletScreen lobby = ScreenManager.TopScreen as MultiplayerLobbyGauntletScreen;
// var layer = new GauntletLayer(90,"GauntletLayer");
var lobbystate = (LobbyState) lobby.GetType()
.GetField("_lobbyState", BindingFlags.NonPublic | BindingFlags.Instance)
.GetValue(lobby);
NetworkMain.GameClient.GetType().GetProperty("CurrentState")
.SetValue(NetworkMain.GameClient, LobbyClient.State.HostingCustomGame);
have you tried importing NewtonJSON into bannerlord?@lolxd
yes
yes
yes
yes
yes
view templates like: Modules\Native\GUI\Prefabs\Options\SPOptions\KeybindingPopup.xml
on a screen u render gauntletlayers which have a viewmodel for datasources attached,
if u know dotnet xaml GUI's u will know Bannerlord UI's mostly
C#:var sView = ViewCreatorManager.CreateScreenView<HostOptionsScreen>(new SPHostGameVM(lobbystate)); ScreenManager.PushScreen(sView); this._gauntletLayer = new GauntletLayer(4000, "GauntletLayer"); this._gauntletMovie = this._gauntletLayer.LoadMovie("CustomHostGame", this._dataSource); this._gauntletLayer.InputRestrictions.SetInputRestrictions(true, TL.InputUsageMask.All); this._gauntletLayer.Input.RegisterHotKeyCategory(HotKeyManager.GetCategory("GenericPanelGameKeyCategory")); this._gauntletLayer.IsFocusLayer = true; base.AddLayer(this._gauntletLayer);
have you tried importing NewtonJSON into bannerlord?
bro are you on this server https://discord.gg/n6EnvV ? if not pls post the linkYou will be able to access the Campaign infos from your submodule
with "Game.Current andor Mission.Current" you will be able to navigate the properties to get to the Campaign Map and to the GameEntities and Query the AI States from there.
Also you can add ur own Components/Behaviors from ur submodule at either Entrypoint
OnCampaignStart or OnMissionBehaviourInitialize
and if that doesnt work for Singleplayer Campaign somehow u can still do it OnApplicationTick + Reflections in worst worst worst case
im basing the infos on what i found out and tried out, The Engine is open enough that even if none of these Methods I just said work, u can still use Reflection to access the corrosponding Objects and Properties and Methods
like here some example on how to get and set the LobbyState in Multiplayer over Reflection
if u need more concrete examples/code to some stuff just ask more specifically or chat with me on taleworlds modding discord, im happy to helpC#:MultiplayerLobbyGauntletScreen lobby = ScreenManager.TopScreen as MultiplayerLobbyGauntletScreen; // var layer = new GauntletLayer(90,"GauntletLayer"); var lobbystate = (LobbyState) lobby.GetType() .GetField("_lobbyState", BindingFlags.NonPublic | BindingFlags.Instance) .GetValue(lobby); NetworkMain.GameClient.GetType().GetProperty("CurrentState") .SetValue(NetworkMain.GameClient, LobbyClient.State.HostingCustomGame);
If you would have the same username there it would be easier to find youbro are you on this server https://discord.gg/n6EnvV ? if not pls post the link