mirror of
https://github.com/csd4ni3l/simulator-games.git
synced 2026-01-01 04:13:44 +01:00
33 lines
1.8 KiB
Python
33 lines
1.8 KiB
Python
import arcade, arcade.gui, math
|
|
|
|
class BodyInventory(arcade.gui.UIGridLayout):
|
|
def __init__(self, window_width, window_height, selected, items):
|
|
super().__init__(column_count=2, row_count=math.ceil(len(items) / 2), size_hint=(0.2, 0.1))
|
|
|
|
self.items = items
|
|
self.selected_item = selected
|
|
self.buttons = {}
|
|
self.window_width, self.window_height = window_width, window_height
|
|
|
|
n = 0
|
|
for name, image in items.items():
|
|
self.buttons[name] = self.add(arcade.gui.UITextureButton(width=(window_width * 0.2) / 4, height=(window_width * 0.2) / 4).with_background(texture=arcade.load_texture(image), color=arcade.color.WHITE if name == self.selected_item else arcade.color.TRANSPARENT_BLACK).with_border(color=arcade.color.WHITE), column=n % 2, row=n // 2)
|
|
self.buttons[name].on_click = lambda event, name=name: self.change_to(name)
|
|
|
|
n += 1
|
|
|
|
def add_item(self, name, image):
|
|
if not (len(self.items) + 1 <= (self.column_count * self.row_count)):
|
|
self.row_count += 1
|
|
|
|
self._update_size_hints()
|
|
|
|
self.buttons[name] = self.add(arcade.gui.UITextureButton(width=(self.window_width * 0.2) / 4, height=(self.window_width * 0.2) / 4, color=arcade.color.TRANSPARENT_BLACK).with_background(texture=image).with_border(color=arcade.color.WHITE), column=len(self.items) % 2, row=len(self.items) // 2)
|
|
self.buttons[name].on_click = lambda event, name=name: self.change_to(name)
|
|
|
|
self.items[name] = image
|
|
|
|
def change_to(self, name):
|
|
self.buttons[self.selected_item] = self.buttons[self.selected_item].with_background(color=arcade.color.TRANSPARENT_BLACK)
|
|
self.selected_item = name
|
|
self.buttons[self.selected_item] = self.buttons[self.selected_item].with_background(color=arcade.color.WHITE) |