add zip mod package settings menu

Zipped mod package files should be placed in "mods/" and need to contain
directory trees starting with "packages/" (or "config/"). The files from
a zip mod replace files, that exist in the original game install or add
new files.

The zip file should contain three special files:

  desc.txt
    Contains one line with a descriptive title for the package and ten
    more optional lines with a detailed description.

  preview.jpg
    Preview picture for the mod. Must not exceed 128 kbytes. Aim for
    512x512 pixel.

  revision_n
    Empty file. The "n" in the filename should be a valid integer number
    instead, specifying the zip revision. Example "revision_123".

The settings menu shows the active mods in order of their priority - which
determines, which file to use, if several mod packages try to add or
substitute the same file. Zip files higher up in the list win.
This commit is contained in:
ac-stef
2015-09-07 14:53:56 +02:00
parent 04aba22e16
commit f603031018
+69
View File
@@ -9,6 +9,7 @@ menuitem [Keyboard settings] [ showmenu Keyboard ]
menuitem [Mouse settings] [ showmenu Mouse ]
menuitem [Sound settings] [ showmenu sound ]
menuitem [Misc settings] [ showmenu Misc ]
menuitem [Mod package settings] [ showmenu "Mod package" ]
menuitem [] -1
menuitem [Reset all settings] [ showmenu [Reset settings] ]
@@ -701,4 +702,72 @@ menuitemtextinput [Shotgun: ] [gibmessage 3] [ gibmessage 3 $arg1 ] [] 15
menuitemtextinput [Sniper: ] [gibmessage 5] [ gibmessage 5 $arg1 ] [] 15
menuitemtextinput [Grenades: ] [gibmessage 8] [ gibmessage 8 $arg1 ] [] 15
tempalias __zip ""
newmenu "Mod package"
menuinit [
delmenu (curmenu) ; newmenu (curmenu)
menurenderoffset -20 0
push ecurmenu (escape (curmenu))
push activezips (zipmodlist active)
push inactivezips (zipmodlist inactive)
if (strlen $activezips) [
menuitem "\f2Currently used mod packages (highest priority listed first)" -1 (concat chmenutexture $ecurmenu "")
looplist $activezips zip [
menuitem (concatword "\fs\f9" $zip ":\fr " (at (zipmodgetdesc $zip) 0)) (concat alias __zip $zip "; showmenu [Configure mod package]") (concatword chmenutexture " " $ecurmenu "../modpreviews/" $zip ".jpg " $zip)
]
menuitem "" -1 (concat chmenutexture $ecurmenu "")
]
if (strlen $inactivezips) [
menuitem "\f2Unused mod packages" -1 (concat chmenutexture $ecurmenu "")
looplist $inactivezips zip [
menuitem (concatword "\fs\f9" $zip ":\fr " (at (zipmodgetdesc $zip) 0)) (concat alias __zip $zip "; showmenu [Configure mod package]") (concatword chmenutexture " " $ecurmenu "../modpreviews/" $zip ".jpg " $zip)
]
menuitem "" -1 (concat chmenutexture $ecurmenu "")
]
if (|| (strlen $activezips) (strlen $inactivezips)) [ ] [ menuitem "--- no mod packages available ---" -1 ]
if (strlen $activezips) [ menuitem "\f3Deactivate all mod packages" zipmodclear ]
menuitem "\f3Refresh textures (has no effect on already loaded models)" resetgl
pop activezips inactivezips ecurmenu
]
newmenu "Configure mod package"
menuinit [
delmenu (curmenu) ; newmenu (curmenu)
menurenderoffset -20 0
push ecurmenu (escape (curmenu))
push activezips (zipmodlist active)
if (strlen $__zip) [
chmenutexture (curmenu) (concatword "../modpreviews/" $__zip ".jpg") $__zip
push __c "\f2"
looplist (zipmodgetdesc $__zip) desc [ if (strlen $desc) [ menuitem (concat $__c $desc) -1 ] ; alias __c "" ]
pop __c
menuitem (concat "\f4revision:" (zipmodgetrevision $__zip)) -1
menuitem "" -1
if (< (findlist $activezips $__zip) 0) [
menuitem (concatword "\f0Add \f9" $__zip "\f0 to the list of used mod packages") (concat addzipmod $__zip)
] [
menuitem (concatword "\f3Remove \f9" $__zip "\f0 from the list of used mod packages") (concat zipmodremove $__zip)
]
menuitem "" -1
menuitem "Show list of files in package" "showmenu [Show files in package]"
] [
menuitem "no zip selected" -1
]
pop activezips ecurmenu
]
newmenu "Show files in package"
menuinit [
delmenu (curmenu) ; newmenu (curmenu)
if (strlen $__zip) [
menuitem (concat "Files in package\f9" $__zip) -1
menuitem "" -1
looplist (zipmodgetfiles $__zip) aa [ menuitem $aa -1 ]
] [
menuitem "no zip selected" -1
]
]
persistidents 1