Skip to content

A library which calculates signals and electricity.

License

Notifications You must be signed in to change notification settings

AaravMalani/powerengine

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PowerEngine: A library which calculates signals and electricity.

Installation

python -m pip install powerengine
# OR
python -m pip install git+https://github.com/AaravMalani/powerengine

Usage

from powerengine import Engine
engine = Engine()
engine.add_blocks([
    Power(engine, {}, (0, 0, 0)),
    Wire(engine, {'facing': None}, (0, 0, 1)),
    Wire(engine, {'facing': None}, (0, 0, 2)),
    Delayer(engine, {'facing': 'east', 'delay': 5}, (0, 0, 3)),
    Wire(engine, {'facing': None}, (0, 0, 4)),
])
engine.run(3, ignore_speed=True, output=False) 

Plugin Structure

Each plugin is a directory in the installation/path/plugins directory.

It contains a manifest.json JSON file with the following fields.

Field Type Description
name string Plugin name
version string Plugin version
author (optional) string or array[string] The author of the plugin
blockTypes object[string, array[string]] An object of the screaming snake case version of the name to the block types defined (each block type being an array of [namespace, id])

A plugin is a Python module (it has an __init__.py)

An example plugin would be

main.py

import powerengine
class PizzaBlock(powerengine.Block):
    id = ('pizzamod', 'pizzablock')
    def update(self, engine : powerengine.Engine):
        self.state['facing'] = {
            'north': 'south',
            'east': 'west',
            'south': 'north',
            'west': 'east'
        }[self.state['facing']]

__init__.py

from .main import PizzaBlock

manifest.json

{
    "name": "Pizza Mod",
    "version": "1.0.0",
    "blockTypes": {"PIZZA_BLOCK": ["pizzamod", "pizzablock"]}
}

About

A library which calculates signals and electricity.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages