Beispiel #1
0
	def on_mouse_drag(self, x, y, dx, dy, buttons, modifiers):
		if self.draggingInput is not None and self.draggingInput.gameObject is not None:
			worldCoords = self.draggingInputCamera.windowToWorldCoords(Vector2(x, y))
			scaledDelta = Vector2(dx, dy) / self.draggingInputCamera.zoom

			for script in self.draggingInput.gameObject.scripts:
				script.onMouseDrag(*worldCoords, *scaledDelta, buttons, modifiers)
Beispiel #2
0
    def __init__(self, gameObject):
        super().__init__()

        self.enabled = True

        self.managers = []
        self.gameObject = gameObject

        self._localPosition = Vector2(0, 0)
        self._position = Vector2(0, 0)

        # self._size = Vector2(0, 0)

        def recalcPosition(sender, oldLocalPosition, newLocalPosition):
            self.position = self.gameObject.transform.position + newLocalPosition

        def recalcLocalPosition(sender, oldPosition, newPosition):
            self.localPosition = newPosition - self.gameObject.transform.position

        self.localPosition.hasChanged += recalcPosition
        self.position.hasChanged += recalcLocalPosition

        # TODO: HACKY SOLUTION
        def recalcPositionFromTransform(sender, oldTransformPos,
                                        newTransformPos):
            self.position = newTransformPos + self.localPosition

        from gameengine.components.Transform import Transform
        if not isinstance(self, Transform):
            self._position = Vector2(self.gameObject.transform.position)
            self.gameObject.transform.position.hasChanged += recalcPositionFromTransform

        if not isinstance(self, Transform):
            self._size = Vector2(self.gameObject.transform.size)
            self.gameObject.transform.size.hasChanged += self.getSizeFromTransform
Beispiel #3
0
        def onUpdate(self):
            self.gameObject.aggressive = True

            if self.movingUp:
                if self.active:
                    self.gameObject.getComponent(Physics).velocity = Vector2(
                        0, 50)
                else:
                    self.gameObject.aggressive = False

                if self.gameObject.transform.position.y >= self.startPositionY + 24:
                    self.gameObject.getComponent(Physics).velocity = Vector2(
                        0, 0)

            elif not self.movingUp:
                self.gameObject.getComponent(Physics).velocity = Vector2(
                    0, -50)

                if self.gameObject.transform.position.y <= self.startPositionY:
                    self.gameObject.getComponent(Physics).velocity = Vector2(
                        0, 0)
                    self.gameObject.aggressive = False

                    if not self.active:
                        Timer.remove(self.hideTimer)
Beispiel #4
0
 def onUpdate(self):
     if self.dead:
         collider = self.getComponent(Collider)
         if collider is not None:
             collider.destroy()
             self.physics.velocity = Vector2(0, 0)
         self.physics.addForce(Vector2(0, 0.4))
Beispiel #5
0
    def onMouseDrag(self, pos, rel, buttons):
        def moveCamera(abs, rel):
            self.gameObject.transform.position -= rel

        # from gameengine.core.Interpolation import Interpolation
        Interpolation(Vector2(), Vector2(rel), 100, moveCamera,
                      EaseOut).start()
Beispiel #6
0
    def __init__(self, player):
        self.player = player
        self.player.spriteSet = Resources.playerSprites["fire"]

        collider = self.player.getComponent(Collider)
        collider.size = Resources.playerBigSize - Vector2(6, 3)
        collider.offset = Vector2(3, -8)
Beispiel #7
0
    def __init__(self, player):
        self.player = player
        self.player.spriteSet = Resources.playerSprites[
            self.player.character]["small"]

        collider = self.player.getComponent(Collider)
        collider.size = Resources.playerSmallSize - Vector2(6, 3)
        collider.offset = Vector2(3, 0)
Beispiel #8
0
    def __init__(self):
        super().__init__()
        self.transform.size = Vector2(100, 100)
        # self.transform.pivot.set(0.5, 1)
        self.transform.depth = 1

        self.addComponent(CustomDraw).size = Vector2(50, 50)
        # self.addComponent(CustomDraw).localPosition = Vector2(25, 50)
        self.addScript(self)
Beispiel #9
0
    def __init__(self):
        super().__init__()
        self.addComponent(CustomDraw).size = Vector2(50, 50)

        self.addScript(self)
        self.addScript(Controls)
        s = self.addScript(Green)
        self.addScript(Extraction).order = -1
        self.addScript(OneSideCollision)
        self.transform.size = Vector2(50, 50)
Beispiel #10
0
    def __init__(self, gameObject):
        super().__init__(gameObject)

        self.velocity = Vector2()
        self.acceleration = Vector2()
        self.drag = 1.0

        self.mass = 1.0
        self.customGravity = None

        PhysicsManager().addObject(self)
Beispiel #11
0
 def dispatchEvent(self, event):
     if event.type == pygame.MOUSEMOTION:
         self.mouseMotion(Vector2(event.pos), Vector2(event.rel),
                          event.buttons)
     elif event.type == pygame.MOUSEBUTTONDOWN:
         self.mouseDown(Vector2(event.pos), event.button)
     elif event.type == pygame.MOUSEBUTTONUP:
         self.mouseUp(Vector2(event.pos), event.button)
     elif event.type == pygame.KEYDOWN:
         self.keyDown(event.key)
     elif event.type == pygame.KEYUP:
         self.keyUp(event.key)
Beispiel #12
0
    def onMouseDrag(self, pos, rel, buttons):
        def move(abs, rel):
            self.gameObject.transform.position += rel

        def f(x):
            return math.sin(x * math.pi / 2) * -1 + 1

        Interpolation(Vector2(),
                      Vector2(rel),
                      300,
                      callback=move,
                      method=EaseInOut).start()
Beispiel #13
0
	def on_mouse_motion(self, x, y, dx, dy):
		camera = self._getCameraAt(x, y)

		if camera is not None:
			worldCoords = camera.windowToWorldCoords(Vector2(x, y))
			scaledDelta = Vector2(dx, dy) / camera.zoom

			for input in self.collection:
				if input.rect.collidePoint(*worldCoords):
					for script in input.gameObject.scripts:
						script.onMouseMotion(*worldCoords, *scaledDelta)
					break
Beispiel #14
0
	def __init__(self):
		super().__init__()

		from gameengine.managers.PhysicsManager import PhysicsManager
		PhysicsManager().add(self)

		self.velocity = Vector2()
		self.acceleration = Vector2()
		self.drag = Vector2(1, 1)
		self.mass = 1.0

		self.customGravity: Vector2 = None
Beispiel #15
0
    def __init__(self, left=.0, top=.0, width=.0, height=.0):
        self._topLeft = Vector2(left, top)
        self._size = Vector2(width, height)

        self.hasChanged = EventHandler(self)

        def topLeftChanged(sender, old, new):
            self.hasChanged(Rect(*new, *self._size), self)

        def sizeChanged(sender, old, new):
            self.hasChanged(Rect(*self._topLeft, *new), self)

        self._topLeft.hasChanged += topLeftChanged
        self._size.hasChanged += sizeChanged
Beispiel #16
0
    def __init__(self, gameObject):
        super().__init__(gameObject)
        self._size = Vector2(0, 0)

        self._depth = 0

        self._parent: Transform = None
        self.children = []

        self.pivot = Pivot(self.gameObject)
        self.anchor = Anchor(self.gameObject)

        self.sizeChanged = EventHandler(self)

        self._localPosition = Vector2(0, 0)
        self._position = Vector2(0, 0)

        def recalcPosition(sender, oldLocalPosition, newLocalPosition):
            if self.parent is None:
                self.position = Vector2(newLocalPosition)
            else:
                # self.position = self.parent.position

                self.position = self.parent.position + newLocalPosition \
                # -Vector2(1, 1)

                # - self.parent.size * self.anchor.ratio \

                # + self.size * self.pivot.ratio
        def recalcLocalPosition(sender, oldPosition, newPosition):
            if self.parent is None:
                self.localPosition = Vector2(newPosition)
            else:
                self.localPosition = newPosition - self.parent.position \
                # +Vector2(1, 1)

                # + self.parent.size * self.anchor.ratio \

                # - self.size * self.pivot.ratio
        def recalcChildrenPosition(sender, oldPosition, newPosition):
            if self.children:
                for child in self.children:
                    child.position = newPosition + child.localPosition
                    # print(child.position)

        self.localPosition.hasChanged += recalcPosition
        self.position.hasChanged += recalcLocalPosition
        self.position.hasChanged += recalcChildrenPosition
Beispiel #17
0
    def __init__(self):
        super().__init__()
        self.transform.size = Vector2(50, 50)

        self.addComponent(CustomDraw)
        self.addComponent(Input)
        self.addScript(self)
Beispiel #18
0
    def __init__(self):
        super().__init__()
        self.transform.size = Vector2(100, 10)

        self.addComponent(CustomDraw)
        self.addComponent(Collider)
        self.addScript(self)
Beispiel #19
0
        def recalcPosition(sender, oldLocalPosition, newLocalPosition):
            if self.parent is None:
                self.position = Vector2(newLocalPosition)
            else:
                # self.position = self.parent.position

                self.position = self.parent.position + newLocalPosition \
Beispiel #20
0
 def onCollisionEnter(self, other, side):
     if ("Block" in other.tags
             or "Enemy" in other.tags) and side == BOTTOM_SIDE:
         self.gameObject.physics.velocity.y = 0
         self.gameObject.physics.addForce(Vector2(0, -12))
         return True
     return False
Beispiel #21
0
        def __init__(self, slider):
            super().__init__()
            self.transform.size = Vector2(20, 20)
            self.addComponent(CustomDraw)
            self.addComponent(Input)
            self.addScript(self)

            self.slider = slider
Beispiel #22
0
 def move(self, rel):
     self.transform.position += Vector2(rel, 0)
     from gameengine.util.util import clamp
     self.transform.localPosition.x = clamp(
         self.transform.localPosition.x, 0,
         self.slider.transform.size.x)
     self.slider.value = self.slider.distanceToValue(
         self.transform.localPosition.x)
Beispiel #23
0
        def onCollisionEnter(self, other, side):
            if "Block" in other.tags and side == BOTTOM_SIDE:
                self.gameObject.physics.velocity.y = 0
                self.gameObject.physics.addForce(Vector2(0, -12))

                return True

            return super().onCollisionEnter(other, side)
Beispiel #24
0
	def init(self, script, *args, **kwargs):
		self.tags.extend(["Platform"])

		sr = self.addComponent(SpriteRenderer)
		sr.setImage(Resources.platform)
		sr.order = 1

		from gameengine.components.Physics import Physics
		physics = self.addComponent(Physics)
		physics.customGravity = Vector2()
		physics.mass = 999

		col = self.addComponent(Collider)
		col.size = sr.size
		col.offset = Vector2(8, 8)

		self.addScript(script, *args, **kwargs)
Beispiel #25
0
    def onLoad(self):
        self.mainCamera.addScript(MoveCamera)

        s2 = Square2()
        s2.transform.position = Vector2(0, 0)

        self.p = Square((200, 150), (255, 0, 0))
        self.p.transform.pivot.set(0.5, 0.5)
Beispiel #26
0
    def onUpdate(self):
        self.gameObject.transform.position += Vector2(0.1, 0.2)

        self.i += 1

        if self.i % 60 == 0:
            self.gameObject.label.text = "Alex {}".format(self.i)
            self.gameObject.label.italic = not self.gameObject.label.italic
Beispiel #27
0
    def __init__(self):
        super().__init__()

        self.transform.size = Vector2(50, 50)

        self.addComponent(CustomDraw).size = Vector2(50, 50)

        self.addScript(self)

        def printPositionChange(sender, old, new):
            print("{}'s transform moved from {} to {}".format(self, old, new))

        def printSizeChange(sender, old, new):
            print("{}'s transform sized from {} to {}".format(self, old, new))

        self.transform.position.hasChanged += printPositionChange
        self.transform.size.hasChanged += printSizeChange
Beispiel #28
0
    def __init__(self, size, color):
        super().__init__()
        self.transform.size = Vector2(size)
        self.color = color

        self.addComponent(CustomDraw)
        self.addScript(Resize)
        self.addScript(self)
Beispiel #29
0
    def __init__(self,
                 width,
                 min,
                 max,
                 startValue=None,
                 wholeNumbers=False,
                 decimals=1):
        super().__init__()
        self.addComponent(CustomDraw)
        self.addComponent(Input)
        self.addScript(self)

        self.transform.pivot.set(0, 0.5)
        self.transform.size = Vector2(width, 8)

        self.min = min
        self.max = max
        self._value = 0

        self.wholeNumbers = wholeNumbers
        self.decimals = decimals

        self.handle = self.Handle(self)
        self.handle.transform.parent = self.transform

        self.handle.transform.pivot.set(0.5, 0.5)
        self.handle.transform.anchor.set(0,
                                         0.5,
                                         overridePivot=False,
                                         overridePosition=True)

        self.label = LabelListener(str(self._value))
        self.label.transform.parent = self.transform

        self.label.transform.anchor.set(1, 0.5, False, False)
        self.label.transform.pivot.set(0, 0.5)
        self.label.transform.localPosition = Vector2(20, 0)

        self.label.fontSize = 24

        self.valueChanged = EventHandler(self)
        self.valueChanged += self.handle.notify
        self.valueChanged += self.label.notify

        self.value = startValue if (startValue is not None) else min
Beispiel #30
0
    def __init__(self, enemy):
        super().__init__()
        self.enemy = enemy

        self.enemy.spriteRenderer.interval = -1

        destroy(self.enemy.collider)
        self.enemy.physics.velocity.y = 0
        self.enemy.physics.addAcceleration(Vector2(0, -7))