pywargame 0.4.1__tar.gz → 0.4.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pywargame-0.4.1 → pywargame-0.4.2}/PKG-INFO +51 -31
- {pywargame-0.4.1 → pywargame-0.4.2}/README.md +50 -30
- pywargame-0.4.2/pywargame/__init__.py +8 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/common/__init__.py +3 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/common/drawdice.py +12 -3
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/common/test.py +2 -2
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/cyberboard/gbxext.py +13 -9
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/cyberboard/gsnexp.py +15 -10
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/cyberboard/gsnext.py +9 -7
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/cyberboard/testgrid.py +2 -1
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/cyberboard/zeropwd.py +18 -11
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/latex/latexexporter.py +7 -7
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/latex/main.py +10 -6
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/vassal/__init__.py +1 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/vassal/buildfile.py +1 -1
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/vassal/collect.py +3 -2
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/vassal/dumpvsav.py +7 -2
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/vassal/element.py +1 -1
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/vassal/gameelements.py +28 -11
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/vassal/merge.py +8 -5
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/vassal/moduledata.py +1 -1
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/vassal/patch.py +8 -5
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/vassal/trait.py +13 -10
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/vassal/traits/area.py +4 -2
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/vassal/traits/cargo.py +3 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/vassal/traits/mat.py +3 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/vassal/vmod.py +1 -1
- pywargame-0.4.2/pywargame/zuntzu/__init__.py +14 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/zuntzu/countersheet.py +1 -1
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/zuntzu/ztexp.py +10 -8
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame.egg-info/PKG-INFO +51 -31
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame.egg-info/SOURCES.txt +4 -16
- pywargame-0.4.2/pywargame.egg-info/entry_points.txt +11 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/setup.cfg +13 -0
- pywargame-0.4.1/pywargame/__init__.py +0 -2
- pywargame-0.4.1/pywargame/cyberboard.py +0 -2728
- pywargame-0.4.1/pywargame/gbx0pwd.py +0 -2776
- pywargame-0.4.1/pywargame/gbxextract.py +0 -2795
- pywargame-0.4.1/pywargame/gsnexport.py +0 -16547
- pywargame-0.4.1/pywargame/gsnextract.py +0 -2793
- pywargame-0.4.1/pywargame/vassal/collectpatch.py +0 -28
- pywargame-0.4.1/pywargame/vassal/skel.py +0 -380
- pywargame-0.4.1/pywargame/vassal.py +0 -12544
- pywargame-0.4.1/pywargame/vmodpatch.py +0 -12592
- pywargame-0.4.1/pywargame/vsavdump.py +0 -12577
- pywargame-0.4.1/pywargame/vslmerge.py +0 -13059
- pywargame-0.4.1/pywargame/wgexport.py +0 -16733
- pywargame-0.4.1/pywargame/ztexport.py +0 -14395
- pywargame-0.4.1/pywargame/zuntzu/__init__.py +0 -5
- {pywargame-0.4.1 → pywargame-0.4.2}/LICENSE +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/common/collector.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/common/dicedraw.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/common/singleton.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/common/verbose.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/common/verboseguard.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/cyberboard/__init__.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/cyberboard/archive.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/cyberboard/base.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/cyberboard/board.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/cyberboard/cell.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/cyberboard/collect.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/cyberboard/collectgbx0pwd.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/cyberboard/collectgbxext.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/cyberboard/collectgsnexp.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/cyberboard/collectgsnext.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/cyberboard/draw.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/cyberboard/exporter.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/cyberboard/extractor.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/cyberboard/features.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/cyberboard/gamebox.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/cyberboard/gbxexp.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/cyberboard/head.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/cyberboard/image.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/cyberboard/main.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/cyberboard/mark.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/cyberboard/palette.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/cyberboard/piece.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/cyberboard/player.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/cyberboard/scenario.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/cyberboard/tile.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/cyberboard/tray.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/cyberboard/windows.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/latex/__init__.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/latex/collect.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/vassal/base.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/vassal/board.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/vassal/chart.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/vassal/chessclock.py +0 -0
- /pywargame-0.4.1/pywargame/vassal/dumpcollect.py → /pywargame-0.4.2/pywargame/vassal/collectdump.py +0 -0
- /pywargame-0.4.1/pywargame/vassal/mrgcollect.py → /pywargame-0.4.2/pywargame/vassal/collectmrg.py +0 -0
- /pywargame-0.4.1/pywargame/vassal/patchcollect.py → /pywargame-0.4.2/pywargame/vassal/collectpatch.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/vassal/command.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/vassal/documentation.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/vassal/exporter.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/vassal/extension.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/vassal/folder.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/vassal/game.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/vassal/globalkey.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/vassal/globalproperty.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/vassal/grid.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/vassal/map.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/vassal/mapelements.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/vassal/merger.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/vassal/player.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/vassal/save.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/vassal/traits/__init__.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/vassal/traits/basic.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/vassal/traits/calculatedproperty.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/vassal/traits/click.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/vassal/traits/clone.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/vassal/traits/delete.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/vassal/traits/deselect.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/vassal/traits/dynamicproperty.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/vassal/traits/globalcommand.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/vassal/traits/globalhotkey.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/vassal/traits/globalproperty.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/vassal/traits/hide.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/vassal/traits/label.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/vassal/traits/layer.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/vassal/traits/mark.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/vassal/traits/mask.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/vassal/traits/moved.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/vassal/traits/movefixed.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/vassal/traits/nonrect.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/vassal/traits/nostack.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/vassal/traits/place.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/vassal/traits/prototype.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/vassal/traits/report.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/vassal/traits/restrictaccess.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/vassal/traits/restrictcommand.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/vassal/traits/retrn.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/vassal/traits/rotate.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/vassal/traits/sendto.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/vassal/traits/sheet.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/vassal/traits/skel.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/vassal/traits/stack.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/vassal/traits/submenu.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/vassal/traits/trail.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/vassal/traits/trigger.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/vassal/turn.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/vassal/upgrade.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/vassal/vsav.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/vassal/widget.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/vassal/withtraits.py +0 -0
- /pywargame-0.4.1/pywargame/vassal/xml.py → /pywargame-0.4.2/pywargame/vassal/xmlns.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/vassal/zone.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/zuntzu/base.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/zuntzu/collect.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/zuntzu/dicehand.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/zuntzu/exporter.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/zuntzu/gamebox.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/zuntzu/map.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/zuntzu/piece.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame/zuntzu/scenario.py +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame.egg-info/dependency_links.txt +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame.egg-info/requires.txt +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/pywargame.egg-info/top_level.txt +0 -0
- {pywargame-0.4.1 → pywargame-0.4.2}/setup.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: pywargame
|
3
|
-
Version: 0.4.
|
3
|
+
Version: 0.4.2
|
4
4
|
Summary: Python library to manipulate wargame modules
|
5
5
|
Home-page: https://wargames_tex.gitlab.io/pywargame/
|
6
6
|
Author: Christian Holm Christensen
|
@@ -32,7 +32,7 @@ Aided Wargaming (CAW).
|
|
32
32
|
|
33
33
|
- [`pywargame`](pywargame) Top of package
|
34
34
|
- [`common`](pywargame/common) Common utilities used by other code.
|
35
|
-
- [`vassal`](pywargame/vassal) Read or write
|
35
|
+
- [`vassal`](pywargame/vassal) Read or write
|
36
36
|
[VASSAL](https://vassalengine.org)
|
37
37
|
([GitHub](https://github.com/vassalengine/vassal)) modules,
|
38
38
|
including
|
@@ -42,7 +42,7 @@ Aided Wargaming (CAW).
|
|
42
42
|
- [`cyberboard`](pywargame/cyberboard) Read
|
43
43
|
[CyberBoard](http://cyberboard.norsesoft.com/)
|
44
44
|
([GitHub](https://github.com/CyberBoardPBEM/cbwindows)) GameBox
|
45
|
-
files.
|
45
|
+
and scenario files.
|
46
46
|
- [`zuntzu`](pywargame/zuntzu) Convert [ZunTzu](https://zuntzu.com)
|
47
47
|
([GitHub](https://github.com/ZunTzu-Software/ZunTzu)) GameBox to
|
48
48
|
VASSAL module.
|
@@ -53,9 +53,10 @@ Aided Wargaming (CAW).
|
|
53
53
|
|
54
54
|
## Changes
|
55
55
|
|
56
|
-
|
57
|
-
|
58
|
-
|
56
|
+
- 0.4.1
|
57
|
+
- Some fixes to `pip` releases
|
58
|
+
- 0.4.0
|
59
|
+
- First release via `pip`
|
59
60
|
- 2nd of February, 2024
|
60
61
|
- Fix problem with background of maps exported from CyberBoard
|
61
62
|
gamebox. Thanks to @zovs66 for pointing this out.
|
@@ -64,47 +65,56 @@ date.
|
|
64
65
|
|
65
66
|
## Scripts
|
66
67
|
|
67
|
-
- [`vslmerge.py`](vassal/merge.py) merges VASSAL modules and
|
68
|
+
- [`vslmerge.py`](pywargame/vassal/merge.py) merges VASSAL modules and
|
68
69
|
extensions together into one module. This is work in progress.
|
69
|
-
Please report any problems you see.
|
70
|
+
Please report any problems you see.
|
70
71
|
|
71
|
-
- [`vmodpatch.py`](vassal/patch.py) patches a VASSAL modules
|
72
|
-
running a Python script on it. The input module file is
|
73
|
-
overwritten.
|
72
|
+
- [`vmodpatch.py`](pywargame/vassal/patch.py) patches a VASSAL modules
|
73
|
+
by running a Python script on it. The input module file is
|
74
|
+
overwritten.
|
74
75
|
|
75
|
-
- [`vsavdump.py`](vassal/dumpsave.py) dumps the content of a
|
76
|
-
save or log file to standard output.
|
76
|
+
- [`vsavdump.py`](pywargame/vassal/dumpsave.py) dumps the content of a
|
77
|
+
VASSAL save or log file to standard output.
|
77
78
|
|
78
|
-
- [`gbxextract.py`](cyberboard/gbxext.py) reads in a
|
79
|
-
GameBox file (`.gbx`) and writes out a ZIP file with
|
80
|
-
JSON file with information about the GameBox and the
|
79
|
+
- [`gbxextract.py`](pywargame/cyberboard/gbxext.py) reads in a
|
80
|
+
CyberBoard GameBox file (`.gbx`) and writes out a ZIP file with
|
81
|
+
images and a JSON file with information about the GameBox and the
|
82
|
+
images.
|
81
83
|
|
82
84
|
Pieces (units and markers) are saved as PNGs, while the boards are
|
83
85
|
saves as SVGs.
|
84
86
|
|
85
|
-
- [`gsnextract.py`](cyberboard/gsnext.py) reads in a
|
86
|
-
Scenario file (`.gsn`) and writes out a ZIP file with
|
87
|
-
JSON file with information about the Scenario, GameBox,
|
88
|
-
images.
|
87
|
+
- [`gsnextract.py`](pywargame/cyberboard/gsnext.py) reads in a
|
88
|
+
CyberBoard Scenario file (`.gsn`) and writes out a ZIP file with
|
89
|
+
images and a JSON file with information about the Scenario, GameBox,
|
90
|
+
and the images.
|
89
91
|
|
90
92
|
Pieces (units and markers) are saved as PNGs, while the boards are
|
91
93
|
saves as SVGs.
|
92
94
|
|
93
|
-
- [`gsnexport.py`](cyberboard/gsnexp.py) reads in a
|
95
|
+
- [`gsnexport.py`](pywargame/cyberboard/gsnexp.py) reads in a
|
94
96
|
CyberBoard Scenario file (`.gsn`) and generates a (draft) VASSAL
|
95
|
-
module. A Python script can be supplied to patch up the module.
|
97
|
+
module. A Python script can be supplied to patch up the module.
|
96
98
|
|
97
|
-
- [`ztexport.py`](zuntzu/ztexp.py) reads in a ZunTzu game
|
98
|
-
(`.ztb`) and generates a (draft) VASSAL module. A Python
|
99
|
-
be supplied to patch up the module.
|
99
|
+
- [`ztexport.py`](pywargame/zuntzu/ztexp.py) reads in a ZunTzu game
|
100
|
+
box file (`.ztb`) and generates a (draft) VASSAL module. A Python
|
101
|
+
script can be supplied to patch up the module.
|
100
102
|
|
101
|
-
- [`wgexport.py`](latex/main.py) reads in a PDF and JSON
|
102
|
-
from LaTeX sources using the
|
103
|
+
- [`wgexport.py`](pywargame/latex/main.py) reads in a PDF and JSON
|
104
|
+
file created from LaTeX sources using the
|
103
105
|
[`wargame`](https://gitlab.com/wargames_tex/wargame_tex) package,
|
104
106
|
and generates a (draft) VASSAL module. A Python script can be
|
105
107
|
supplied to patch up the module.
|
108
|
+
|
109
|
+
## Installation via `pip`
|
110
|
+
|
111
|
+
Just do
|
112
|
+
|
113
|
+
```
|
114
|
+
$ pip install pywargame
|
115
|
+
```
|
106
116
|
|
107
|
-
## Download
|
117
|
+
## Download as scripts
|
108
118
|
|
109
119
|
You can get the scripts in ZIP file
|
110
120
|
|
@@ -125,7 +135,8 @@ or individually
|
|
125
135
|
- [requirements.txt][]
|
126
136
|
- [README.md][]
|
127
137
|
|
128
|
-
or [browse][] the files.
|
138
|
+
or [browse][] the files. Note that these scripts are _standalone_ and
|
139
|
+
does not require a module installation of `pywargame`.
|
129
140
|
|
130
141
|
## Build
|
131
142
|
|
@@ -145,15 +156,24 @@ to ensure you have those installed.
|
|
145
156
|
To generate these scripts, do
|
146
157
|
|
147
158
|
cd pywargame/vassal && ./collect.py
|
159
|
+
cd pywargame/vassal && ./collectmrg.py
|
160
|
+
cd pywargame/vassal && ./collectpatch.py
|
161
|
+
cd pywargame/vassal && ./collectdump.py
|
148
162
|
cd pywargame/cyberboard && ./collect.py
|
149
163
|
cd pywargame/cyberboard && ./collectgbxext.py
|
150
164
|
cd pywargame/cyberboard && ./collectgsnext.py
|
151
165
|
cd pywargame/cyberboard && ./collectgsnexp.py
|
166
|
+
cd pywargame/zuntzu && ./collect.py
|
152
167
|
cd pywargame/latex && ./collect.py
|
168
|
+
cp pywargame/vassal/vassal.py .
|
169
|
+
cp pywargame/vassal/vslmerge.py .
|
170
|
+
cp pywargame/vassal/vmodpatch.py .
|
171
|
+
cp pywargame/vassal/vsavdump.py .
|
153
172
|
cp pywargame/cyberboard/gbxextract.py .
|
154
173
|
cp pywargame/cyberboard/gsnextract.py .
|
155
174
|
cp pywargame/cyberboard/gsnexport.py .
|
156
|
-
cp pywargame/
|
175
|
+
cp pywargame/zuntzu/ztexport.py .
|
176
|
+
cp pywargame/latex/wgexport.py .
|
157
177
|
|
158
178
|
or simply, on most modern operating systems,
|
159
179
|
|
@@ -203,7 +223,7 @@ scenario - can then be merged into one using the
|
|
203
223
|
[`vslmerge.py`](vassal/merge.py) script.
|
204
224
|
|
205
225
|
CyberBoard game boxes and scenarios made with CyberBoard prior to
|
206
|
-
version 3.0 are _not_ supported. You may have some luck opening
|
226
|
+
version 3.0 are _not_ supported. You may have some luck first opening
|
207
227
|
the game box and then the scenario with `CBDesign.exe` and
|
208
228
|
`CBPlay.exe`, respectively, and saving anew. Of course, this requires
|
209
229
|
an installation of CyberBoard (on Linux, use
|
@@ -7,7 +7,7 @@ Aided Wargaming (CAW).
|
|
7
7
|
|
8
8
|
- [`pywargame`](pywargame) Top of package
|
9
9
|
- [`common`](pywargame/common) Common utilities used by other code.
|
10
|
-
- [`vassal`](pywargame/vassal) Read or write
|
10
|
+
- [`vassal`](pywargame/vassal) Read or write
|
11
11
|
[VASSAL](https://vassalengine.org)
|
12
12
|
([GitHub](https://github.com/vassalengine/vassal)) modules,
|
13
13
|
including
|
@@ -17,7 +17,7 @@ Aided Wargaming (CAW).
|
|
17
17
|
- [`cyberboard`](pywargame/cyberboard) Read
|
18
18
|
[CyberBoard](http://cyberboard.norsesoft.com/)
|
19
19
|
([GitHub](https://github.com/CyberBoardPBEM/cbwindows)) GameBox
|
20
|
-
files.
|
20
|
+
and scenario files.
|
21
21
|
- [`zuntzu`](pywargame/zuntzu) Convert [ZunTzu](https://zuntzu.com)
|
22
22
|
([GitHub](https://github.com/ZunTzu-Software/ZunTzu)) GameBox to
|
23
23
|
VASSAL module.
|
@@ -28,9 +28,10 @@ Aided Wargaming (CAW).
|
|
28
28
|
|
29
29
|
## Changes
|
30
30
|
|
31
|
-
|
32
|
-
|
33
|
-
|
31
|
+
- 0.4.1
|
32
|
+
- Some fixes to `pip` releases
|
33
|
+
- 0.4.0
|
34
|
+
- First release via `pip`
|
34
35
|
- 2nd of February, 2024
|
35
36
|
- Fix problem with background of maps exported from CyberBoard
|
36
37
|
gamebox. Thanks to @zovs66 for pointing this out.
|
@@ -39,47 +40,56 @@ date.
|
|
39
40
|
|
40
41
|
## Scripts
|
41
42
|
|
42
|
-
- [`vslmerge.py`](vassal/merge.py) merges VASSAL modules and
|
43
|
+
- [`vslmerge.py`](pywargame/vassal/merge.py) merges VASSAL modules and
|
43
44
|
extensions together into one module. This is work in progress.
|
44
|
-
Please report any problems you see.
|
45
|
+
Please report any problems you see.
|
45
46
|
|
46
|
-
- [`vmodpatch.py`](vassal/patch.py) patches a VASSAL modules
|
47
|
-
running a Python script on it. The input module file is
|
48
|
-
overwritten.
|
47
|
+
- [`vmodpatch.py`](pywargame/vassal/patch.py) patches a VASSAL modules
|
48
|
+
by running a Python script on it. The input module file is
|
49
|
+
overwritten.
|
49
50
|
|
50
|
-
- [`vsavdump.py`](vassal/dumpsave.py) dumps the content of a
|
51
|
-
save or log file to standard output.
|
51
|
+
- [`vsavdump.py`](pywargame/vassal/dumpsave.py) dumps the content of a
|
52
|
+
VASSAL save or log file to standard output.
|
52
53
|
|
53
|
-
- [`gbxextract.py`](cyberboard/gbxext.py) reads in a
|
54
|
-
GameBox file (`.gbx`) and writes out a ZIP file with
|
55
|
-
JSON file with information about the GameBox and the
|
54
|
+
- [`gbxextract.py`](pywargame/cyberboard/gbxext.py) reads in a
|
55
|
+
CyberBoard GameBox file (`.gbx`) and writes out a ZIP file with
|
56
|
+
images and a JSON file with information about the GameBox and the
|
57
|
+
images.
|
56
58
|
|
57
59
|
Pieces (units and markers) are saved as PNGs, while the boards are
|
58
60
|
saves as SVGs.
|
59
61
|
|
60
|
-
- [`gsnextract.py`](cyberboard/gsnext.py) reads in a
|
61
|
-
Scenario file (`.gsn`) and writes out a ZIP file with
|
62
|
-
JSON file with information about the Scenario, GameBox,
|
63
|
-
images.
|
62
|
+
- [`gsnextract.py`](pywargame/cyberboard/gsnext.py) reads in a
|
63
|
+
CyberBoard Scenario file (`.gsn`) and writes out a ZIP file with
|
64
|
+
images and a JSON file with information about the Scenario, GameBox,
|
65
|
+
and the images.
|
64
66
|
|
65
67
|
Pieces (units and markers) are saved as PNGs, while the boards are
|
66
68
|
saves as SVGs.
|
67
69
|
|
68
|
-
- [`gsnexport.py`](cyberboard/gsnexp.py) reads in a
|
70
|
+
- [`gsnexport.py`](pywargame/cyberboard/gsnexp.py) reads in a
|
69
71
|
CyberBoard Scenario file (`.gsn`) and generates a (draft) VASSAL
|
70
|
-
module. A Python script can be supplied to patch up the module.
|
72
|
+
module. A Python script can be supplied to patch up the module.
|
71
73
|
|
72
|
-
- [`ztexport.py`](zuntzu/ztexp.py) reads in a ZunTzu game
|
73
|
-
(`.ztb`) and generates a (draft) VASSAL module. A Python
|
74
|
-
be supplied to patch up the module.
|
74
|
+
- [`ztexport.py`](pywargame/zuntzu/ztexp.py) reads in a ZunTzu game
|
75
|
+
box file (`.ztb`) and generates a (draft) VASSAL module. A Python
|
76
|
+
script can be supplied to patch up the module.
|
75
77
|
|
76
|
-
- [`wgexport.py`](latex/main.py) reads in a PDF and JSON
|
77
|
-
from LaTeX sources using the
|
78
|
+
- [`wgexport.py`](pywargame/latex/main.py) reads in a PDF and JSON
|
79
|
+
file created from LaTeX sources using the
|
78
80
|
[`wargame`](https://gitlab.com/wargames_tex/wargame_tex) package,
|
79
81
|
and generates a (draft) VASSAL module. A Python script can be
|
80
82
|
supplied to patch up the module.
|
83
|
+
|
84
|
+
## Installation via `pip`
|
85
|
+
|
86
|
+
Just do
|
87
|
+
|
88
|
+
```
|
89
|
+
$ pip install pywargame
|
90
|
+
```
|
81
91
|
|
82
|
-
## Download
|
92
|
+
## Download as scripts
|
83
93
|
|
84
94
|
You can get the scripts in ZIP file
|
85
95
|
|
@@ -100,7 +110,8 @@ or individually
|
|
100
110
|
- [requirements.txt][]
|
101
111
|
- [README.md][]
|
102
112
|
|
103
|
-
or [browse][] the files.
|
113
|
+
or [browse][] the files. Note that these scripts are _standalone_ and
|
114
|
+
does not require a module installation of `pywargame`.
|
104
115
|
|
105
116
|
## Build
|
106
117
|
|
@@ -120,15 +131,24 @@ to ensure you have those installed.
|
|
120
131
|
To generate these scripts, do
|
121
132
|
|
122
133
|
cd pywargame/vassal && ./collect.py
|
134
|
+
cd pywargame/vassal && ./collectmrg.py
|
135
|
+
cd pywargame/vassal && ./collectpatch.py
|
136
|
+
cd pywargame/vassal && ./collectdump.py
|
123
137
|
cd pywargame/cyberboard && ./collect.py
|
124
138
|
cd pywargame/cyberboard && ./collectgbxext.py
|
125
139
|
cd pywargame/cyberboard && ./collectgsnext.py
|
126
140
|
cd pywargame/cyberboard && ./collectgsnexp.py
|
141
|
+
cd pywargame/zuntzu && ./collect.py
|
127
142
|
cd pywargame/latex && ./collect.py
|
143
|
+
cp pywargame/vassal/vassal.py .
|
144
|
+
cp pywargame/vassal/vslmerge.py .
|
145
|
+
cp pywargame/vassal/vmodpatch.py .
|
146
|
+
cp pywargame/vassal/vsavdump.py .
|
128
147
|
cp pywargame/cyberboard/gbxextract.py .
|
129
148
|
cp pywargame/cyberboard/gsnextract.py .
|
130
149
|
cp pywargame/cyberboard/gsnexport.py .
|
131
|
-
cp pywargame/
|
150
|
+
cp pywargame/zuntzu/ztexport.py .
|
151
|
+
cp pywargame/latex/wgexport.py .
|
132
152
|
|
133
153
|
or simply, on most modern operating systems,
|
134
154
|
|
@@ -178,7 +198,7 @@ scenario - can then be merged into one using the
|
|
178
198
|
[`vslmerge.py`](vassal/merge.py) script.
|
179
199
|
|
180
200
|
CyberBoard game boxes and scenarios made with CyberBoard prior to
|
181
|
-
version 3.0 are _not_ supported. You may have some luck opening
|
201
|
+
version 3.0 are _not_ supported. You may have some luck first opening
|
182
202
|
the game box and then the scenario with `CBDesign.exe` and
|
183
203
|
`CBPlay.exe`, respectively, and saving anew. Of course, this requires
|
184
204
|
an installation of CyberBoard (on Linux, use
|
@@ -1,10 +1,11 @@
|
|
1
1
|
#!/usr/bin/env python
|
2
2
|
|
3
|
-
|
3
|
+
# --------------------------------------------------------------------
|
4
|
+
def diceMain():
|
4
5
|
from sys import path
|
5
6
|
|
6
7
|
from argparse import ArgumentParser
|
7
|
-
from dicedraw import DiceDrawer
|
8
|
+
from pywargame.common.dicedraw import DiceDrawer
|
8
9
|
|
9
10
|
ap = ArgumentParser(description='Make a series of dice images')
|
10
11
|
ap.add_argument('-n','--sides', choices=[4,6,8,10,12,20],
|
@@ -35,6 +36,14 @@ if __name__ == '__main__':
|
|
35
36
|
range(1,args.sides+1))
|
36
37
|
for val in vals:
|
37
38
|
dd.draw(val).save(filename=base.format(sides=args.sides,value=val))
|
39
|
+
|
40
|
+
# --------------------------------------------------------------------
|
41
|
+
if __name__ == '__main__':
|
42
|
+
diceMain()
|
43
|
+
|
44
|
+
# --------------------------------------------------------------------
|
45
|
+
#
|
46
|
+
# EOF
|
47
|
+
#
|
38
48
|
|
39
|
-
|
40
49
|
|
@@ -5,17 +5,16 @@
|
|
5
5
|
# https://github.com/CyberBoardPBEM/cbwindows
|
6
6
|
#
|
7
7
|
#
|
8
|
-
|
8
|
+
## BEGIN_IMPORT
|
9
|
+
from pywargame.cyberboard.gamebox import GameBox
|
10
|
+
from pywargame.cyberboard.extractor import GBXExtractor
|
11
|
+
from pywargame.common import Verbose
|
12
|
+
## END_IMPORT
|
9
13
|
|
10
14
|
# ====================================================================
|
11
|
-
|
15
|
+
def extractMain():
|
12
16
|
from argparse import ArgumentParser, FileType
|
13
17
|
from pathlib import Path
|
14
|
-
## BEGIN_IMPORT
|
15
|
-
from gamebox import GameBox
|
16
|
-
from extractor import GBXExtractor
|
17
|
-
from common import Verbose
|
18
|
-
## END_IMPORT
|
19
18
|
|
20
19
|
ap = ArgumentParser(description='Extract information from a '
|
21
20
|
'CyberBoard GameBox file and store in ZIP archive',
|
@@ -58,7 +57,12 @@ if __name__ == '__main__':
|
|
58
57
|
print(rat)
|
59
58
|
if 'gbx' in args.dump:
|
60
59
|
print(gbx)
|
61
|
-
|
62
60
|
|
63
61
|
|
64
|
-
|
62
|
+
# ====================================================================
|
63
|
+
if __name__ == '__main__':
|
64
|
+
extractMain()
|
65
|
+
|
66
|
+
#
|
67
|
+
# EOF
|
68
|
+
#
|
@@ -1,16 +1,14 @@
|
|
1
1
|
#!/usr/bin/env python
|
2
|
+
## BEGIN_IMPORTS
|
3
|
+
from pywargame.common import Verbose
|
4
|
+
from pywargame.cyberboard.exporter import GSNExporter
|
5
|
+
from pywargame.cyberboard.scenario import Scenario
|
6
|
+
from pywargame.cyberboard.extractor import GSNExtractor
|
7
|
+
from pywargame.cyberboard.head import GBXHeader
|
8
|
+
## END_IMPORTS
|
2
9
|
|
3
10
|
# ====================================================================
|
4
|
-
def
|
5
|
-
## BEGIN_IMPORTS
|
6
|
-
from sys import path
|
7
|
-
path.append('..')
|
8
|
-
from pywargame.common import Verbose
|
9
|
-
from pywargame.cyberboard.exporter import GSNExporter
|
10
|
-
from pywargame.cyberboard.scenario import Scenario
|
11
|
-
from pywargame.cyberboard.extractor import GSNExtractor
|
12
|
-
from pywargame.cyberboard.head import GBXHeader
|
13
|
-
## END_IMPORTS
|
11
|
+
def exportMain():
|
14
12
|
|
15
13
|
from argparse import ArgumentParser, FileType, \
|
16
14
|
RawDescriptionHelpFormatter
|
@@ -147,5 +145,12 @@ def gsnexp():
|
|
147
145
|
raise e
|
148
146
|
|
149
147
|
|
148
|
+
# ====================================================================
|
150
149
|
if __name__ == '__main__':
|
151
150
|
gsnexp()
|
151
|
+
|
152
|
+
# ====================================================================
|
153
|
+
#
|
154
|
+
# EOF
|
155
|
+
#
|
156
|
+
|
@@ -5,17 +5,18 @@
|
|
5
5
|
# https://github.com/CyberBoardPBEM/cbwindows
|
6
6
|
#
|
7
7
|
#
|
8
|
-
|
8
|
+
# ====================================================================
|
9
|
+
## BEGIN_IMPORT
|
10
|
+
from pywargame.cyberboard.scenario import Scenario
|
11
|
+
from pywargame.cyberboard.extractor import GSNExtractor
|
12
|
+
from pywargame.common import Verbose
|
13
|
+
## END_IMPORT
|
14
|
+
|
9
15
|
|
10
16
|
# ====================================================================
|
11
|
-
def
|
17
|
+
def extractMain():
|
12
18
|
from argparse import ArgumentParser, FileType
|
13
19
|
from pathlib import Path
|
14
|
-
## BEGIN_IMPORT
|
15
|
-
from pywargame.cyberboard.scenario import Scenario
|
16
|
-
from pywargame.cyberboard.extractor import GSNExtractor
|
17
|
-
from pywargame.common import Verbose
|
18
|
-
## END_IMPORT
|
19
20
|
|
20
21
|
ap = ArgumentParser(description='Extract information from a '
|
21
22
|
'CyberBoard Scenario file and store in ZIP archive',
|
@@ -50,6 +51,7 @@ def gsnext():
|
|
50
51
|
if 'gsn' in args.dump:
|
51
52
|
print(gsn)
|
52
53
|
|
54
|
+
# ====================================================================
|
53
55
|
if __name__ == '__main__':
|
54
56
|
gsnext()
|
55
57
|
|
@@ -1,12 +1,14 @@
|
|
1
1
|
#!/usr/bin/env python
|
2
2
|
## BEGIN_IMPORT
|
3
|
-
from gamebox import GBXInfo
|
4
|
-
from head import GBXHeader
|
5
|
-
from archive import Archive
|
3
|
+
from pywargame.cyberboard.gamebox import GBXInfo
|
4
|
+
from pywargame.cyberboard.head import GBXHeader
|
5
|
+
from pywargame.cyberboard.archive import Archive
|
6
6
|
## END_IMPORT
|
7
7
|
|
8
|
+
# --------------------------------------------------------------------
|
8
9
|
nullpwd = b'\xee\n\xcbg\xbc\xdb\x92\x1a\x0c\xd2\xf1y\x83*\x96\xc9'
|
9
10
|
|
11
|
+
# --------------------------------------------------------------------
|
10
12
|
def zeropwd(filename):
|
11
13
|
from pathlib import Path
|
12
14
|
|
@@ -14,9 +16,7 @@ def zeropwd(filename):
|
|
14
16
|
with Archive(filename,'rb') as ar:
|
15
17
|
header = GBXHeader(ar,GBXHeader.BOX)
|
16
18
|
box = GBXInfo(ar)
|
17
|
-
|
18
|
-
|
19
|
-
pos = ar.tell() - 4*2 - 2 - 2 - 16
|
19
|
+
pos = ar.tell() - 4*2 - 2 - 2 - 16
|
20
20
|
|
21
21
|
with open(filename,'rb') as file:
|
22
22
|
cnt = file.read()
|
@@ -31,15 +31,22 @@ def zeropwd(filename):
|
|
31
31
|
with open(on,'wb') as file:
|
32
32
|
file.write(ncnt)
|
33
33
|
|
34
|
-
|
35
|
-
|
34
|
+
# --------------------------------------------------------------------
|
35
|
+
def zeroPwdMain():
|
36
36
|
from argparse import ArgumentParser, FileType
|
37
37
|
ap = ArgumentParser(description='Disable password in gamebox')
|
38
|
-
ap.add_argument('input', type=str, help='The file')
|
38
|
+
ap.add_argument('input', type=str, help='The game box file')
|
39
39
|
|
40
40
|
args = ap.parse_args()
|
41
41
|
|
42
42
|
zeropwd(args.input)
|
43
|
+
|
44
|
+
# --------------------------------------------------------------------
|
45
|
+
if __name__ == '__main__':
|
46
|
+
zeroPwdMain()
|
43
47
|
|
44
|
-
|
45
|
-
|
48
|
+
# --------------------------------------------------------------------
|
49
|
+
#
|
50
|
+
# EOF
|
51
|
+
#
|
52
|
+
|
@@ -1,11 +1,11 @@
|
|
1
1
|
## BEGIN_IMPORTS
|
2
|
-
from common import VerboseGuard, Verbose
|
3
|
-
from vassal.buildfile import BuildFile
|
4
|
-
from vassal.documentation import Documentation
|
5
|
-
from vassal.traits import *
|
6
|
-
from vassal.base import *
|
7
|
-
from vassal.moduledata import ModuleData
|
8
|
-
from vassal.exporter import Exporter
|
2
|
+
from .. common import VerboseGuard, Verbose
|
3
|
+
from .. vassal.buildfile import BuildFile
|
4
|
+
from .. vassal.documentation import Documentation
|
5
|
+
from .. vassal.traits import *
|
6
|
+
from .. vassal.base import *
|
7
|
+
from .. vassal.moduledata import ModuleData
|
8
|
+
from .. vassal.exporter import Exporter
|
9
9
|
from pprint import pprint
|
10
10
|
|
11
11
|
## END_IMPORTS
|
@@ -1,8 +1,8 @@
|
|
1
1
|
#!/usr/bin/env python
|
2
2
|
## BEGIN_IMPORTS
|
3
|
-
from latexexporter import LaTeXExporter
|
4
|
-
from vassal.vmod import VMod
|
5
|
-
from common import Verbose
|
3
|
+
from pywargame.latex.latexexporter import LaTeXExporter
|
4
|
+
from pywargame.vassal.vmod import VMod
|
5
|
+
from pywargame.common import Verbose
|
6
6
|
## END_IMPORTS
|
7
7
|
|
8
8
|
from argparse import ArgumentParser
|
@@ -88,9 +88,9 @@ def exportIt(args):
|
|
88
88
|
|
89
89
|
raise e
|
90
90
|
|
91
|
-
|
91
|
+
|
92
92
|
# ====================================================================
|
93
|
-
|
93
|
+
def exportMain():
|
94
94
|
from argparse import ArgumentParser, FileType
|
95
95
|
|
96
96
|
ap = DefaultSubcommandArgParse(description='Create draft VASSAL module')
|
@@ -178,7 +178,11 @@ if __name__ == '__main__':
|
|
178
178
|
patchIt(args)
|
179
179
|
else:
|
180
180
|
exportIt(args)
|
181
|
-
|
181
|
+
|
182
|
+
# ====================================================================
|
183
|
+
if __name__ == '__main__':
|
184
|
+
exportMain()
|
185
|
+
|
182
186
|
#
|
183
187
|
# EOF
|
184
188
|
#
|
@@ -28,7 +28,7 @@ if __name__ == '__main__':
|
|
28
28
|
'../common/verbose.py',
|
29
29
|
'../common/verboseguard.py',
|
30
30
|
'../common/dicedraw.py',
|
31
|
-
'
|
31
|
+
'xmlns.py',
|
32
32
|
'base.py',
|
33
33
|
'element.py',
|
34
34
|
'folder.py',
|
@@ -93,6 +93,7 @@ if __name__ == '__main__':
|
|
93
93
|
'vsav.py',
|
94
94
|
'vmod.py',
|
95
95
|
'upgrade.py',
|
96
|
-
'exporter.py'
|
96
|
+
'exporter.py',
|
97
|
+
'merger.py')
|
97
98
|
|
98
99
|
|
@@ -1,9 +1,10 @@
|
|
1
1
|
#!/usr/bin/env python
|
2
2
|
## BEGIN_IMPORT
|
3
|
-
from .
|
3
|
+
from pywargame.vassal import SaveIO
|
4
4
|
## END_IMPORT
|
5
5
|
|
6
|
-
|
6
|
+
# ====================================================================
|
7
|
+
def dumpMain():
|
7
8
|
from argparse import ArgumentParser
|
8
9
|
|
9
10
|
ap = ArgumentParser(description='Dump VASSAL save or log')
|
@@ -19,6 +20,10 @@ if __name__ == '__main__':
|
|
19
20
|
savemeta, modulemeta = ret[2], ret[3]
|
20
21
|
|
21
22
|
print('\n'.join(lines))
|
23
|
+
|
24
|
+
# ====================================================================
|
25
|
+
if __name__ == '__main__':
|
26
|
+
dumpMain()
|
22
27
|
#
|
23
28
|
#
|
24
29
|
#
|