mirror of
https://gitlab.com/GameFeverOnline/py-mmlv.git
synced 2025-12-18 17:57:42 -04:00
Added set_ver and implemented api access for version
This commit is contained in:
parent
7439c11168
commit
a894caba0a
4 changed files with 88 additions and 85 deletions
|
|
@ -4,7 +4,12 @@ The goal is to create a library that reads a mmlv file, and then creates variabl
|
|||
and just give it for example, mm1iceman = [1, 2, 3] , the 1 meaning that it's active and the 2 and 3 it's position in space. In the future there will be more inputs for settings of objects.
|
||||
It could also work by calling a function, say place_tile(tilename, x, y) and then do that for every tile placement call. That would separate the placing of tiles from the placing of objects and more.
|
||||
"""
|
||||
import configparser, os, definitions
|
||||
|
||||
try:
|
||||
import configparser, os, definitions
|
||||
import requests
|
||||
except ModuleNotFoundError:
|
||||
print("module not found, please install configparser, requests, os and have the definitions.py in the same folder as mmlv_library.py")
|
||||
section = "Level"
|
||||
config = configparser.ConfigParser()
|
||||
#filename = "blank.mmlv"
|
||||
|
|
@ -63,6 +68,16 @@ def get_items():
|
|||
items = config.items(section)
|
||||
return items
|
||||
|
||||
|
||||
def set_setting(alias_or_code,value,code=False):
|
||||
if not code:
|
||||
alias_or_code = alias[alias_or_code]
|
||||
|
||||
else:
|
||||
alias_or_code = str(alias_or_code)
|
||||
value = set_apos(value)
|
||||
config.set(section, alias_or_code, value)
|
||||
|
||||
#done. Sets level creator's user name
|
||||
def set_user(username):
|
||||
if config.has_option(section, alias["user_name"]):
|
||||
|
|
@ -75,6 +90,19 @@ def get_user():
|
|||
return current_username
|
||||
|
||||
|
||||
def is_block_used(x, y, details=False):
|
||||
conv_list = conv_coordinates_x16(x, y)
|
||||
x = conv_list[0]
|
||||
y = conv_list[1]
|
||||
for letter in definitions.block_with_coordinates:
|
||||
current = letter + str(x) + "," + str(y)
|
||||
try:
|
||||
answ_option = config[section][current]
|
||||
return True
|
||||
except KeyError:
|
||||
return False
|
||||
#this will optionally report WHAT is actually in there.
|
||||
|
||||
def set_tile_value(k_value, j_value, i_value, e_value, a_value, posX_16, posY_16):
|
||||
config.set(section,letter + posX_16 + "," + posY_16, k_value)
|
||||
config.set(section,letter + posX_16 + "," + posY_16, j_value)
|
||||
|
|
@ -82,13 +110,16 @@ def set_tile_value(k_value, j_value, i_value, e_value, a_value, posX_16, posY_16
|
|||
config.set(section,letter + posX_16 + "," + posY_16, e_value)
|
||||
config.set(section,letter + posX_16 + "," + posY_16, a_value)
|
||||
|
||||
|
||||
#Needs work for choosing specific version of tilename (subtypes?), other versions of tiles (e.g. mm1electile1), and it also needs optional automatic room activator.
|
||||
def set_tile(x, y, tilename="mm1cuttile", block_type="normal", tile_subtype=False, room_active=1):
|
||||
by16 = conv_coordinates_x16(x, y)
|
||||
x16 = str(by16[0])
|
||||
y16 = str(by16[1])
|
||||
#this needs a check to see if the coordinates are already taken, and deal with object-tile conflicts accordingly.
|
||||
|
||||
if is_block_used(x, y):
|
||||
#this needs a check to see if the coordinates are already taken, and deal with object-tile conflicts accordingly.
|
||||
opt = get_options()
|
||||
#WIP
|
||||
option = 0
|
||||
error = False
|
||||
|
||||
|
|
@ -163,37 +194,36 @@ def set_player(x, y,type="mm", allow_duplicates=0):
|
|||
option = '"1.000"'
|
||||
config.set(section,letter + x16 + "," + y16, option)
|
||||
|
||||
|
||||
def is_block_used(x, y, details=False):
|
||||
conv_list = conv_coordinates_x16(x, y)
|
||||
x = conv_list[0]
|
||||
y = conv_list[1]
|
||||
for letter in definitions.block_with_coordinates:
|
||||
current = letter + str(x) + "," + str(y)
|
||||
try:
|
||||
answ_option = config[section][current]
|
||||
return True
|
||||
except KeyError:
|
||||
return False
|
||||
#this will optionally report WHAT is actually in there.
|
||||
|
||||
def del_tile(x,y,disable=False):
|
||||
for letter in definitions.block_with_coordinates:
|
||||
current = letter + str(x) + ',' + str(y)
|
||||
config.remove_option(section, current)
|
||||
|
||||
def set_ver(version=False):
|
||||
if not version:
|
||||
api_version = "https://api.megamanmaker.com/version"
|
||||
ver = requests.get(api_version)
|
||||
ver_num = ver.json()["version"]
|
||||
else:
|
||||
ver_num = version
|
||||
set_setting(alias["game_version"], ver_num, True)
|
||||
|
||||
|
||||
|
||||
#def set_object(x, y, object_name, setting1):
|
||||
# config.set(section, ) < I'll maybe add the set_player function here, because they are sort of objects. That way everything can be made through here.'
|
||||
"""
|
||||
< this will erase the entry for the tile, not just disable it. Maybe optional disable.
|
||||
def list_tiles < this will return a list of tiles already on the level as a list each one with every of the 5 values for the 5 letters
|
||||
def default_blank < this is to give a blank canvas for every action. Maybe this will only be used for if a mmlv is blank (example: custom filename on write_changes())
|
||||
def set_setting
|
||||
|
||||
def set_background
|
||||
"""
|
||||
#def set_ver(gamever) < this may support mega maker's api to get current version.'
|
||||
|
||||
# A problem that has to be fixed some day is that EVERY TILE WILL NOT APPEAR ON EDITOR TILL A PLAY TEST. It has something to do with the 1s, 1q,1p and 1r entries. I set the max value that works but on MMLV Editor the value changes if a tile is more torward the top left. Maybe an algorithm is needed to count every tile from the level and update those values accordingly.
|
||||
|
||||
read_file()
|
||||
print(get_options())
|
||||
set_setting("level_name", "does this work?")
|
||||
set_ver()
|
||||
write_changes("sample.mmlv")
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue