def __init__(self, position, targetScene, targetPosition): super().__init__() self.setType("teleportation") self.uniqid = uuid.uuid4() self.action = ActionDispatcher(self.uniqid, position[0], position[1]) self.receiver = ActionReceiver(self.uniqid) self.receiver.on(self.doTeleport) texture = Image("assets/icons/door.png") texture.setSize(64, 64) texture.setOffsetPosition(93, 300) texture.setDepth(101) self.assignDrawable(texture) self.setPosition(position[0], position[1]) self.targetScene = targetScene self.targetPosition = targetPosition Render.set(texture)
def __init__(self, direction="right", speed=2, characterName=None): super().__init__() self.setType("character") self.direction = direction self.walking = True self.speed = speed self.reachBorder = False self.characterName = characterName self.dialogStarted = False self.assignedDialog = None # assign a action dispatcher on the character self.uniqid = uuid.uuid4() self.functionsToCallWhenAction = [] self.dispatcher = ActionDispatcher(self.uniqid, 0, 0) self.receiver = ActionReceiver(self.uniqid) self.receiver.on(self.callFunctions) # character texture self.sprites = { "walking": Sprite("assets/characters/" + characterName + "/walking.png"), "static": Sprite("assets/characters/" + characterName + "/static.png") } # sprite settings self.sprites['walking'].setSpeed(6) self.sprites['walking'].setSize(256, 256) self.sprites['static'].setSpeed(1) self.sprites['static'].setSize(256, 256) self.setSize(256, 256) self.assignDrawable(self.sprites['static']) self.setDepth(50) characters.append(self)
def __init__(self, sceneToLoad): super().__init__(); self.setType("scene"); self.assignedElements = []; self.actions = []; self.sceneData = None; self.spawnPoint = None; self.name = ""; self.file = sceneToLoad; # load a scene if sceneToLoad: f = open("assets/scenes/" + sceneToLoad + ".json", "r", encoding='utf-8'); if f: self.sceneData = json.load(f); f.close(); # getting scene size self.setSize(0, 400); # set the position and size of the ground self.groundElement = Ground(); self.groundElement.setSize(self.size[0], self.size[0]); self.groundElement.setPosition(0, self.size[1]); mapSize = 0; self.name = self.sceneData['name']; # generate the map for e in self.sceneData['data']: if e: _type = e[0]; data = e[1] position = [e[2], e[3]]; element = None; if _type == "wall": element = Wall(data, position[0], position[1]); mapSize += 1; elif _type == "pickup": element = Pickup(data, position[0], position[1]); elif _type == "door": element = Door(data, position[0], position[1], e[4]); mapSize += 1; if len(e) == 6: self.actions.append(Teleport(position, e[5], [125, 0])); elif _type == "action": self.actions.append(ActionDispatcher(data, position[0], position[1])); elif _type == "spawn": self.spawnPoint = position; elif _type == "character": element = Character(e[5], e[6], e[1]); position = [e[2], self.getGroundPosition(element)]; if(e[4] != None): dialog = Dialog(e[4]); dialog.assignInterface(GlobalVars.getVar("dialogInterface")); element.assignDialog(dialog); elif _type == "teleport": targetScene = data; targetPosition = [e[4], e[5]]; self.actions.append(Teleport(position, targetScene, targetPosition)); if element: self.append(element, position[0], position[1]); self.setSize(250 * mapSize, 400); # check if the scene have a background if 'background' in self.sceneData: element = Background(self.sceneData['background'], 250 * mapSize); self.append(element, 250 * mapSize,0); backgroundBehaviour.setBackground(element); self.assignedPlayer = None; Global.setTimeout(self.appendToRender, 500);