let python's MRO handle sprite palette defaults

This commit is contained in:
Fabian Dill 2020-09-15 05:31:17 +02:00
parent f0eebdd84f
commit a0f7653f50
1 changed files with 12 additions and 15 deletions

15
Rom.py
View File

@ -12,6 +12,7 @@ import sys
import subprocess import subprocess
import threading import threading
import concurrent.futures import concurrent.futures
from typing import Optional
from BaseClasses import CollectionState, ShopType, Region, Location from BaseClasses import CollectionState, ShopType, Region, Location
from Dungeons import dungeon_music_addresses from Dungeons import dungeon_music_addresses
@ -380,28 +381,26 @@ def get_sprite_from_name(name, local_random=random):
return _sprite_table.get(name, None) return _sprite_table.get(name, None)
class Sprite(object): class Sprite(object):
default_palette = [255, 127, 126, 35, 183, 17, 158, 54, 165, 20, 255, 1, 120, 16, 157, palette = (255, 127, 126, 35, 183, 17, 158, 54, 165, 20, 255, 1, 120, 16, 157,
89, 71, 54, 104, 59, 74, 10, 239, 18, 92, 42, 113, 21, 24, 122, 89, 71, 54, 104, 59, 74, 10, 239, 18, 92, 42, 113, 21, 24, 122,
255, 127, 126, 35, 183, 17, 158, 54, 165, 20, 255, 1, 120, 16, 157, 255, 127, 126, 35, 183, 17, 158, 54, 165, 20, 255, 1, 120, 16, 157,
89, 128, 105, 145, 118, 184, 38, 127, 67, 92, 42, 153, 17, 24, 122, 89, 128, 105, 145, 118, 184, 38, 127, 67, 92, 42, 153, 17, 24, 122,
255, 127, 126, 35, 183, 17, 158, 54, 165, 20, 255, 1, 120, 16, 157, 255, 127, 126, 35, 183, 17, 158, 54, 165, 20, 255, 1, 120, 16, 157,
89, 87, 16, 126, 69, 243, 109, 185, 126, 92, 42, 39, 34, 24, 122, 89, 87, 16, 126, 69, 243, 109, 185, 126, 92, 42, 39, 34, 24, 122,
255, 127, 126, 35, 218, 17, 158, 54, 165, 20, 255, 1, 120, 16, 151, 255, 127, 126, 35, 218, 17, 158, 54, 165, 20, 255, 1, 120, 16, 151,
61, 71, 54, 104, 59, 74, 10, 239, 18, 126, 86, 114, 24, 24, 122] 61, 71, 54, 104, 59, 74, 10, 239, 18, 126, 86, 114, 24, 24, 122)
default_glove_palette = [246, 82, 118, 3] glove_palette = (246, 82, 118, 3)
author_name:Optional[str] = None
def __init__(self, filename): def __init__(self, filename):
with open(filename, 'rb') as file: with open(filename, 'rb') as file:
filedata = bytearray(file.read()) filedata = bytearray(file.read())
self.name = os.path.basename(filename) self.name = os.path.basename(filename)
self.author_name = None
self.valid = True self.valid = True
if len(filedata) == 0x7000: if len(filedata) == 0x7000:
# sprite file with graphics and without palette data # sprite file with graphics and without palette data
self.sprite = filedata[:0x7000] self.sprite = filedata[:0x7000]
self.palette = list(self.default_palette)
self.glove_palette = list(self.default_glove_palette)
elif len(filedata) == 0x7078: elif len(filedata) == 0x7078:
# sprite file with graphics and palette data # sprite file with graphics and palette data
self.sprite = filedata[:0x7000] self.sprite = filedata[:0x7000]
@ -428,11 +427,9 @@ class Sprite(object):
return return
self.sprite = sprite self.sprite = sprite
if len(palette) == 0: if len(palette) == 0:
self.palette = list(self.default_palette) pass
self.glove_palette = list(self.default_glove_palette)
elif len(palette) == 0x78: elif len(palette) == 0x78:
self.palette = palette self.palette = palette
self.glove_palette = list(self.default_glove_palette)
elif len(palette) == 0x7C: elif len(palette) == 0x7C:
self.palette = palette[:0x78] self.palette = palette[:0x78]
self.glove_palette = palette[0x78:] self.glove_palette = palette[0x78:]