Skip to main content

Scrap Mechanic Library for Blueprint manipulation.

Project description

sm_blueprint_lib

Scrap Mechanic Library for Blueprint manipulation.

Instalation

pip install sm_blueprint_lib

Updating version

pip install --upgrade sm_blueprint_lib

Usage

import numpy as np

import sm_blueprint_lib as sm

# Create a Blueprint object to store your parts
bp = sm.Blueprint()

# Define your stuff as you like, ID's are generated automatically or u can create them manually
# The controller argument is converted to the needed LogicGateController class

# There are 2 ways to set the mode of a controller
# 0: and, 1: or, 2: xor, 3: nand, 4: nor, 5: xnor
# "and", "or", "xor", "nand", "nor", "xnor"

# colors can be Defined as hex eg "1122ff" or as a RGB tuple eg (17, 34, 255)
# there is also the paint gun colors
# sm.PAINT_COLOR.Yellow
# You can even use the closet matching name
# sm.PAINT_COLOR.Barberry


single_and = sm.LogicGate(pos=(0, 0, 0), color="1122ff", controller=0)
single_or = sm.LogicGate(sm.Pos(0, 2, 0), sm.PAINT_COLOR.Blue, 1)
single_self_wired_xor = sm.LogicGate(
    pos=sm.Pos(0, 4, 0),
    color="5522ff",
    # Or define it explicitly
    controller=sm.LogicGateController(mode=2, id=9999999, controllers=[sm.ID(9999999)])
)

# Create multiple gates at the same time
row_0 = [sm.LogicGate((x, 6, 0), "ffffff", "and") for x in range(10)]
row_1 = [sm.LogicGate((-1, 6, z + 1), "ffffff", 0) for z in range(10)]
# Define matrices using numpy
matrix = np.ndarray((10, 10), dtype=sm.LogicGate)
for x in range(10):
    for z in range(10):
        # Define custom rotation (xaxis, zaxis)
        matrix[x, z] = sm.LogicGate(
            (x, 8, z + 1), "000000", 5, xaxis=1, zaxis=2)

single_nor = sm.LogicGate(sm.Pos(0, 11, 0), "ee22ff", 4)

row_2 = [sm.LogicGate((x, 13, 0), "ffffff", 0) for x in range(10)]
row_3 = [sm.LogicGate((-1, 13, z + 1), "ffffff", 0) for z in range(10)]

# Simple Timer loop
loop = [sm.LogicGate((4, 0, 0), "987654"),
        # TimerController can be passed as (seconds, ticks)
        sm.Timer((5, 0, 0), "3210ff", (1, 0)),
        sm.LogicGate((6, 0, 0), "eeddcc", 3)]

# Connect stuff
# 1 to 1
sm.connect(single_and, single_or)
sm.connect(single_or, single_self_wired_xor)
sm.connect(row_0, row_1)    # With parallel=True (ie row to row)
# 1 to many
sm.connect(single_self_wired_xor, row_0)
sm.connect(row_0, matrix)
# Many to 1
sm.connect(matrix, single_nor)
# Many to many
# With parallel=False (ie everything connects to everything)
sm.connect(row_2, row_3, parallel=False)
# You can also chain single gate connections
loop[0].connect(loop[1]).connect(loop[2]).connect(loop[0])

# Put all parts into the blueprint
# Note that it doesn't care if it's a single gate or arrays
bp.add(single_and, single_or, single_self_wired_xor,
       row_0, row_1, matrix, single_nor, row_2, row_3, loop)

# Finally, save the blueprint into a file or dump it as a string
print(sm.dump_string_from_blueprint(bp))

# To make a new blueprint
sm.make_new_blueprint("sm_lib_test_blueprint", bp)

# Or save over an existing blueprint
sm.save_blueprint("sm_lib_test_blueprint", bp)

Results

1 to 1 and loop

1 to 1 and loop

Row to row and 1 to many

row to row and 1 to many

Many to 1 and many to many

many to 1 and many to many

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

sm_blueprint_lib-0.0.17.tar.gz (27.1 MB view details)

Uploaded Source

Built Distribution

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

sm_blueprint_lib-0.0.17-py3-none-any.whl (15.6 MB view details)

Uploaded Python 3

File details

Details for the file sm_blueprint_lib-0.0.17.tar.gz.

File metadata

  • Download URL: sm_blueprint_lib-0.0.17.tar.gz
  • Upload date:
  • Size: 27.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.11

File hashes

Hashes for sm_blueprint_lib-0.0.17.tar.gz
Algorithm Hash digest
SHA256 45dab159ece331c5e062021d0f4030ef21cc38c2cfc3908908557c528747b4ad
MD5 6b1ce57b76d3fddd7368608e2d0e7f68
BLAKE2b-256 55efa4e4427e7741a185e02c7cbc3c8b6726c0315ec83d364f4c070937375884

See more details on using hashes here.

File details

Details for the file sm_blueprint_lib-0.0.17-py3-none-any.whl.

File metadata

File hashes

Hashes for sm_blueprint_lib-0.0.17-py3-none-any.whl
Algorithm Hash digest
SHA256 b9a3c54f0c03dd09fa10d23b2436569f04ae7c216bae1e057083fe0c846f59fb
MD5 c290f14f0cfc8f0c2c413a2b0f5da162
BLAKE2b-256 fd2fe6376380a6506b6d34539b9558702aa1fe58f35021df4c26666494410db4

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