_
This commit is contained in:
@@ -6,6 +6,9 @@ from UI.Objects.Scene import Scene
|
||||
|
||||
|
||||
class Multiscene(Scene):
|
||||
|
||||
object_type = "multiscene"
|
||||
|
||||
def __init__(self, width: float, height: float, scene_size: a):
|
||||
super().__init__(width, height, scene_size)
|
||||
|
||||
@@ -39,12 +42,10 @@ class Multiscene(Scene):
|
||||
for object_ in self.nr_objects:
|
||||
object_.blit()
|
||||
|
||||
for object_ in self.nrd_objects:
|
||||
object_.blit()
|
||||
for object_ in self.d_objects:
|
||||
object_.progress()
|
||||
|
||||
for object_ in self.nrc_objects:
|
||||
object_.blit()
|
||||
for object_ in self.c_objects:
|
||||
object_.input(self.mouse_pos, self.clicked)
|
||||
|
||||
pygame.display.update()
|
||||
|
@@ -4,6 +4,9 @@ from numpy import array as a
|
||||
|
||||
|
||||
class Scene(Screen):
|
||||
|
||||
object_type = "scene"
|
||||
|
||||
def __init__(self, width: float, height: float, scene_size: a, bg=(60, 60, 60)):
|
||||
super().__init__(width, height, scene_size)
|
||||
|
||||
@@ -11,9 +14,8 @@ class Scene(Screen):
|
||||
self.r_objects = [] # resizable Objects
|
||||
self.nr_objects = [] # non-rescalable Objects
|
||||
|
||||
self.nrd_objects = [] # non-rescalable dynamic Objects
|
||||
self.nrc_objects = [] # non-rescalable controllable Objects
|
||||
|
||||
self.d_objects = [] # dynamic Objects
|
||||
self.c_objects = [] # controllable Objects
|
||||
self.i_objects = [] # interactive Objects
|
||||
|
||||
self.position = a([0, 0])
|
||||
@@ -34,12 +36,10 @@ class Scene(Screen):
|
||||
for object_ in self.nr_objects:
|
||||
object_.blit()
|
||||
|
||||
for object_ in self.nrd_objects:
|
||||
object_.blit()
|
||||
for object_ in self.d_objects:
|
||||
object_.progress()
|
||||
|
||||
for object_ in self.nrc_objects:
|
||||
object_.blit()
|
||||
for object_ in self.c_objects:
|
||||
object_.input(self.mouse_pos, self.clicked)
|
||||
|
||||
pygame.display.update()
|
||||
@@ -57,3 +57,23 @@ class Scene(Screen):
|
||||
|
||||
def get_i_objects(self):
|
||||
return [[self.i_objects, self.mouse_pos]]
|
||||
|
||||
def sort_objects(self, *args):
|
||||
for object_ in args:
|
||||
for object_tag in object_.object_type.split("_"):
|
||||
if object_tag == "r":
|
||||
self.r_objects.append(object_)
|
||||
elif object_tag == "nr":
|
||||
self.nr_objects.append(object_)
|
||||
elif object_tag == "d":
|
||||
self.d_objects.append(object_)
|
||||
elif object_tag == "c":
|
||||
self.c_objects.append(object_)
|
||||
elif object_tag == "i":
|
||||
self.i_objects.append(object_)
|
||||
elif object_tag in ["scene", "multiscene"]:
|
||||
if self.object_type == "multiscene":
|
||||
self.subscenes.append(object_)
|
||||
else:
|
||||
raise ValueError("Scene/Multiscene object encountered in scene.sort_objects()\n"
|
||||
"Please use Multiscene for this purpose.")
|
||||
|
@@ -2,6 +2,9 @@ import pygame.draw
|
||||
|
||||
|
||||
class Circle:
|
||||
|
||||
object_type = "nr"
|
||||
|
||||
def __init__(self, center, radius, color, scene):
|
||||
self.center = center
|
||||
self.radius = radius
|
||||
|
@@ -2,6 +2,9 @@ import pygame
|
||||
|
||||
|
||||
class Ellipse:
|
||||
|
||||
object_type = "nr"
|
||||
|
||||
def __init__(self, center, a, b, color, scene):
|
||||
self.center = center
|
||||
self.a = a
|
||||
|
@@ -4,6 +4,9 @@ import math
|
||||
|
||||
|
||||
class EquilateralTriangle:
|
||||
|
||||
object_type = "nr"
|
||||
|
||||
def __init__(self, position, side_length, rotation, color, scene, width=0):
|
||||
self.position = position
|
||||
self.side_length = side_length
|
||||
|
@@ -5,6 +5,9 @@ import copy
|
||||
|
||||
|
||||
class Image:
|
||||
|
||||
object_type = "nr"
|
||||
|
||||
def __init__(self, center, scalar, path, scene):
|
||||
self.center = center
|
||||
self.scalar = scalar
|
||||
|
@@ -2,6 +2,9 @@ import pygame.draw
|
||||
|
||||
|
||||
class Line:
|
||||
|
||||
object_type = "nr"
|
||||
|
||||
def __init__(self, a, b, width, color, scene):
|
||||
self.a = a
|
||||
self.b = b
|
||||
|
@@ -2,6 +2,9 @@ import pygame
|
||||
|
||||
|
||||
class Text:
|
||||
|
||||
object_type = "nr"
|
||||
|
||||
def __init__(self, position, text, font_size, color, scene, font_name="calibri", bold=True):
|
||||
self.position = position
|
||||
self.text = text
|
||||
|
@@ -3,6 +3,9 @@ import pygame
|
||||
|
||||
|
||||
class RopeInteractiveDot:
|
||||
|
||||
object_type = "nr_c"
|
||||
|
||||
def __init__(self, position, r, color, force, forcefield_range, scene):
|
||||
self.position = position
|
||||
self.r = r
|
||||
@@ -25,7 +28,8 @@ class RopeInteractiveDot:
|
||||
if node.locked is False:
|
||||
if math.sqrt(sum((node.position - self.position) ** 2)) < self.forcefield_range:
|
||||
force_vector = node.position - self.position
|
||||
full_force_vector = (force_vector / math.sqrt(sum(force_vector ** 2))) * self.forcefield_range
|
||||
full_force_vector = (force_vector / math.sqrt(sum(force_vector ** 2))) \
|
||||
* self.forcefield_range
|
||||
force_vector = full_force_vector - force_vector
|
||||
force_vector /= self.forcefield_range / self.force
|
||||
|
||||
|
@@ -5,6 +5,8 @@ import math
|
||||
|
||||
class Rope:
|
||||
|
||||
object_type = "nr_d_i"
|
||||
|
||||
class Node:
|
||||
def __init__(self, position):
|
||||
self.position = position
|
||||
|
@@ -2,6 +2,9 @@ import pygame.draw
|
||||
|
||||
|
||||
class Rect:
|
||||
|
||||
object_type = "r"
|
||||
|
||||
def __init__(self, pos, size, color, scene):
|
||||
self.pos = pos
|
||||
self.size = size
|
||||
|
Reference in New Issue
Block a user