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)
示例#3
0
	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);