commit:     8859475f04b25dda813189a816e46781c6c687aa
Author:     Pacho Ramos <pacho <AT> gentoo <DOT> org>
AuthorDate: Wed Dec 25 17:22:51 2019 +0000
Commit:     Pacho Ramos <pacho <AT> gentoo <DOT> org>
CommitDate: Wed Dec 25 17:22:51 2019 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=8859475f

games-arcade/whichwayisup: Fixes from Fedora, use python3

Package-Manager: Portage-2.3.82, Repoman-2.3.20
Signed-off-by: Pacho Ramos <pacho <AT> gentoo.org>

 ...up-0.7.9-check_for_joystick_axes_not_null.patch |  21 +
 ...9-initialize_only_required_pygame_modules.patch |  23 +
 .../files/whichwayisup-0.7.9-python3.patch         | 470 +++++++++++++++++++++
 .../whichwayisup/whichwayisup-0.7.9-r3.ebuild      |  62 +++
 4 files changed, 576 insertions(+)

diff --git 
a/games-arcade/whichwayisup/files/whichwayisup-0.7.9-check_for_joystick_axes_not_null.patch
 
b/games-arcade/whichwayisup/files/whichwayisup-0.7.9-check_for_joystick_axes_not_null.patch
new file mode 100644
index 00000000000..b97856a0d2b
--- /dev/null
+++ 
b/games-arcade/whichwayisup/files/whichwayisup-0.7.9-check_for_joystick_axes_not_null.patch
@@ -0,0 +1,21 @@
+From: Markus Koschany <a...@debian.org>
+Date: Tue, 28 May 2013 18:40:34 +0200
+Subject: check for joystick axes not null
+
+---
+ lib/game.py |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/lib/game.py b/lib/game.py
+index f0afd84..30f86fd 100644
+--- a/lib/game.py
++++ b/lib/game.py
+@@ -138,7 +138,7 @@ def parse_inputs(joystick = None):
+   if keys[K_F10]:
+     inputs["SPECIAL"] = True
+ 
+-  if joystick != None:   # Parse joystick input
++  if joystick != None and joystick.get_numaxes() != 0:   # Parse joystick 
input
+ 
+     axis0 = joystick.get_axis(0)
+ 

diff --git 
a/games-arcade/whichwayisup/files/whichwayisup-0.7.9-initialize_only_required_pygame_modules.patch
 
b/games-arcade/whichwayisup/files/whichwayisup-0.7.9-initialize_only_required_pygame_modules.patch
new file mode 100644
index 00000000000..5bfea4ddd6e
--- /dev/null
+++ 
b/games-arcade/whichwayisup/files/whichwayisup-0.7.9-initialize_only_required_pygame_modules.patch
@@ -0,0 +1,23 @@
+From: Markus Koschany <a...@debian.org>
+Date: Tue, 28 May 2013 18:21:54 +0200
+Subject: initialize only required pygame modules.
+
+---
+ lib/main.py |    4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/lib/main.py b/lib/main.py
+index cfe9046..6a0376a 100644
+--- a/lib/main.py
++++ b/lib/main.py
+@@ -60,7 +60,9 @@ def main():
+ 
+     #Initializing pygame and screen
+ 
+-    pygame.init()
++    pygame.joystick.init()
++    pygame.display.init()
++    pygame.mixer.init()
+     screen = pygame.display.set_mode((SCREEN_WIDTH,SCREEN_HEIGHT))
+     caption = "Which way is up?"
+     if (Variables.vdict["devmode"]):

diff --git a/games-arcade/whichwayisup/files/whichwayisup-0.7.9-python3.patch 
b/games-arcade/whichwayisup/files/whichwayisup-0.7.9-python3.patch
new file mode 100644
index 00000000000..5b202640551
--- /dev/null
+++ b/games-arcade/whichwayisup/files/whichwayisup-0.7.9-python3.patch
@@ -0,0 +1,470 @@
+Author: Reiner Herrmann <rei...@reiner-h.de>
+Description: Port game to python3
+Bug-Debian: https://bugs.debian.org/912500
+
+--- a/run_game.py
++++ b/run_game.py
+@@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#! /usr/bin/env python3
+ 
+ import sys
+ import os
+--- a/lib/util.py
++++ b/lib/util.py
+@@ -113,12 +113,12 @@
+   try:
+     conffile = codecs.open(file_path, "w", "utf_8")
+     for world in WORLDS:
+-      print >> conffile, "unlocked\t%(world)s\t%(unlocked)s" % {"world": 
world, "unlocked": Variables.vdict["unlocked" + world]}
+-      print >> conffile, "hiscore\t%(world)s\t%(hiscore)s" % {"world": world, 
"hiscore": Variables.vdict["hiscore" + world]}
+-      print >> conffile, "besttime\t%(world)s\t%(besttime)s" % {"world": 
world, "besttime": Variables.vdict["besttime" + world]}
+-    print >> conffile, "sound\t%s" % bool_to_str(Variables.vdict["sound"])
+-    print >> conffile, "dialogue\t%s" % 
bool_to_str(Variables.vdict["dialogue"])
+-    print >> conffile, "fullscreen\t%s" % 
bool_to_str(Variables.vdict["fullscreen"])
++      print("unlocked\t%(world)s\t%(unlocked)s" % {"world": world, 
"unlocked": Variables.vdict["unlocked" + world]}, file=conffile)
++      print("hiscore\t%(world)s\t%(hiscore)s" % {"world": world, "hiscore": 
Variables.vdict["hiscore" + world]}, file=conffile)
++      print("besttime\t%(world)s\t%(besttime)s" % {"world": world, 
"besttime": Variables.vdict["besttime" + world]}, file=conffile)
++    print("sound\t%s" % bool_to_str(Variables.vdict["sound"]), file=conffile)
++    print("dialogue\t%s" % bool_to_str(Variables.vdict["dialogue"]), 
file=conffile)
++    print("fullscreen\t%s" % bool_to_str(Variables.vdict["fullscreen"]), 
file=conffile)
+   except:
+     error_message("Could not write configuration file to " + file_path)
+     return False
+@@ -136,13 +136,13 @@
+       count += 1
+       if count > MAX_OLD_LOG_LINES:
+         break
+-  if Variables.vdict.has_key("log"):
++  if "log" in Variables.vdict:
+     try:
+       conffile = codecs.open(file_path, "w", "utf_8")
+-      print >> conffile, "Log updated " + str(datetime.date.today())
+-      print >> conffile, Variables.vdict["log"]
+-      print >> conffile, ""
+-      print >> conffile, old_log
++      print("Log updated " + str(datetime.date.today()), file=conffile)
++      print(Variables.vdict["log"], file=conffile)
++      print("", file=conffile)
++      print(old_log, file=conffile)
+     except:
+       error_message("Could not write log file to " + file_path)
+       return False
+@@ -166,7 +166,7 @@
+ The constant colors can be found from locals.py.
+ '''
+ def render_text(string, color = COLOR_GUI, bgcolor = COLOR_GUI_BG):
+-  if Util.cached_text_images.has_key(string + str(color) + str(bgcolor)):
++  if (string + str(color) + str(bgcolor)) in Util.cached_text_images:
+     final_image = Util.cached_text_images[string + str(color) + str(bgcolor)]
+   else:
+     text_image_bg = Util.smallfont.render(string, True, bgcolor)
+@@ -200,8 +200,8 @@
+   rendered_string = string[0:phase]
+   string_image = render_text(rendered_string)
+   string_rect = string_image.get_rect()
+-  string_rect.centerx = SCREEN_WIDTH / 2
+-  string_rect.centery = SCREEN_HEIGHT / 2
++  string_rect.centerx = SCREEN_WIDTH // 2
++  string_rect.centery = SCREEN_HEIGHT // 2
+ 
+   if key == "p":
+     skip_image = Util.cached_images["key_p"]
+@@ -209,7 +209,7 @@
+     skip_image = Util.cached_images["key_z"]
+ 
+   skip_rect = skip_image.get_rect()
+-  skip_rect.centerx = SCREEN_WIDTH / 2
++  skip_rect.centerx = SCREEN_WIDTH // 2
+   skip_rect.top = string_rect.bottom + 5
+ 
+   bg_rect = pygame.Rect(string_rect.left - 10, string_rect.top - 5, 
string_rect.width + 20, string_rect.height + skip_rect.height + 15)
+--- a/lib/animation.py
++++ b/lib/animation.py
+@@ -58,9 +58,9 @@
+             self.finished = True
+           else:
+             self.i = 0
+-        if Animation.cached_frames.has_key(self.cache_name + str(self.i)):
++        if (self.cache_name + str(self.i)) in Animation.cached_frames:
+           self.image = Animation.cached_frames[self.cache_name + str(self.i)]
+         else:
+           self.image = (self.frames[self.i]).get_image()
+           Animation.cached_frames[self.cache_name + str(self.i)] = self.image
+-    return self.image
+\ No newline at end of file
++    return self.image
+--- a/lib/edit_utils.py
++++ b/lib/edit_utils.py
+@@ -16,23 +16,23 @@
+     return
+ 
+   def update(self, inputs):
+-    if inputs.has_key("REMOVE_TILE"):
++    if "REMOVE_TILE" in inputs:
+       return Change("remove", self.cursor)
+-    if inputs.has_key("ADD_TILE_WALL"):
++    if "ADD_TILE_WALL" in inputs:
+       return Change("W", self.cursor)
+-    if inputs.has_key("ADD_TILE_SPIKES"):
++    if "ADD_TILE_SPIKES" in inputs:
+       return Change("S", self.cursor)
+-    if inputs.has_key("ADD_TILE_BARS"):
++    if "ADD_TILE_BARS" in inputs:
+       return Change("B", self.cursor)
+-    if inputs.has_key("SAVE_TILES"):
++    if "SAVE_TILES" in inputs:
+       return Change("save", (0, 0))
+-    if inputs.has_key("EDIT_RIGHT") and self.cursor[0] < (TILES_HOR - 1):
++    if "EDIT_RIGHT" in inputs and self.cursor[0] < (TILES_HOR - 1):
+       self.cursor[0] += 1
+-    if inputs.has_key("EDIT_LEFT") and self.cursor[0] > 0:
++    if "EDIT_LEFT" in inputs and self.cursor[0] > 0:
+       self.cursor[0] -= 1
+-    if inputs.has_key("EDIT_DOWN") and self.cursor[1] < (TILES_VER - 1):
++    if "EDIT_DOWN" in inputs and self.cursor[1] < (TILES_VER - 1):
+       self.cursor[1] += 1
+-    if inputs.has_key("EDIT_UP") and self.cursor[1] > 0:
++    if "EDIT_UP" in inputs and self.cursor[1] > 0:
+       self.cursor[1] -= 1
+     return None
+ 
+--- a/lib/game.py
++++ b/lib/game.py
+@@ -265,7 +265,7 @@
+     trigger = None
+ 
+     if scripted_event_on:
+-      if inputs.has_key("JUMP") or inputs.has_key("DOWN"):
++      if "JUMP" in inputs or "DOWN" in inputs:
+         cleared = True
+ 
+     moved = False
+@@ -277,20 +277,20 @@
+       #There isn't anything special going on: player can control the character
+       #Translates input to commands to the player object
+       add_time = True
+-      if inputs.has_key("LEFT"):
++      if "LEFT" in inputs:
+         player.move((-PLAYER_MAX_ACC, 0))
+         moved = True
+ 
+-      if inputs.has_key("RIGHT"):
++      if "RIGHT" in inputs:
+         player.move((PLAYER_MAX_ACC, 0))
+         moved = True
+ 
+-      if inputs.has_key("JUMP"):
++      if "JUMP" in inputs:
+         if (player.on_ground):
+           count = 0
+           while (count < 5):
+             count += 1
+-            particles.append(Particle(screen, 10, player.rect.centerx - 
player.dx / 4 + random.uniform(-3, 3), player.rect.bottom, -player.dx * 0.1, 
-0.5, 0.3, level.dust_color, 4))
++            particles.append(Particle(screen, 10, player.rect.centerx - 
player.dx // 4 + random.uniform(-3, 3), player.rect.bottom, -player.dx * 0.1, 
-0.5, 0.3, level.dust_color, 4))
+           player.jump()
+ 
+           #The blobs always try to jump when the player jumps
+@@ -299,10 +299,10 @@
+             if o.itemclass == "blob":
+               o.jump()
+ 
+-      if inputs.has_key("UP") and not player.on_ground:
++      if "UP" in inputs and not player.on_ground:
+         player.jump()
+ 
+-      if inputs.has_key("DOWN"):
++      if "DOWN" in inputs:
+         pick_up_item = level.pick_up(player.x, player.y)
+         if pick_up_item != None:
+           play_sound("coins")
+@@ -314,10 +314,10 @@
+           trigger = level.trigger(player.x, player.y)
+ 
+       #Debug command for flipping:
+-      if inputs.has_key("SPECIAL"):
++      if "SPECIAL" in inputs:
+         trigger = Trigger(TRIGGER_FLIP, player.x, player.y)
+ 
+-    if inputs.has_key("PAUSE") and player.current_animation != "dying":
++    if "PAUSE" in inputs and player.current_animation != "dying":
+       paused = not paused
+ 
+     #Decelerates the player, if he doesn't press any movement keys or when he 
is dead and on the ground
+@@ -344,7 +344,7 @@
+     #Dust effect rising from the character's feet:
+ 
+     if (player.current_animation == "walking"):
+-      particles.append(Particle(screen, 10, player.rect.centerx - player.dx / 
2 + random.uniform(-2, 2), player.rect.bottom, -player.dx * 0.1, 0.1, 0.3, 
level.dust_color))
++      particles.append(Particle(screen, 10, player.rect.centerx - player.dx 
// 2 + random.uniform(-2, 2), player.rect.bottom, -player.dx * 0.1, 0.1, 0.3, 
level.dust_color))
+ 
+     #Updating level and objects:
+ 
+@@ -455,7 +455,7 @@
+             player.orientation = current_scripted_event_element.orientation
+           current_scripted_event_element.finished = True
+         elif current_scripted_event_element.event_type == "change_level":
+-          score.score += (5 + score_mod) * ((player.life + 4) / 5 + 12)
++          score.score += (5 + score_mod) * ((player.life + 4) // 5 + 12)
+           score.levels += 1
+           current_scripted_event_element.finished = True
+           if player.current_animation != "gone":
+--- a/lib/level.py
++++ b/lib/level.py
+@@ -129,8 +129,8 @@
+     self.bg_animations["default"] = Animation(self.set + "_background", 
"static")
+     self.current_animation = "default"
+     self.rect = 
(self.bg_animations[self.current_animation].update_and_get_image()).get_rect()
+-    self.rect.centerx = SCREEN_WIDTH / 2
+-    self.rect.centery = SCREEN_HEIGHT / 2
++    self.rect.centerx = SCREEN_WIDTH // 2
++    self.rect.centery = SCREEN_HEIGHT // 2
+ 
+     self.reset_active_tiles()
+     return
+@@ -217,7 +217,7 @@
+ 
+   #Checks the point for solid ground
+   def ground_check(self, x, y):
+-    if self.cached_ground_check.has_key(str(x) + "_" +  str(y)):
++    if (str(x) + "_" +  str(y)) in self.cached_ground_check:
+       return self.cached_ground_check[str(x) + "_" +  str(y)]
+     else:
+       if x > SCREEN_WIDTH or y > SCREEN_HEIGHT or x < 0 or y < 0:
+@@ -333,7 +333,7 @@
+   def remove_tile(self, coords):
+     """Remove a tile from the level with coordinates relative to the corner 
of the area currently visible."""
+     for t in self.active_tiles:
+-      if t.rect.collidepoint(coords[0]*TILE_DIM + TILE_DIM / 2, 
coords[1]*TILE_DIM + TILE_DIM / 2):
++      if t.rect.collidepoint(coords[0]*TILE_DIM + TILE_DIM // 2, 
coords[1]*TILE_DIM + TILE_DIM // 2):
+         self.active_tiles.remove(t)
+         self.tiles.remove(t)
+         self.edited = True
+--- a/lib/log.py
++++ b/lib/log.py
+@@ -15,7 +15,7 @@
+     """Add a message to the message log, which can be written on disk 
later."""
+ 
+     #Multiple messages of the same type aren't added to the log:
+-    if Variables.vdict.has_key("last_log_message"):
++    if "last_log_message" in Variables.vdict:
+       if string == Variables.vdict["last_log_message"]:
+         return
+         
+@@ -24,9 +24,9 @@
+ 
+     Variables.vdict["last_log_message"] = string
+ 
+-    if Variables.vdict.has_key("log"):
++    if "log" in Variables.vdict:
+         Variables.vdict["log"] = string + "\n" + Variables.vdict["log"]
+     else:
+         Variables.vdict["log"] = string
+ 
+-    return
+\ No newline at end of file
++    return
+--- a/lib/sound.py
++++ b/lib/sound.py
+@@ -25,7 +25,7 @@
+   if not Variables.vdict["sound"]:
+     return
+   snd = None
+-  if (not sounds.has_key(sound_id)):
++  if sound_id not in sounds:
+     try:
+       sound_path = data.filepath(os.path.join("sounds", sound_id + ".ogg"))
+       snd = sounds[sound_id] = pygame.mixer.Sound(sound_path)
+--- a/lib/visibleobject.py
++++ b/lib/visibleobject.py
+@@ -27,9 +27,9 @@
+     self.x = x
+     self.y = y
+     if (self.x == None):
+-      self.x = SCREEN_WIDTH / 2
++      self.x = SCREEN_WIDTH // 2
+     if (self.y == None):
+-      self.y = SCREEN_HEIGHT / 2
++      self.y = SCREEN_HEIGHT // 2
+ 
+     self.flipping = False
+     self.flipcounter = 0
+@@ -122,7 +122,7 @@
+ 
+   def die(self):
+     """Make the object die - if the object has a death animation, it will be 
played first."""
+-    if self.animations.has_key("dying"):
++    if "dying" in self.animations:
+       self.current_animation = "dying"
+     else:
+       self.dead = True
+--- a/lib/player.py
++++ b/lib/player.py
+@@ -79,7 +79,7 @@
+ 
+     blood = []
+ 
+-    if collision_type > 0:
++    if collision_type and collision_type > 0:
+       blood = self.take_damage(collision_type)
+       if self.current_animation != "dying":
+         self.dy -= collision_type*PLAYER_JUMP_ACC / 4.5
+--- a/lib/object.py
++++ b/lib/object.py
+@@ -34,7 +34,7 @@
+     self.initial_y = y
+     self.gravity = gravity
+     self.colliding = colliding
+-    self.active = (self.x + self.rect.width / 2 > 0) and (self.y + 
self.rect.height / 2 > 0)
++    self.active = (self.x + self.rect.width // 2 > 0) and (self.y + 
self.rect.height // 2 > 0)
+ 
+     self.on_ground = False
+ 
+@@ -76,7 +76,7 @@
+     VisibleObject.update(self)
+ 
+     if self.flip_finished and self.itemclass != "player":
+-      self.active = (self.x + self.rect.width / 2 > 0) and (self.y + 
self.rect.height / 2 > 0)
++      self.active = (self.x + self.rect.width // 2 > 0) and (self.y + 
self.rect.height // 2 > 0)
+ 
+     if self.flipping:
+       return
+@@ -101,9 +101,9 @@
+     """Make the object flip with the level to either direction"""
+     if VisibleObject.flip(self, flip_direction):
+       if flip_direction == CLOCKWISE:
+-        self.initial_x, self.initial_y = -self.initial_y + PLAY_AREA_WIDTH / 
TILES_HOR * (TILES_HOR*2 - FULL_TILES_HOR), self.initial_x
++        self.initial_x, self.initial_y = -self.initial_y + PLAY_AREA_WIDTH // 
TILES_HOR * (TILES_HOR*2 - FULL_TILES_HOR), self.initial_x
+       else:
+-        self.initial_x, self.initial_y = self.initial_y, -self.initial_x + 
PLAY_AREA_WIDTH / TILES_HOR * (TILES_HOR*2 - FULL_TILES_HOR)
++        self.initial_x, self.initial_y = self.initial_y, -self.initial_x + 
PLAY_AREA_WIDTH // TILES_HOR * (TILES_HOR*2 - FULL_TILES_HOR)
+     return
+ 
+   def check_collisions(self, level):
+@@ -116,25 +116,25 @@
+ 
+     self.on_ground = False
+ 
+-    if self.x < 0 + self.rect.width / 2:
+-      self.x = 0 + self.rect.width  / 2
++    if self.x < 0 + self.rect.width // 2:
++      self.x = 0 + self.rect.width  // 2
+       self.dx = 0
+       collision_type = 0
+ 
+-    if self.x > PLAY_AREA_WIDTH - self.rect.width  / 2:
+-      self.x = PLAY_AREA_WIDTH - self.rect.width  / 2
++    if self.x > PLAY_AREA_WIDTH - self.rect.width  // 2:
++      self.x = PLAY_AREA_WIDTH - self.rect.width  // 2
+       self.dx = 0
+       collision_type = 0
+ 
+     # The commented block is the collision code for the upper edge of the 
screen.
+     # The spiders and projectiles might need this, but they use simplified
+     # collision detection for better performance anyway.
+-    '''if self.y < 0 + self.rect.height / 2:
+-      self.y = 0 + self.rect.height  / 2
++    '''if self.y < 0 + self.rect.height // 2:
++      self.y = 0 + self.rect.height  // 2
+       self.dy = 0'''
+ 
+-    if self.y > PLAY_AREA_HEIGHT - self.rect.height / 2:
+-      self.y = PLAY_AREA_HEIGHT - self.rect.height  / 2
++    if self.y > PLAY_AREA_HEIGHT - self.rect.height // 2:
++      self.y = PLAY_AREA_HEIGHT - self.rect.height  // 2
+       self.dy = 0
+       self.on_ground = True
+       collision_type = 0
+--- a/lib/locals.py
++++ b/lib/locals.py
+@@ -16,8 +16,8 @@
+ 
+ TILE_DIM = 40
+ 
+-PLAY_AREA_CENTER_X = (-FULL_TILES_HOR / 2 + TILES_HOR) * TILE_DIM
+-PLAY_AREA_CENTER_Y = (-FULL_TILES_VER / 2 + TILES_VER) * TILE_DIM
++PLAY_AREA_CENTER_X = (-FULL_TILES_HOR // 2 + TILES_HOR) * TILE_DIM
++PLAY_AREA_CENTER_Y = (-FULL_TILES_VER // 2 + TILES_VER) * TILE_DIM
+ 
+ GRAVITY = 1.0
+ GRAVITY_PARTICLE = 0.5
+--- a/lib/mainmenu.py
++++ b/lib/mainmenu.py
+@@ -73,19 +73,19 @@
+ 
+     menu_image = render_text("World " + str(self.world.number) + ": " + 
self.world.name, COLOR_GUI)
+     rect = menu_image.get_rect()
+-    rect.centerx = SCREEN_WIDTH / 2
++    rect.centerx = SCREEN_WIDTH // 2
+     rect.top = GUI_MENU_TOP - 75
+     self.bgscreen.blit(menu_image, rect)
+ 
+     menu_image = render_text(score_text, COLOR_GUI)
+     rect = menu_image.get_rect()
+-    rect.centerx = SCREEN_WIDTH / 2
++    rect.centerx = SCREEN_WIDTH // 2
+     rect.top = GUI_MENU_TOP - 50
+     self.bgscreen.blit(menu_image, rect)
+ 
+     menu_image = render_text(time_text, COLOR_GUI)
+     rect = menu_image.get_rect()
+-    rect.centerx = SCREEN_WIDTH / 2
++    rect.centerx = SCREEN_WIDTH // 2
+     rect.top = GUI_MENU_TOP - 30
+     self.bgscreen.blit(menu_image, rect)
+     
+--- a/lib/menu.py
++++ b/lib/menu.py
+@@ -91,14 +91,14 @@
+ 
+       menu_bg = pygame.image.load(data.picpath("menu", "bg")).convert_alpha()
+       rect = menu_bg.get_rect()
+-      rect.centerx = SCREEN_WIDTH / 2
++      rect.centerx = SCREEN_WIDTH // 2
+       rect.top = GUI_MENU_TOP
+       self.screen.blit(menu_bg, rect)
+ 
+       if self.heading_text != None:
+         menu_head = render_text(self.heading_text)
+         rect = menu_head.get_rect()
+-        rect.centerx = SCREEN_WIDTH / 2
++        rect.centerx = SCREEN_WIDTH // 2
+         rect.top = GUI_MENU_TOP + 50 + menu_offset
+         self.screen.blit(menu_head, rect)
+ 
+@@ -120,7 +120,7 @@
+         else:
+           menu_image = render_text(m, COLOR_GUI)
+         rect = menu_image.get_rect()
+-        rect.centerx = SCREEN_WIDTH / 2
++        rect.centerx = SCREEN_WIDTH // 2
+         rect.top = GUI_MENU_TOP + 60 + (menu_visible + 1) * 20 + menu_offset
+         self.screen.blit(menu_image, rect)
+         current_menu_index += 1
+--- a/lib/particle.py
++++ b/lib/particle.py
+@@ -28,9 +28,9 @@
+     self.radius = radius
+     self.gravity = gravity
+     if (self.x == None):
+-      self.x = SCREEN_WIDTH / 2
++      self.x = SCREEN_WIDTH // 2
+     if (self.y == None):
+-      self.y = SCREEN_HEIGHT / 2
++      self.y = SCREEN_HEIGHT // 2
+     if (self.dx == None):
+       self.dx = 0.0
+     if (self.dy == None):
+--- a/lib/tile.py
++++ b/lib/tile.py
+@@ -47,8 +47,8 @@
+   def realign(self):
+     self.rect.centerx = self.x
+     self.rect.centery = self.y
+-    self.x = round((float(self.rect.right)/float(TILE_DIM)), 0)*TILE_DIM - 
self.rect.width / 2
+-    self.y = round((float(self.rect.bottom)/float(TILE_DIM)), 0)*TILE_DIM - 
self.rect.height / 2
++    self.x = round((float(self.rect.right)/float(TILE_DIM)), 0)*TILE_DIM - 
self.rect.width // 2
++    self.y = round((float(self.rect.bottom)/float(TILE_DIM)), 0)*TILE_DIM - 
self.rect.height // 2
+     if self.rect.height % 2 == 1:
+        self.y -= 1
+     if self.rect.width % 2 == 1:

diff --git a/games-arcade/whichwayisup/whichwayisup-0.7.9-r3.ebuild 
b/games-arcade/whichwayisup/whichwayisup-0.7.9-r3.ebuild
new file mode 100644
index 00000000000..0644c6c31c3
--- /dev/null
+++ b/games-arcade/whichwayisup/whichwayisup-0.7.9-r3.ebuild
@@ -0,0 +1,62 @@
+# Copyright 1999-2019 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+PYTHON_COMPAT=( python3_{6,7,8} )
+
+inherit desktop python-r1
+
+MY_PV="${PV//./}"
+MY_P="${PN}_b${MY_PV}"
+
+DESCRIPTION="A traditional and challenging 2D platformer game with a slight 
rotational twist"
+HOMEPAGE="http://hectigo.net/puskutraktori/whichwayisup/";
+SRC_URI="http://hectigo.net/puskutraktori/whichwayisup/${MY_P}.zip";
+
+LICENSE="GPL-2 CC-BY-3.0"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+IUSE=""
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+
+RDEPEND="${PYTHON_DEPS}
+       dev-python/pygame[${PYTHON_USEDEP}]
+"
+DEPEND="${RDEPEND}"
+BDEPEND="app-arch/unzip"
+
+S="${WORKDIR}/${PN}"
+
+PATCHES=(
+       # Fixes from Fedora
+       "${FILESDIR}"/${P}-check_for_joystick_axes_not_null.patch
+       "${FILESDIR}"/${P}-initialize_only_required_pygame_modules.patch
+       "${FILESDIR}"/${P}-python3.patch
+)
+
+src_prepare() {
+       default
+       sed -i \
+               -e "s:libdir\ =\ .*:libdir\ =\ \"/usr/$(get_libdir)/${PN}\":" \
+               run_game.py || die
+       sed -i \
+               -e "s:data_dir\ =\ .*:data_dir\ =\ \"/usr/share/${PN}\":" \
+               lib/data.py || die
+       rm data/pictures/Thumbs.db || die
+}
+
+src_install() {
+       newbin run_game.py ${PN}
+
+       insinto "/usr/$(get_libdir)/${PN}"
+       doins lib/*.py
+
+       einstalldocs
+
+       insinto "/usr/share/${PN}"
+       doins -r data/*
+
+       newicon "${FILESDIR}"/${PN}-32.xpm ${PN}.xpm
+       make_desktop_entry ${PN} "Which Way Is Up?"
+}

Reply via email to