Skip to content

Commit aa5c396

Browse files
switch richlib to use raylib.static rather than dynamic, and fix colors to always be lists of 4
1 parent de89790 commit aa5c396

File tree

2 files changed

+59
-21
lines changed

2 files changed

+59
-21
lines changed

raylib/richlib/__init__.py

Lines changed: 54 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
22
"""
33
__version__ = '0.1'
44

5-
from ..dynamic import ffi, raylib as rl
5+
from ..static import ffi, rl
6+
#from ..dynamic import ffi, raylib as rl
67
from ..colors import *
78

89
import sys
@@ -44,16 +45,58 @@ def z(self):
4445
def z(self, value):
4546
self[2] = value
4647

48+
@property
49+
def w(self):
50+
return self[3]
51+
52+
@w.setter
53+
def w(self, value):
54+
self[3] = value
55+
56+
class Color(list):
57+
def __init__(self, s):
58+
if isinstance(s, str):
59+
super().__init__(globals()[s.upper()])
60+
else:
61+
super().__init__(s)
62+
if len(self) == 3:
63+
self.append(255)
64+
65+
@property
66+
def r(self):
67+
return self[0]
68+
69+
@r.setter
70+
def r(self, value):
71+
self[0] = value
72+
73+
@property
74+
def g(self):
75+
return self[1]
4776

48-
def make_color(c):
49-
if isinstance(c, str):
50-
return globals()[c.upper()]
51-
else:
52-
return c
77+
@g.setter
78+
def g(self, value):
79+
self[1] = value
80+
81+
@property
82+
def b(self):
83+
return self[2]
84+
85+
@b.setter
86+
def b(self, value):
87+
self[2] = value
88+
89+
@property
90+
def a(self):
91+
return self[3]
92+
93+
@a.setter
94+
def a(self, value):
95+
self[3] = value
5396

5497

5598
def clear(color=BLACK):
56-
rl.ClearBackground(color)
99+
rl.ClearBackground(Color(color))
57100

58101

59102
class Shape:
@@ -63,10 +106,7 @@ def color(self):
63106

64107
@color.setter
65108
def color(self, value):
66-
if isinstance(value, str):
67-
self._color = globals()[value.upper()]
68-
else:
69-
self._color = value
109+
self._color = Color(value)
70110

71111
@property
72112
def pos(self):
@@ -82,10 +122,7 @@ def wire_color(self):
82122

83123
@wire_color.setter
84124
def wire_color(self, value):
85-
if isinstance(value, str):
86-
self._wire_color = globals()[value.upper()]
87-
else:
88-
self._wire_color = value
125+
self._wire_color = Color(value)
89126

90127
@property
91128
def x(self):
@@ -117,7 +154,7 @@ def __init__(self, position, size, color=RED, wires=True, wire_color=DARKGRAY):
117154
self.pos = position
118155
self.size = size
119156
self.color = color
120-
self.wire_color = wire_color # make_color(wire_color)
157+
self.wire_color = wire_color
121158
self.wires = wires
122159

123160
# def __getattr__(self, item):
@@ -150,6 +187,7 @@ def get_bounding_box(self):
150187
)
151188

152189
def draw(self):
190+
#print("draw color ",self.color)
153191
rl.DrawCubeV(self.pos, self.size, self.color)
154192
if self.wires:
155193
rl.DrawCubeWiresV(

test_richlib.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
#CAMERA=CAMERA_FIRST_PERSON
66
DATA_DIR="examples/models/resources/models/"
77

8-
player = Box((0, 10, 20), (10, 20, 10), GREEN)
9-
enemy_box = Box((-40, 10, 0), (20, 20, 20), (70,70,70))
8+
player = Box((0, 10, 20), (10, 20, 10), 'green')
9+
enemy_box = Box((-40, 10, 0), (20, 20, 20), (150,0,0))
1010
enemy_sphere = Sphere((40, 15, 0), 15, 'gray')
1111
castle = Actor("castle", collision_radius=15)
1212
castle.z=-50
@@ -28,13 +28,13 @@ def update():
2828
player.pos.z -= 2
2929

3030
if player.check_collision(enemy_box) or player.check_collision(enemy_sphere) or player.check_collision(castle):
31-
player.color = RED
31+
player.color = 'red'
3232
else:
33-
player.color = GREEN
33+
player.color = 'green'
3434

3535

3636
def draw3d():
37-
rl.ClearBackground(WHITE)
37+
clear('white')
3838
enemy_box.draw()
3939
enemy_sphere.draw()
4040
player.draw()

0 commit comments

Comments
 (0)