Loobinex / keeperfx-unofficial

KeeperFX - Unofficial release
60 stars 7 forks source link

Add Map packs #189

Closed eddebaby closed 4 years ago

eddebaby commented 4 years ago

See #44

The UI work I did in #186 was headed in the wrong direction. This is the backend code for map packs, and a better path for the UI.

The Free-Play Levels button on the main menu takes you to a list of map packs. Clicking a map pack takes you to a list of the levels in the map pack.

The UI needs some more work, to make it fully functional.

UI currently only works with the deeper dungeons (See 9c779a2)

eddebaby commented 4 years ago

Should now allow loading of map packs (and their levels) via menu. UI bugs remain.

Things to check:

Things to do:

eddebaby commented 4 years ago

I will try to add these features next, as they shouldn't take too much time:

Actually, the above are non-trivial tasks, so it may be better to just work on a more complete solution for MP levels...

I could look at adding the ability to have multiple multiplayer campaigns (i.e. different map screens, with a different set of levels, configs etc). This would likely involve more changes to the format of the campaign config file. maybe MULTIPLAYER_CAMPAIGN (with a default of NO). I haven't looked at most of the code to do with this yet.

Loobinex commented 4 years ago

I agree with you that it's probably best to finish up with this feature first (although I believe when thoroughly tested this pull is ready for merge right?)

As for multiplayer, am I understanding this right:

If I understand this right, I don't see a need to change the config. Instead, I would expect the behavior to be like this: 1) The player clicks multiplayer 2) The game checks all campaign config files, if in the specified levels folder, there are .lof files present 3) The game lists all campaigns with .lof files for the player to select 4) The player selects one of the campaigns 5) The game displays the campaign landview and levels listed on it 6) The players select a multiplayer level 7) The game loads up the level, with the configs as configured in the campaign config

That being said, as long as multiplayer remains basically non-functional, this feature seems very low priority.

eddebaby commented 4 years ago

Your descriptions are correct (as far as I understand the code). I think the current master also checks \levels\ for unassigned LIF/LOF files, regardless of the setting in keeporig.cfg.

Your multiplayer solution should be achievable in the code. Step 2 might be the a bit tricky (Currently LOF/LIF files are loaded once the campaign is loaded, as that is when the game "knows" what directory to look in), but I'm sure this can be solved, I just had no need/reason to change this behaviour for single player.

With my idea: I was trying to allow map packs to "add" multiplayer maps to a "multiplayer campaign", The use of different directories, within a single campaign, is what will need bigger changes to the way the code works (and should probably be ignored, as your solution is nice and clean). I guess my hope was to have DK and DD multi levels in different directories, but on the same level select screen (not really necessary!). I will work to your design, if I end up working on the multiplayer campaigns.

And yes - when this is thoroughly tested (and any subsequently needed fixes put in place), this pull request is ready to merge. (CFG files still need to be created, and the levels data reorganised, before any release/distribution.)