rotate sprite; merge config assignments from command line
This commit is contained in:
parent
34451c3f4c
commit
71cc53f399
|
@ -1,3 +1,4 @@
|
|||
import argparse
|
||||
from os import sep, getcwd
|
||||
from os.path import join, exists, basename, dirname, expanduser
|
||||
from sys import argv, version_info
|
||||
|
@ -303,9 +304,7 @@ class Configuration(RawConfigParser):
|
|||
def set_screen_captures_path(self):
|
||||
section, option = "screen-captures", "path"
|
||||
if not self.has_option(section, option):
|
||||
self.set(section, option, join(self.build_home_path(),
|
||||
self.get(section, "rel-path")),
|
||||
False)
|
||||
self.set(section, option, join(self.build_home_path(), self.get(section, "rel-path")), False)
|
||||
|
||||
def build_home_path(self):
|
||||
return join("~", "." + self.get("setup", "package-root"))
|
||||
|
@ -313,9 +312,7 @@ class Configuration(RawConfigParser):
|
|||
def set_video_recordings_path(self):
|
||||
section, option = "video-recordings", "path"
|
||||
if not self.has_option(section, option):
|
||||
self.set(section, option, join(self.build_home_path(),
|
||||
self.get(section, "rel-path")),
|
||||
False)
|
||||
self.set(section, option, join(self.build_home_path(), self.get(section, "rel-path")), False)
|
||||
|
||||
def set_data_exclusion_list(self):
|
||||
section, option = "setup", "data-exclude"
|
||||
|
@ -404,6 +401,26 @@ class Configuration(RawConfigParser):
|
|||
for option in self.options(section):
|
||||
self.remove_option(section, option)
|
||||
|
||||
def merge_command_line(self, command_line=None):
|
||||
"""
|
||||
Instantiate an argument parser to parse the command line. Load all settings submitted through the `--config` flag. Each setting
|
||||
is a string starting with the chosen delimiter, followed by the section name, option name, and option value each separated by the
|
||||
chosen delimiter.
|
||||
|
||||
For example,
|
||||
|
||||
$ ./OPEN-GAME --config "|display|dimensions|960,540" ",keys,quit,K_q"
|
||||
|
||||
@param command_line A list of strings to use as the command line. If this is `None`, `sys.argv` is used instead.
|
||||
"""
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument("--config", nargs="*", default=[])
|
||||
# Loop over all assignment strings found
|
||||
for assignment in parser.parse_known_args(command_line)[0].config:
|
||||
# Split each assigment string by the first character in the string and pass along the parsed values as arguments
|
||||
# to the set member function
|
||||
self.set(*assignment.split(assignment[0])[1:])
|
||||
|
||||
|
||||
class TypeDeclarations(dict):
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import collections
|
||||
import collections, pygame
|
||||
from os import listdir
|
||||
from os.path import isfile, join
|
||||
from glob import glob
|
||||
|
@ -123,9 +123,12 @@ class Sprite(Animation):
|
|||
def get_current_frame(self):
|
||||
return self.frames[self.get_current_frameset().get_current_id()]
|
||||
|
||||
def move(self, dx=0, dy=0):
|
||||
def move(self, dx=0, dy=0, rotated=False):
|
||||
for location in self.locations:
|
||||
location.move_ip(dx, dy)
|
||||
if not rotated:
|
||||
location.move_ip(dx, dy)
|
||||
else:
|
||||
location.move_ip(dy, -dx)
|
||||
|
||||
def reset_motion_overflow(self):
|
||||
for location in self.locations:
|
||||
|
@ -297,6 +300,21 @@ class Sprite(Animation):
|
|||
for location in self.locations:
|
||||
location.fader.draw(areas, substitute, flags)
|
||||
|
||||
def rotate(self):
|
||||
"""
|
||||
Rotate the sprite's frame surfaces and location rects by 90 degrees clockwise
|
||||
"""
|
||||
for ii, frame in enumerate(self.frames):
|
||||
self.frames[ii] = pygame.transform.rotate(frame, 90)
|
||||
for ii, location in enumerate(self.locations):
|
||||
rotated = pygame.Rect(0, 0, 0, 0)
|
||||
rotated.x = location.y
|
||||
rotated.y = self.get_display_surface().get_height() - location.x + location.w
|
||||
rotated.w = location.h
|
||||
rotated.h = location.w
|
||||
self.locations[ii] = Location(self, rect=rotated)
|
||||
for child in self.children.values():
|
||||
child.rotate()
|
||||
|
||||
class Location(Rect):
|
||||
|
||||
|
|
|
@ -7,3 +7,6 @@ from .Game import *
|
|||
|
||||
# Not sure why but pgfw.GameChild causes a module error without importing Animation directly
|
||||
from .Animation import *
|
||||
|
||||
# Import all classes defined in Sprite
|
||||
from .Sprite import *
|
||||
|
|
Loading…
Reference in New Issue