From 5557f7016f9937f1392716f96d120d5303e6f328 Mon Sep 17 00:00:00 2001 From: alby37135 Date: Mon, 6 May 2019 15:57:08 -0400 Subject: [PATCH 1/3] correct resizing error --- pip-wheel-metadata/ppb.dist-info/LICENSE.txt | 201 ++++++++++++++++++ pip-wheel-metadata/ppb.dist-info/METADATA | 175 +++++++++++++++ .../ppb.dist-info/top_level.txt | 1 + ppb/systems/__init__.py | 8 +- 4 files changed, 383 insertions(+), 2 deletions(-) create mode 100644 pip-wheel-metadata/ppb.dist-info/LICENSE.txt create mode 100644 pip-wheel-metadata/ppb.dist-info/METADATA create mode 100644 pip-wheel-metadata/ppb.dist-info/top_level.txt diff --git a/pip-wheel-metadata/ppb.dist-info/LICENSE.txt b/pip-wheel-metadata/ppb.dist-info/LICENSE.txt new file mode 100644 index 00000000..f93368d5 --- /dev/null +++ b/pip-wheel-metadata/ppb.dist-info/LICENSE.txt @@ -0,0 +1,201 @@ + The Artistic License 2.0 + + Copyright (c) 2000-2006, The Perl Foundation. + + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +Preamble + +This license establishes the terms under which a given free software +Package may be copied, modified, distributed, and/or redistributed. +The intent is that the Copyright Holder maintains some artistic +control over the development of that Package while still keeping the +Package available as open source and free software. + +You are always permitted to make arrangements wholly outside of this +license directly with the Copyright Holder of a given Package. If the +terms of this license do not permit the full use that you propose to +make of the Package, you should contact the Copyright Holder and seek +a different licensing arrangement. + +Definitions + + "Copyright Holder" means the individual(s) or organization(s) + named in the copyright notice for the entire Package. + + "Contributor" means any party that has contributed code or other + material to the Package, in accordance with the Copyright Holder's + procedures. + + "You" and "your" means any person who would like to copy, + distribute, or modify the Package. + + "Package" means the collection of files distributed by the + Copyright Holder, and derivatives of that collection and/or of + those files. A given Package may consist of either the Standard + Version, or a Modified Version. + + "Distribute" means providing a copy of the Package or making it + accessible to anyone else, or in the case of a company or + organization, to others outside of your company or organization. + + "Distributor Fee" means any fee that you charge for Distributing + this Package or providing support for this Package to another + party. It does not mean licensing fees. + + "Standard Version" refers to the Package if it has not been + modified, or has been modified only in ways explicitly requested + by the Copyright Holder. + + "Modified Version" means the Package, if it has been changed, and + such changes were not explicitly requested by the Copyright + Holder. + + "Original License" means this Artistic License as Distributed with + the Standard Version of the Package, in its current version or as + it may be modified by The Perl Foundation in the future. + + "Source" form means the source code, documentation source, and + configuration files for the Package. + + "Compiled" form means the compiled bytecode, object code, binary, + or any other form resulting from mechanical transformation or + translation of the Source form. + + +Permission for Use and Modification Without Distribution + +(1) You are permitted to use the Standard Version and create and use +Modified Versions for any purpose without restriction, provided that +you do not Distribute the Modified Version. + + +Permissions for Redistribution of the Standard Version + +(2) You may Distribute verbatim copies of the Source form of the +Standard Version of this Package in any medium without restriction, +either gratis or for a Distributor Fee, provided that you duplicate +all of the original copyright notices and associated disclaimers. At +your discretion, such verbatim copies may or may not include a +Compiled form of the Package. + +(3) You may apply any bug fixes, portability changes, and other +modifications made available from the Copyright Holder. The resulting +Package will still be considered the Standard Version, and as such +will be subject to the Original License. + + +Distribution of Modified Versions of the Package as Source + +(4) You may Distribute your Modified Version as Source (either gratis +or for a Distributor Fee, and with or without a Compiled form of the +Modified Version) provided that you clearly document how it differs +from the Standard Version, including, but not limited to, documenting +any non-standard features, executables, or modules, and provided that +you do at least ONE of the following: + + (a) make the Modified Version available to the Copyright Holder + of the Standard Version, under the Original License, so that the + Copyright Holder may include your modifications in the Standard + Version. + + (b) ensure that installation of your Modified Version does not + prevent the user installing or running the Standard Version. In + addition, the Modified Version must bear a name that is different + from the name of the Standard Version. + + (c) allow anyone who receives a copy of the Modified Version to + make the Source form of the Modified Version available to others + under + + (i) the Original License or + + (ii) a license that permits the licensee to freely copy, + modify and redistribute the Modified Version using the same + licensing terms that apply to the copy that the licensee + received, and requires that the Source form of the Modified + Version, and of any works derived from it, be made freely + available in that license fees are prohibited but Distributor + Fees are allowed. + + +Distribution of Compiled Forms of the Standard Version +or Modified Versions without the Source + +(5) You may Distribute Compiled forms of the Standard Version without +the Source, provided that you include complete instructions on how to +get the Source of the Standard Version. Such instructions must be +valid at the time of your distribution. If these instructions, at any +time while you are carrying out such distribution, become invalid, you +must provide new instructions on demand or cease further distribution. +If you provide valid instructions or cease distribution within thirty +days after you become aware that the instructions are invalid, then +you do not forfeit any of your rights under this license. + +(6) You may Distribute a Modified Version in Compiled form without +the Source, provided that you comply with Section 4 with respect to +the Source of the Modified Version. + + +Aggregating or Linking the Package + +(7) You may aggregate the Package (either the Standard Version or +Modified Version) with other packages and Distribute the resulting +aggregation provided that you do not charge a licensing fee for the +Package. Distributor Fees are permitted, and licensing fees for other +components in the aggregation are permitted. The terms of this license +apply to the use and Distribution of the Standard or Modified Versions +as included in the aggregation. + +(8) You are permitted to link Modified and Standard Versions with +other works, to embed the Package in a larger work of your own, or to +build stand-alone binary or bytecode versions of applications that +include the Package, and Distribute the result without restriction, +provided the result does not expose a direct interface to the Package. + + +Items That are Not Considered Part of a Modified Version + +(9) Works (including, but not limited to, modules and scripts) that +merely extend or make use of the Package, do not, by themselves, cause +the Package to be a Modified Version. In addition, such works are not +considered parts of the Package itself, and are not subject to the +terms of this license. + + +General Provisions + +(10) Any use, modification, and distribution of the Standard or +Modified Versions is governed by this Artistic License. By using, +modifying or distributing the Package, you accept this license. Do not +use, modify, or distribute the Package, if you do not accept this +license. + +(11) If your Modified Version has been derived from a Modified +Version made by someone other than you, you are nevertheless required +to ensure that your Modified Version complies with the requirements of +this license. + +(12) This license does not grant you the right to use any trademark, +service mark, tradename, or logo of the Copyright Holder. + +(13) This license includes the non-exclusive, worldwide, +free-of-charge patent license to make, have made, use, offer to sell, +sell, import and otherwise transfer the Package with respect to any +patent claims licensable by the Copyright Holder that are necessarily +infringed by the Package. If you institute patent litigation +(including a cross-claim or counterclaim) against any party alleging +that the Package constitutes direct or contributory patent +infringement, then this Artistic License to you shall terminate on the +date that such litigation is filed. + +(14) Disclaimer of Warranty: +THE PACKAGE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS "AS +IS' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES. THE IMPLIED +WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR +NON-INFRINGEMENT ARE DISCLAIMED TO THE EXTENT PERMITTED BY YOUR LOCAL +LAW. UNLESS REQUIRED BY LAW, NO COPYRIGHT HOLDER OR CONTRIBUTOR WILL +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES ARISING IN ANY WAY OUT OF THE USE OF THE PACKAGE, EVEN IF +ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/pip-wheel-metadata/ppb.dist-info/METADATA b/pip-wheel-metadata/ppb.dist-info/METADATA new file mode 100644 index 00000000..ff8aa77e --- /dev/null +++ b/pip-wheel-metadata/ppb.dist-info/METADATA @@ -0,0 +1,175 @@ +Metadata-Version: 2.1 +Name: ppb +Version: 0.5.0 +Summary: An Event Driven Python Game Engine +Home-page: /~https://github.com/ppb/pursuedpybear +Author: Piper Thunstrom +Author-email: pathunstrom@gmail.com +License: Artistic-2.0 +Platform: UNKNOWN +Classifier: Development Status :: 4 - Beta +Classifier: Intended Audience :: Education +Classifier: Intended Audience :: Developers +Classifier: License :: OSI Approved :: Artistic License +Classifier: Natural Language :: English +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3.6 +Classifier: Programming Language :: Python :: 3.7 +Classifier: Topic :: Games/Entertainment +Classifier: Topic :: Software Development :: Libraries +Classifier: Operating System :: OS Independent +Requires-Python: >= 3.6 +Description-Content-Type: text/markdown +Requires-Dist: pygame +Requires-Dist: ppb-vector (<2,>=1.0a1) +Requires-Dist: dataclasses ; python_version < "3.7" + +# PursuedPyBear + +PursuedPyBear, also known as `ppb`, exists to be an educational +resource. Most obviously used to teach computer science, it can be a +useful tool for any topic that a simulation can be helpful. + +## A Game Engine + +At its core, `ppb` provides a number of features that make it perfect +for video games. The `GameEngine` itself provides a pluggable subsystem +architecture where adding new features is as simple as subclassing and +extending `System`. Additionally, it contains a state stack of `Scenes` +simple containers that let you organize game scenes and UI screens in a +simple way. + +The entire system uses an event system which is as extensible as the +rest of the system. Register new values to existing event types, and +even overwrite the defaults. Adding a new event system is as simple as +calling `Engine.signal` with a new datatype. Instead of a publisher +system the engine knows everything in its own scope and only calls +objects with appropriate callbacks. The most basic event is `Update` +and your handlers should match the signature +`on_update(self, update_event, signal)`. + +## Guiding Principles + +Because `ppb` started to be a game framework great for learning with, +the project has a few longterm goals: + +### Education Friendly + +Non-technical educators should feel comfortable after very little +training. While some programming knowledge is required, the ability to +think in objects and responses to events allows educators to only focus +on their lessons. + +### Idiomatic Python + +A project built on `ppb` should look like idiomatic Python. It also +should look like modern Python. As such, we often add new language +features as soon as they're available, letting a new user always know +ppb runs on the latest Python. + +### Object Oriented and Event Driven + +`ppb` games are built out of instances of objects that inherit from +`EventMixin`. Each object only has enough information to respond to the +event provided, which always includes the current `BaseScene`. Because +`ppb` doesn't have a master list of events, you can provide new ones +simply to add more granular control over your game. + +### Hardware Library Agnostic + +Because `ppb` strongly tries to be extensible and pluggable, each +hardware extension can provide its own hooks to `ppb`, and you can +nearly seamlessly switch between various Python libraries. + +### Fun + +One of the maintainers put it best: + +> If it’s not fun to use, we should redo it + +ppb is about filing off the rough edges so that the joy of creation and +discovery are both emphasized. A new user should be able to build their +first game in a few hours, and continue exploring beyond that. + +## Try it + +Install ppb in the standard method: + +```bash +pip install ppb +``` + + +`ppb` provides a `run` function that makes it simple to start single +screen games. + +To make a very simple game, make a directory and add an image file +called `ship.png` to it. Then add the following to a python file and +run it. + +```python +import ppb + + +class Ship(ppb.BaseSprite): + + def on_update(self, update_event, signal): + self.position += 0, -(4 * update_event.time_delta) + + +def setup(scene): + scene.add(Ship(pos=(0, 3.5))) + + +ppb.run(setup=setup) +``` + +## Compatibility + +`ppb` is guaranteed compatible with Python 3.6 or later. + +## Get Involved + +The fastest way to get involved is to check out the [ongoing +discussions.](/~https://github.com/ppb/pursuedpybear/issues?q=is%3Aissue+is%3Aopen+label%3Adiscussion) +If you're already using `ppb` feel free to report bugs, suggest +enhancements, or ask for new features. + +If you want to contribute code, definitely read the relavant portions +of Contributing.MD + +## Change Log + + +### 0.5.0 + +We went for a smaller release, but we got a lot done for it only being +a few months. The most important bits are that all of the input events +are in! Some cool stuff includes sprites scaling automatically and a +new way to move between scenes that uses the event system. That means +the old method is officially deprecated. + +New stuff: +* MouseButton events +* Key events +* Add a title to the game window +* Sprite scaling based on game unit size +* Keycodes flags +* New scene change mechanism that uses the event system + +Changed stuff: +* Scene defaults are now class attributes +* Most Sprite defaults are now class attributes +* Flags can now be type hinted properly +* Scenes no longer infinitely respawn their child scenes if running is + True. +* Fixed an issue with the frame being different dimensions to the + viewport. +* Fixed a bug in the Camera.point_in_viewport function +* Default pixel ratio is now 64:1 (64 pixels to 1 game unit) +* New (better) run function +* Other type hinting fixes + +Removed stuff: +* bb attribute removed from sprites + diff --git a/pip-wheel-metadata/ppb.dist-info/top_level.txt b/pip-wheel-metadata/ppb.dist-info/top_level.txt new file mode 100644 index 00000000..cce9fd2c --- /dev/null +++ b/pip-wheel-metadata/ppb.dist-info/top_level.txt @@ -0,0 +1 @@ +ppb diff --git a/ppb/systems/__init__.py b/ppb/systems/__init__.py index 6a8c0148..28917c84 100644 --- a/ppb/systems/__init__.py +++ b/ppb/systems/__init__.py @@ -134,8 +134,12 @@ def target_resolution(self, width, height, game_unit_size): values = [width, height] short_side_index = width > height target = self.pixel_ratio * game_unit_size - ratio = values[short_side_index] / target - return tuple(round(value / ratio) for value in values) + if target > 0: + ratio = values[short_side_index] / target + returnTup = tuple(round(value / ratio) for value in values) + else: + returnTup = tuple(round(value/self.pixel_ratio) for value in values) + return returnTup class Updater(System): From 6bc14196a49c1ccdf2a31cb27945fd816b1f4b67 Mon Sep 17 00:00:00 2001 From: alby37135 Date: Mon, 6 May 2019 15:58:03 -0400 Subject: [PATCH 2/3] remove whl files --- pip-wheel-metadata/ppb.dist-info/LICENSE.txt | 201 ------------------ pip-wheel-metadata/ppb.dist-info/METADATA | 175 --------------- .../ppb.dist-info/top_level.txt | 1 - 3 files changed, 377 deletions(-) delete mode 100644 pip-wheel-metadata/ppb.dist-info/LICENSE.txt delete mode 100644 pip-wheel-metadata/ppb.dist-info/METADATA delete mode 100644 pip-wheel-metadata/ppb.dist-info/top_level.txt diff --git a/pip-wheel-metadata/ppb.dist-info/LICENSE.txt b/pip-wheel-metadata/ppb.dist-info/LICENSE.txt deleted file mode 100644 index f93368d5..00000000 --- a/pip-wheel-metadata/ppb.dist-info/LICENSE.txt +++ /dev/null @@ -1,201 +0,0 @@ - The Artistic License 2.0 - - Copyright (c) 2000-2006, The Perl Foundation. - - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -Preamble - -This license establishes the terms under which a given free software -Package may be copied, modified, distributed, and/or redistributed. -The intent is that the Copyright Holder maintains some artistic -control over the development of that Package while still keeping the -Package available as open source and free software. - -You are always permitted to make arrangements wholly outside of this -license directly with the Copyright Holder of a given Package. If the -terms of this license do not permit the full use that you propose to -make of the Package, you should contact the Copyright Holder and seek -a different licensing arrangement. - -Definitions - - "Copyright Holder" means the individual(s) or organization(s) - named in the copyright notice for the entire Package. - - "Contributor" means any party that has contributed code or other - material to the Package, in accordance with the Copyright Holder's - procedures. - - "You" and "your" means any person who would like to copy, - distribute, or modify the Package. - - "Package" means the collection of files distributed by the - Copyright Holder, and derivatives of that collection and/or of - those files. A given Package may consist of either the Standard - Version, or a Modified Version. - - "Distribute" means providing a copy of the Package or making it - accessible to anyone else, or in the case of a company or - organization, to others outside of your company or organization. - - "Distributor Fee" means any fee that you charge for Distributing - this Package or providing support for this Package to another - party. It does not mean licensing fees. - - "Standard Version" refers to the Package if it has not been - modified, or has been modified only in ways explicitly requested - by the Copyright Holder. - - "Modified Version" means the Package, if it has been changed, and - such changes were not explicitly requested by the Copyright - Holder. - - "Original License" means this Artistic License as Distributed with - the Standard Version of the Package, in its current version or as - it may be modified by The Perl Foundation in the future. - - "Source" form means the source code, documentation source, and - configuration files for the Package. - - "Compiled" form means the compiled bytecode, object code, binary, - or any other form resulting from mechanical transformation or - translation of the Source form. - - -Permission for Use and Modification Without Distribution - -(1) You are permitted to use the Standard Version and create and use -Modified Versions for any purpose without restriction, provided that -you do not Distribute the Modified Version. - - -Permissions for Redistribution of the Standard Version - -(2) You may Distribute verbatim copies of the Source form of the -Standard Version of this Package in any medium without restriction, -either gratis or for a Distributor Fee, provided that you duplicate -all of the original copyright notices and associated disclaimers. At -your discretion, such verbatim copies may or may not include a -Compiled form of the Package. - -(3) You may apply any bug fixes, portability changes, and other -modifications made available from the Copyright Holder. The resulting -Package will still be considered the Standard Version, and as such -will be subject to the Original License. - - -Distribution of Modified Versions of the Package as Source - -(4) You may Distribute your Modified Version as Source (either gratis -or for a Distributor Fee, and with or without a Compiled form of the -Modified Version) provided that you clearly document how it differs -from the Standard Version, including, but not limited to, documenting -any non-standard features, executables, or modules, and provided that -you do at least ONE of the following: - - (a) make the Modified Version available to the Copyright Holder - of the Standard Version, under the Original License, so that the - Copyright Holder may include your modifications in the Standard - Version. - - (b) ensure that installation of your Modified Version does not - prevent the user installing or running the Standard Version. In - addition, the Modified Version must bear a name that is different - from the name of the Standard Version. - - (c) allow anyone who receives a copy of the Modified Version to - make the Source form of the Modified Version available to others - under - - (i) the Original License or - - (ii) a license that permits the licensee to freely copy, - modify and redistribute the Modified Version using the same - licensing terms that apply to the copy that the licensee - received, and requires that the Source form of the Modified - Version, and of any works derived from it, be made freely - available in that license fees are prohibited but Distributor - Fees are allowed. - - -Distribution of Compiled Forms of the Standard Version -or Modified Versions without the Source - -(5) You may Distribute Compiled forms of the Standard Version without -the Source, provided that you include complete instructions on how to -get the Source of the Standard Version. Such instructions must be -valid at the time of your distribution. If these instructions, at any -time while you are carrying out such distribution, become invalid, you -must provide new instructions on demand or cease further distribution. -If you provide valid instructions or cease distribution within thirty -days after you become aware that the instructions are invalid, then -you do not forfeit any of your rights under this license. - -(6) You may Distribute a Modified Version in Compiled form without -the Source, provided that you comply with Section 4 with respect to -the Source of the Modified Version. - - -Aggregating or Linking the Package - -(7) You may aggregate the Package (either the Standard Version or -Modified Version) with other packages and Distribute the resulting -aggregation provided that you do not charge a licensing fee for the -Package. Distributor Fees are permitted, and licensing fees for other -components in the aggregation are permitted. The terms of this license -apply to the use and Distribution of the Standard or Modified Versions -as included in the aggregation. - -(8) You are permitted to link Modified and Standard Versions with -other works, to embed the Package in a larger work of your own, or to -build stand-alone binary or bytecode versions of applications that -include the Package, and Distribute the result without restriction, -provided the result does not expose a direct interface to the Package. - - -Items That are Not Considered Part of a Modified Version - -(9) Works (including, but not limited to, modules and scripts) that -merely extend or make use of the Package, do not, by themselves, cause -the Package to be a Modified Version. In addition, such works are not -considered parts of the Package itself, and are not subject to the -terms of this license. - - -General Provisions - -(10) Any use, modification, and distribution of the Standard or -Modified Versions is governed by this Artistic License. By using, -modifying or distributing the Package, you accept this license. Do not -use, modify, or distribute the Package, if you do not accept this -license. - -(11) If your Modified Version has been derived from a Modified -Version made by someone other than you, you are nevertheless required -to ensure that your Modified Version complies with the requirements of -this license. - -(12) This license does not grant you the right to use any trademark, -service mark, tradename, or logo of the Copyright Holder. - -(13) This license includes the non-exclusive, worldwide, -free-of-charge patent license to make, have made, use, offer to sell, -sell, import and otherwise transfer the Package with respect to any -patent claims licensable by the Copyright Holder that are necessarily -infringed by the Package. If you institute patent litigation -(including a cross-claim or counterclaim) against any party alleging -that the Package constitutes direct or contributory patent -infringement, then this Artistic License to you shall terminate on the -date that such litigation is filed. - -(14) Disclaimer of Warranty: -THE PACKAGE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS "AS -IS' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES. THE IMPLIED -WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR -NON-INFRINGEMENT ARE DISCLAIMED TO THE EXTENT PERMITTED BY YOUR LOCAL -LAW. UNLESS REQUIRED BY LAW, NO COPYRIGHT HOLDER OR CONTRIBUTOR WILL -BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL -DAMAGES ARISING IN ANY WAY OUT OF THE USE OF THE PACKAGE, EVEN IF -ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/pip-wheel-metadata/ppb.dist-info/METADATA b/pip-wheel-metadata/ppb.dist-info/METADATA deleted file mode 100644 index ff8aa77e..00000000 --- a/pip-wheel-metadata/ppb.dist-info/METADATA +++ /dev/null @@ -1,175 +0,0 @@ -Metadata-Version: 2.1 -Name: ppb -Version: 0.5.0 -Summary: An Event Driven Python Game Engine -Home-page: /~https://github.com/ppb/pursuedpybear -Author: Piper Thunstrom -Author-email: pathunstrom@gmail.com -License: Artistic-2.0 -Platform: UNKNOWN -Classifier: Development Status :: 4 - Beta -Classifier: Intended Audience :: Education -Classifier: Intended Audience :: Developers -Classifier: License :: OSI Approved :: Artistic License -Classifier: Natural Language :: English -Classifier: Programming Language :: Python :: 3 -Classifier: Programming Language :: Python :: 3.6 -Classifier: Programming Language :: Python :: 3.7 -Classifier: Topic :: Games/Entertainment -Classifier: Topic :: Software Development :: Libraries -Classifier: Operating System :: OS Independent -Requires-Python: >= 3.6 -Description-Content-Type: text/markdown -Requires-Dist: pygame -Requires-Dist: ppb-vector (<2,>=1.0a1) -Requires-Dist: dataclasses ; python_version < "3.7" - -# PursuedPyBear - -PursuedPyBear, also known as `ppb`, exists to be an educational -resource. Most obviously used to teach computer science, it can be a -useful tool for any topic that a simulation can be helpful. - -## A Game Engine - -At its core, `ppb` provides a number of features that make it perfect -for video games. The `GameEngine` itself provides a pluggable subsystem -architecture where adding new features is as simple as subclassing and -extending `System`. Additionally, it contains a state stack of `Scenes` -simple containers that let you organize game scenes and UI screens in a -simple way. - -The entire system uses an event system which is as extensible as the -rest of the system. Register new values to existing event types, and -even overwrite the defaults. Adding a new event system is as simple as -calling `Engine.signal` with a new datatype. Instead of a publisher -system the engine knows everything in its own scope and only calls -objects with appropriate callbacks. The most basic event is `Update` -and your handlers should match the signature -`on_update(self, update_event, signal)`. - -## Guiding Principles - -Because `ppb` started to be a game framework great for learning with, -the project has a few longterm goals: - -### Education Friendly - -Non-technical educators should feel comfortable after very little -training. While some programming knowledge is required, the ability to -think in objects and responses to events allows educators to only focus -on their lessons. - -### Idiomatic Python - -A project built on `ppb` should look like idiomatic Python. It also -should look like modern Python. As such, we often add new language -features as soon as they're available, letting a new user always know -ppb runs on the latest Python. - -### Object Oriented and Event Driven - -`ppb` games are built out of instances of objects that inherit from -`EventMixin`. Each object only has enough information to respond to the -event provided, which always includes the current `BaseScene`. Because -`ppb` doesn't have a master list of events, you can provide new ones -simply to add more granular control over your game. - -### Hardware Library Agnostic - -Because `ppb` strongly tries to be extensible and pluggable, each -hardware extension can provide its own hooks to `ppb`, and you can -nearly seamlessly switch between various Python libraries. - -### Fun - -One of the maintainers put it best: - -> If it’s not fun to use, we should redo it - -ppb is about filing off the rough edges so that the joy of creation and -discovery are both emphasized. A new user should be able to build their -first game in a few hours, and continue exploring beyond that. - -## Try it - -Install ppb in the standard method: - -```bash -pip install ppb -``` - - -`ppb` provides a `run` function that makes it simple to start single -screen games. - -To make a very simple game, make a directory and add an image file -called `ship.png` to it. Then add the following to a python file and -run it. - -```python -import ppb - - -class Ship(ppb.BaseSprite): - - def on_update(self, update_event, signal): - self.position += 0, -(4 * update_event.time_delta) - - -def setup(scene): - scene.add(Ship(pos=(0, 3.5))) - - -ppb.run(setup=setup) -``` - -## Compatibility - -`ppb` is guaranteed compatible with Python 3.6 or later. - -## Get Involved - -The fastest way to get involved is to check out the [ongoing -discussions.](/~https://github.com/ppb/pursuedpybear/issues?q=is%3Aissue+is%3Aopen+label%3Adiscussion) -If you're already using `ppb` feel free to report bugs, suggest -enhancements, or ask for new features. - -If you want to contribute code, definitely read the relavant portions -of Contributing.MD - -## Change Log - - -### 0.5.0 - -We went for a smaller release, but we got a lot done for it only being -a few months. The most important bits are that all of the input events -are in! Some cool stuff includes sprites scaling automatically and a -new way to move between scenes that uses the event system. That means -the old method is officially deprecated. - -New stuff: -* MouseButton events -* Key events -* Add a title to the game window -* Sprite scaling based on game unit size -* Keycodes flags -* New scene change mechanism that uses the event system - -Changed stuff: -* Scene defaults are now class attributes -* Most Sprite defaults are now class attributes -* Flags can now be type hinted properly -* Scenes no longer infinitely respawn their child scenes if running is - True. -* Fixed an issue with the frame being different dimensions to the - viewport. -* Fixed a bug in the Camera.point_in_viewport function -* Default pixel ratio is now 64:1 (64 pixels to 1 game unit) -* New (better) run function -* Other type hinting fixes - -Removed stuff: -* bb attribute removed from sprites - diff --git a/pip-wheel-metadata/ppb.dist-info/top_level.txt b/pip-wheel-metadata/ppb.dist-info/top_level.txt deleted file mode 100644 index cce9fd2c..00000000 --- a/pip-wheel-metadata/ppb.dist-info/top_level.txt +++ /dev/null @@ -1 +0,0 @@ -ppb From e09d2fa4dcc38e55f89ff855f2ba6b37263a0b42 Mon Sep 17 00:00:00 2001 From: alby37135 Date: Mon, 6 May 2019 16:06:36 -0400 Subject: [PATCH 3/3] short-circuit on resize image --- ppb/systems/__init__.py | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/ppb/systems/__init__.py b/ppb/systems/__init__.py index 28917c84..c246c5af 100644 --- a/ppb/systems/__init__.py +++ b/ppb/systems/__init__.py @@ -82,6 +82,8 @@ def prepare_resource(self, game_object): self.register_renderable(game_object) source_image = self.resources[image_name] + if game_object.size <= 0: + return None resized_image = self.resize_image(source_image, game_object.size) rotated_image = self.rotate_image(resized_image, game_object.rotation) return rotated_image @@ -134,12 +136,8 @@ def target_resolution(self, width, height, game_unit_size): values = [width, height] short_side_index = width > height target = self.pixel_ratio * game_unit_size - if target > 0: - ratio = values[short_side_index] / target - returnTup = tuple(round(value / ratio) for value in values) - else: - returnTup = tuple(round(value/self.pixel_ratio) for value in values) - return returnTup + ratio = values[short_side_index] / target + return tuple(round(value / ratio) for value in values) class Updater(System):