Skip to main content

A parser for I Wanna Maker maps

Project description

pywannamaker

A python package for parsing and serializing I Wanna Maker maps from and back to their XML format.

Usage

Importing the pywannamaker module imports all required submodules.

Opening maps

Several functions load and parse a map.

  • parseFile does so from a file object or file path.
  • parseLocal opens a map with the provided name in the actual game maps folder (specified in config.py).
  • parseString opens a map from the provided string.

Worth noting is that each of these functions can correctly open any non-param element, meaning you can e.g. store individual objects in files.

Saving

  • Map.serialize returns the map string.
  • Map.save saves the map to the provided file path.
  • Map.saveLocal saves the name in the game maps folder with the provided name

Object structure

  • Map
    • properties: Properties
    • objects: [Object]
  • Properties
    • name: str
    • version: str
    • tileset: str
    • tileset2: str
    • bg: str
    • spikes: str
    • spikes2: str
    • width: str
    • height: str
    • colors: str
    • scroll_mode: str
    • music: str
  • Object
    • type: int
    • x: int
    • y: int
    • sprite_angle: int
    • name: str - empty string if unnamed
    • params: dict[str, str]
    • events: [Event]
    • children: [Object]
    • linked: [Object]
  • Event
    • event_index: int
    • params: dict[str, str]
    • events: [Event]

Examples

import pywannamaker as pywm
m = pywm.Map()
m.saveLocal('empty.map')

Creates a new map and saves it.

import pywannamaker as pywm
m = pywm.parseLocal('input.map')
for o in m.objects:
    o.x = float(m.properties.width) - o.x

Mirrors a level horizontally

from pywannamaker import Object, Event, ObjectType, EventType, ActionType
cannon = Object(ObjectType.CANNON, 400, 304)
onmetronome = Event(EventType.ONMETRONOMETICK)
onmetronome.params['frames'] = 25
onmetronome.events.append(Event(ActionType.FIRECANNON))
cannon.events.append(onmetronome)

Creates a new cannon object, and gives it an On metronome -> Fire event.

import pywannamaker as pywm
m = pywm.parseLocal('input.map')
target = None
for o in m.objects:
    if o.name == 'target':
        target = o
        break

Find an object in a map according to its name. Note this does not check any child objects. e.g. objects inside cannons

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pywannamaker-0.0.4.tar.gz (6.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pywannamaker-0.0.4-py3-none-any.whl (9.2 kB view details)

Uploaded Python 3

File details

Details for the file pywannamaker-0.0.4.tar.gz.

File metadata

  • Download URL: pywannamaker-0.0.4.tar.gz
  • Upload date:
  • Size: 6.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.5

File hashes

Hashes for pywannamaker-0.0.4.tar.gz
Algorithm Hash digest
SHA256 56878e224224f368f9a1ef3c2f32e707c757665e20a075ad9630455d61e2927c
MD5 53d0cf8003de98d3cc9fbfad816268b4
BLAKE2b-256 182e5fabddba9826326575f433f1442baf10d247a6ffcac1b77db51e682ae185

See more details on using hashes here.

File details

Details for the file pywannamaker-0.0.4-py3-none-any.whl.

File metadata

  • Download URL: pywannamaker-0.0.4-py3-none-any.whl
  • Upload date:
  • Size: 9.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.5

File hashes

Hashes for pywannamaker-0.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 e7dea5aaf51f454f28579444b9978e1e2cd8473f6e5bf0aca5c59cbb515ac4e7
MD5 e328b6d6a9fbadbf0fbe55b9d45012ed
BLAKE2b-256 c81faac91943db2e1ad1e7a0adcae6c79966cc6326c3d61da57cade6d8056d27

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page