def __init__(self): self.view = sf.View(sf.Rect((0, 0), (500, 500))) self.view.viewport = (sf.Rect((0.474, 0.2685), (0.26, 0.463))) self.settings = sf.ContextSettings() self.settings.antialiasing_level = 8 self.window = sf.RenderWindow(sf.VideoMode(1920, 1080), "IFS Flame Fractal Generator", sf.Style.DEFAULT, self.settings) self.window.framerate_limit = 60 self.general = ifs_general() self.cpu_ifs = ifs_cpu(self.general) self.gpu_ifs = ifs_gpu(self.general) self.gui = ui()
def load_json(self): data = None self._loaded = False with open(os.path.join(self._path, self._filename)) as data_file: data = json.load(data_file) if data != None: tilesx = data["width"] tilesy = data["height"] tsx = int(data["tilewidth"]) tsy = int(data["tileheight"]) self.tile_size = sf.Vector2(tsx, tsy) self._collisions = [[-1 for x in range(tilesx)] for y in range(tilesy)] #self.batch = pyglet.graphics.Batch() self.borders = sf.Rect((0, 0), (tilesx*self.tile_size.x, tilesy*self.tile_size.y)) self.tile_borders = sf.Rect((0, 0), (tilesx, tilesy)) tilesets_arr = data["tilesets"] if len(tilesets_arr) <= 0: return False tileset_data = tilesets_arr[0] data_tw = int(tileset_data["tilewidth"]) data_th = int(tileset_data["tileheight"]) data_iw = int(tileset_data["imagewidth"]) data_ih = int(tileset_data["imageheight"]) data_ttx = data_iw//data_tw data_tty = data_ih//data_th fixpath = os.path.join(self._path, os.path.normpath(tileset_data["image"])) self._texture = sf.Texture.from_file(fixpath) if self._use_texture == None else self._use_texture for layer in data["layers"]: layerprops = layer.get("properties", {}) if layer["type"] == "tilelayer": self._load_tile_layer(layer, tilesx, tilesy, tsx, tsy, layerprops) elif layer["type"] == "objectgroup": self._load_object_layer(layer, tsx, tsy, layerprops) return True
def loop(self): while (self.window.is_open): #INPUT pynk.lib.nk_input_begin(self.gui.ctx) for event in self.window.events: if (event.type == sf.Event.CLOSED): self.window.close() elif (event.type == sf.Event.RESIZED): self.winH = event.items()._mapping.event.height self.window.view = sf.View( sf.Rect( (0, 0), (event.items()._mapping.event.width, self.winH))) self.gui.eventsToGui(event) pynk.lib.nk_input_end(self.gui.ctx) #draw self.gui.gui_loop(self.winH, self.window, self.cpu_ifs, self.gpu_ifs, self.general) self.window.clear() self.gui.draw(self.window) if self.cpu_ifs.screen != None: defaultView = self.window.view self.window.view = self.view self.window.draw(self.cpu_ifs.screen) self.window.view = defaultView self.window.display()
def new_game_setup(self, game): """ Must call this when running a new game! """ self.level_tilemap = TileMap(game.level.tiles) self.tilegrid = sf.Sprite(self.textures[pz.SQUARE]) self.tilegrid.texture_rectangle = sf.Rect( (0, 0), (game.level.size.x * pz.TILE_SIZE, game.level.size.y * pz.TILE_SIZE)) self.tilegrid.color = sf.Color(255, 255, 255, 50)
def reset_viewport(self, position: Union[sf.Vector2, Tuple[float, float]], size: Union[sf.Vector2, Tuple[float, float]]): if type(position) in [sf.Vector2, tuple ] and type(size) in [sf.Vector2, tuple]: self.viewport = sf.Rect(position, size) self.vp_base_pos = to_Vector2(position) self.vp_base_size = to_Vector2(size) else: raise TypeError( "position and size arguments of Camera.reset_viewport() should be a sf.Vector or tuple." )
def new_viewport(x): return sf.Rect( (viewport_x + x.vp_base_pos.x * (1 - 2 * viewport_x), viewport_y + x.vp_base_pos.y * (1 - 2 * viewport_y)), (viewport_w * x.vp_base_size.x, viewport_h * x.vp_base_size.y))