From 344c07038cf1d6ddf7cb909b271a118a7db18f92 Mon Sep 17 00:00:00 2001 From: csd4ni3l Date: Thu, 6 Nov 2025 22:53:32 +0100 Subject: [PATCH] Rename connected to powered, fix power not propagating correctly(spelling errors), add temporary power source texture and power sources themselves, fix power line textures being misaligned --- .../connected_lines/corner/left_bottom.png | Bin 1178 -> 0 bytes .../connected_lines/corner/left_top.png | Bin 1124 -> 0 bytes .../connected_lines/corner/right_bottom.png | Bin 1169 -> 0 bytes .../connected_lines/corner/right_top.png | Bin 1154 -> 0 bytes assets/graphics/power_source.png | Bin 0 -> 167 bytes .../powered_lines/corner/left_bottom.png | Bin 0 -> 1216 bytes .../powered_lines/corner/left_top.png | Bin 0 -> 1222 bytes .../powered_lines/corner/right_bottom.png | Bin 0 -> 1185 bytes .../powered_lines/corner/right_top.png | Bin 0 -> 1258 bytes .../line/horizontal.png | Bin .../line/vertical.png | Bin .../unconnected_lines/corner/left_bottom.png | Bin 1144 -> 0 bytes .../unconnected_lines/corner/left_top.png | Bin 1063 -> 0 bytes .../unconnected_lines/corner/right_bottom.png | Bin 1105 -> 0 bytes .../unconnected_lines/corner/right_top.png | Bin 1093 -> 0 bytes .../unpowered_lines/corner/left_bottom.png | Bin 0 -> 1151 bytes .../unpowered_lines/corner/left_top.png | Bin 0 -> 1143 bytes .../unpowered_lines/corner/right_bottom.png | Bin 0 -> 1109 bytes .../unpowered_lines/corner/right_top.png | Bin 0 -> 1195 bytes .../line/horizontal.png | Bin .../line/vertical.png | Bin game/play.py | 51 +++++++-- game/power_line.py | 104 +++++++++++------- utils/preload.py | 26 +++-- 24 files changed, 121 insertions(+), 60 deletions(-) delete mode 100644 assets/graphics/connected_lines/corner/left_bottom.png delete mode 100644 assets/graphics/connected_lines/corner/left_top.png delete mode 100644 assets/graphics/connected_lines/corner/right_bottom.png delete mode 100644 assets/graphics/connected_lines/corner/right_top.png create mode 100644 assets/graphics/power_source.png create mode 100644 assets/graphics/powered_lines/corner/left_bottom.png create mode 100644 assets/graphics/powered_lines/corner/left_top.png create mode 100644 assets/graphics/powered_lines/corner/right_bottom.png create mode 100644 assets/graphics/powered_lines/corner/right_top.png rename assets/graphics/{connected_lines => powered_lines}/line/horizontal.png (100%) rename assets/graphics/{connected_lines => powered_lines}/line/vertical.png (100%) delete mode 100644 assets/graphics/unconnected_lines/corner/left_bottom.png delete mode 100644 assets/graphics/unconnected_lines/corner/left_top.png delete mode 100644 assets/graphics/unconnected_lines/corner/right_bottom.png delete mode 100644 assets/graphics/unconnected_lines/corner/right_top.png create mode 100644 assets/graphics/unpowered_lines/corner/left_bottom.png create mode 100644 assets/graphics/unpowered_lines/corner/left_top.png create mode 100644 assets/graphics/unpowered_lines/corner/right_bottom.png create mode 100644 assets/graphics/unpowered_lines/corner/right_top.png rename assets/graphics/{unconnected_lines => unpowered_lines}/line/horizontal.png (100%) rename assets/graphics/{unconnected_lines => unpowered_lines}/line/vertical.png (100%) diff --git a/assets/graphics/connected_lines/corner/left_bottom.png b/assets/graphics/connected_lines/corner/left_bottom.png deleted file mode 100644 index 6bfef33ba5c179565f15333488777ae82f95dddc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1178 zcmV;L1ZDe)P)000DGNkln{H0^pob zingtqrY>GJ&C+!fQ3}>kYcs%@WZNnLh&<@JiAV_H0lH`*0Hx@GT#rVC^f^S^z?LrP3=N03e$!%d!{X2!fUZa86{IRVo?Ii6k)q z=nC(DEsys`mPNf3=#T6d99r-OS}mwymBH005vA8;y9e znD;*!9{wpFH$_DSU_THmhlq0$i#erI-f?1-A|g$ts>8!erWvP{o!ovq02IaD-u|#y z%oD=J@osEvvAg??=P4&Iq?Q9fGYN&lsAXxCBIm>~>f__z1=0y^0#Fopd%LGl7!?sC z(p;`|?b^>`JvfQ+b^rhXBGvUqq40U7k`eQib22gUIFqS}v>e-Vn*gABIDPbJk}(OI z8^YAof~Hxns~nr5eE{MpvA*8_t}D;a&%Auu?=u)ieQIi9a`Ib6 zaqD&Ch_@Ia0002zRF*x@lji1bl}ewAvO%PrlaZ09ckg~ZGV+u$xzUJ=+l@ntinQor z>nIXIJ5FqDZ1LvJ@5M<8ng{Q4`RvltXUofXz zwQbe1G{&S(0T7}T9Vg~_ayGk}&;OFkJxe6^#8-ku{N~_v>MQ^N5S8sXG1pbjocU{D z;P;`SmA<}ppX8u8Cvy8kJX~VqQ4}{8b1X|M7OxhISCh$FI=z+6Zua)RN~LxZi9J=d zRn?{xI}SidU{H$jcmn_|OMCHRV0Cqn5H8D}s@jU;#N%e?0{HUlUR7<;$D9+-lU-NY z-%kK^UJ3o5{`+5v7*nSP;9v4#!Z`~Cs0bizMF3$d0tj0XK-h`^!d3(jwjzMA6#;~; s2q0`l0AVWv2wM?A*opwc)~N^h8$^#J)}RanssI2007*qoM6N<$f^eTF0RR91 diff --git a/assets/graphics/connected_lines/corner/left_top.png b/assets/graphics/connected_lines/corner/left_top.png deleted file mode 100644 index 1be071beab3688a6a84ef0e01702c4c5a32ded26..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1124 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 UvNf_#OaK4?07*qoM6N<$f)RQodjJ3c diff --git a/assets/graphics/power_source.png b/assets/graphics/power_source.png new file mode 100644 index 0000000000000000000000000000000000000000..c41f0ff88cab49e11626c521e8aa1dbb5fe59486 GIT binary patch literal 167 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=d7dtgAr*7pUNB^2FyJ__L9Sy) u{lscV4{6Ss`||~*pKv*>W1t%Gj$!2!7G9p!k1hgjX7F_Nb6Mw<&;$S+0yb;_ literal 0 HcmV?d00001 diff --git a/assets/graphics/powered_lines/corner/left_bottom.png b/assets/graphics/powered_lines/corner/left_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..1b4df807645272b8dab190791ce20b440570a816 GIT binary patch literal 1216 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 literal 0 HcmV?d00001 diff --git a/assets/graphics/powered_lines/corner/right_top.png b/assets/graphics/powered_lines/corner/right_top.png new file mode 100644 index 0000000000000000000000000000000000000000..efcda30ef482f54a7bab2f12e01da56ad28109e5 GIT binary patch literal 1258 zcmV000EBNklAKz`iPzrlY)bLtQ1 zr4%3HLovkQ^iqmlVw{2!JHhfVj9N?nrMR-C-PP{S^ziDXw57Q5u2u$pPotGIGoN|y z&3pUE;NT!QDnhtr3Bh3H;ls}rMFjv=RUSS1tWpUIg2g#;b~)+7xdI2J2X%G_AREdW8Vip3ZX03eZA2?i^c z<$N5w0>Bs*MPqHPwOkGp!Z|15a5)|?7>4M$9bB|PrE(~rZwCN8_*81{z*qpqImzWR z0D!mWsZ+0IS#$g@atnZS;`i6)=Tn*{3xdTMJ$iIKnOx9y$yqOQ5y0m&N~M-uE)4*9 z@V&jy9AC)YT8L8i{CN)mU>TQA=Q=u;G);EU2rdFJMkPsKT-}Q9}6T%Rf3B z2JTvb5N?{n#KcE9=A2|Qv!_qbsA|9|Be)B|7*!PY<;!=Mmrqj4@a(T$8KGmU#CD{^hkw6w=bLc2jM@6_X08(e0AQM z2Ntj!Eh8fXPoDI14wN#^31jrwvET0A{rcw3p|-YSwHm0^BtrOqlMu&Si+dNPtWpW4 zQuEiZ54W_GI478`0l>0^Z1&vL)cg5-yJ3i;X!v}lokQ^NIPekx04Qaus)Rz@eSKry z-BSR7?quIc%gZNUy*jh7(7CY@)ifCZ1i_+|p;-vw9s>XXrOY&awVIU4yuNbfhvUb8 zgDmXVNH{3H9uq2=k4xsuYzC&0+qSB%;I9_`SZVAxbSl< zR>W_y4r)d!w_pV|MqqWfHX9KEt>>|=^1my!2tNDY#tA4 zA!pSD@LEj(uhj(bT1^12)dcWbO#rXe1n^o-0I$^q@LEj(uhj(bT1^12b>IR109h_Y U-~3%_Q2+n{07*qoM6N<$f@*hKkpKVy literal 0 HcmV?d00001 diff --git a/assets/graphics/connected_lines/line/horizontal.png b/assets/graphics/powered_lines/line/horizontal.png similarity index 100% rename from assets/graphics/connected_lines/line/horizontal.png rename to assets/graphics/powered_lines/line/horizontal.png diff --git a/assets/graphics/connected_lines/line/vertical.png b/assets/graphics/powered_lines/line/vertical.png similarity index 100% rename from assets/graphics/connected_lines/line/vertical.png rename to assets/graphics/powered_lines/line/vertical.png diff --git a/assets/graphics/unconnected_lines/corner/left_bottom.png b/assets/graphics/unconnected_lines/corner/left_bottom.png deleted file mode 100644 index b3734ce86f372ed58d1004dcd5d3f062d4666817..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1144 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 diff --git a/assets/graphics/unconnected_lines/corner/right_bottom.png b/assets/graphics/unconnected_lines/corner/right_bottom.png deleted file mode 100644 index 34f7fc38ec3cfb73f891457c600ea629d2311cce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1105 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 b__%%p3r0!(dO1Cy00000NkvXXu0mjfCGrY@ literal 0 HcmV?d00001 diff --git a/assets/graphics/unpowered_lines/corner/right_top.png b/assets/graphics/unpowered_lines/corner/right_top.png new file mode 100644 index 0000000000000000000000000000000000000000..7c09a07c71581df8f5f51079b86bbfc8137cd6d9 GIT binary patch literal 1195 zcmV;c1XTNpP)000DXNklw*^TT=Y-$H}p5Os}^mdU5f}3qD{C6L4p<` zS{6a5Wu#d;Gmdlbvp7%k@Z)*u`8CrR_+4FRaivmWj2W?tQ2?5zjf{-o002s*QnT4KB9D!UOG;H$_4#~mx0`cL2x&AL z<#O3#vFPpx13ln$Is<_K0N}=7Utj+i51UvjGP*BhY%jzZo0*vb0Bqw5g~Hw4 zo!xHN(Fq0uP)Zd=357y|Kmd<6&iUEdnZ9XYtOu~QUR+$nF(D+M&tF|#4Gs?Ks% zI6OBuhZa*xGnq^_n{_&!*l2udem#u*4-rBnNm^Q38X6kH&?kf(9v3A+qJNIIR~+S&PoR;%@s7)1A*xz7kK6GbtdP9Gm1BLjTI&-C!0lp^(?>wcG6gplKRo3Fvjp2FPF=mo}NBDJirG= zHw_3O!^6XYK)~fR5 zfTn4cO69K)tyZfjiah}U02uv}BvDG|=jW%UrV52ZHk&OLi=9pf|3fM5Cc36+k|g2X zeNOy>FFt-&*$^`QmG`%@-Jr`CUFk|pb$fnBtnSS>-GEniA17a zuU9ISQmOR#_*kpe-rwI9MZpT&a{wsBP*t_vZWBV>ZnwwdiN#`^b5&IpMNw6?)oS%F z0IGX_bvhkYRl5%@7K_ztb-7%Gke&wU>X(z4bB?JDJ(vTZRF}tuZd70O0nAn(z-;va z%vK-3Z1n-mRv*A@^#ROQAHZz&0nAn(z-;va%vK-3Z2fqEKL9w@MRGQKFs=Xq002ov JPDHLkV1h5GDhvPs literal 0 HcmV?d00001 diff --git a/assets/graphics/unconnected_lines/line/horizontal.png b/assets/graphics/unpowered_lines/line/horizontal.png similarity index 100% rename from assets/graphics/unconnected_lines/line/horizontal.png rename to assets/graphics/unpowered_lines/line/horizontal.png diff --git a/assets/graphics/unconnected_lines/line/vertical.png b/assets/graphics/unpowered_lines/line/vertical.png similarity index 100% rename from assets/graphics/unconnected_lines/line/vertical.png rename to assets/graphics/unpowered_lines/line/vertical.png diff --git a/game/play.py b/game/play.py index da3dd6c..5543ca3 100644 --- a/game/play.py +++ b/game/play.py @@ -3,6 +3,8 @@ import arcade, arcade.gui, random from utils.constants import button_style from utils.preload import button_texture, button_hovered_texture +from collections import deque + from game.power_line import PowerLine class Game(arcade.gui.UIView): @@ -14,6 +16,7 @@ class Game(arcade.gui.UIView): self.difficulty = difficulty self.power_lines = [] + self.power_sources = [] self.anchor = self.add_widget(arcade.gui.UIAnchorLayout(size_hint=(1, 1))) self.grid_size = list(map(int, difficulty.split("x"))) @@ -29,17 +32,51 @@ class Game(arcade.gui.UIView): for row in range(self.grid_size[0]): self.power_lines.append([]) for col in range(self.grid_size[1]): - left_neighbor = self.power_lines[row][col - 1] if col > 0 else None - top_neighbor = self.power_lines[row - 1][col] if row > 0 else None + left_neighbour = self.power_lines[row][col - 1] if col > 0 else None + top_neighbour = self.power_lines[row - 1][col] if row > 0 else None + + line_type = random.choice(["line", "corner", "power_source"]) + power_line = PowerLine(line_type, left_neighbour, top_neighbour) + + if line_type == "power_source": + self.power_sources.append(power_line) - power_line = PowerLine(random.choice(["line", "corner"]), left_neighbor, top_neighbor) self.power_grid.add(power_line, row=row, column=col) self.power_lines[row].append(power_line) - if left_neighbor: - left_neighbor.right_neighbor = power_line - if top_neighbor: - top_neighbor.bottom_neighbor = power_line + if left_neighbour: + left_neighbour.right_neighbour = power_line + if top_neighbour: + top_neighbour.bottom_neighbour = power_line + + arcade.schedule(self.update_grid, 1 / 10) + + def update_grid(self, _): + for row in self.power_lines: + for power_line in row: + if power_line.line_type != "power_source": + power_line.powered = False + + queue = deque(self.power_sources) + visited = set() + + while queue: + current = queue.popleft() + + if id(current) in visited: + continue + + visited.add(id(current)) + + current.powered = True + + for connected_neighbour in current.get_connected_neighbours(): + if id(connected_neighbour) not in visited: + queue.append(connected_neighbour) + + for row in self.power_lines: + for power_line in row: + power_line.update_visual() def main_exit(self): from menus.main import Main diff --git a/game/power_line.py b/game/power_line.py index 963a9d1..d7ac242 100644 --- a/game/power_line.py +++ b/game/power_line.py @@ -3,79 +3,101 @@ import arcade, arcade.gui from utils.preload import * TEXTURE_MAP = { - ("vertical", True): vertical_connected, - ("vertical", False): vertical_unconnected, + ("line", "vertical", True): vertical_powered, + ("line", "vertical", False): vertical_unpowered, - ("horizontal", True): horizontal_connected, - ("horizontal", False): horizontal_unconnected, + ("line", "horizontal", True): horizontal_powered, + ("line", "horizontal", False): horizontal_unpowered, - ("left_bottom", True): left_bottom_connected, - ("left_bottom", False): left_bottom_unconnected, + ("corner", "left_bottom", True): left_bottom_powered, + ("corner", "left_bottom", False): left_bottom_unpowered, - ("left_top", True): left_top_connected, - ("left_top", False): left_top_unconnected, + ("corner", "left_top", True): left_top_powered, + ("corner", "left_top", False): left_top_unpowered, - ("right_bottom", True): right_bottom_connected, - ("right_bottom", False): right_bottom_unconnected, + ("corner", "right_bottom", True): right_bottom_powered, + ("corner", "right_bottom", False): right_bottom_unpowered, - ("right_top", True): right_top_connected, - ("right_top", False): right_top_unconnected, + ("corner", "right_top", True): right_top_powered, + ("corner", "right_top", False): right_top_unpowered, + + ("power_source", "all", True): power_source, } ROTATIONS = { "line": ["vertical", "horizontal"], - "corner": ["left_top", "right_top", "right_bottom", "left_bottom"] + "corner": ["right_bottom", "left_bottom", "left_top", "right_top"], + "power_source": ["all"] } NEIGHBOURS = { - "vertical": lambda l, r, t, b: bool((b and b.connected) or (t and t.connected)), - "horizontal": lambda l, r, t, b: bool((l and l.connected) or (r and r.connected)), - "left_bottom": lambda l, r, t, b: bool(((l and l.connected) or (b and b.connected))), - "right_bottom": lambda l, r, t, b: bool(((r and r.connected) or (b and b.connected))), - "left_top": lambda l, r, t, b: bool(((l and l.connected) or (t and t.connected))), - "right_top": lambda l, r, t, b: bool(((r and r.connected) or (t and t.connected))) + "vertical": ["b", "t"], + "horizontal": ["l", "r"], + "left_bottom": ["l", "b"], + "right_bottom": ["r", "b"], + "left_top": ["l", "t"], + "right_top": ["r", "t"], + "all": ["l", "r", "t", "b"] } +def get_opposite(direction): + if direction == "l": + return "r" + elif direction == "r": + return "l" + elif direction == "t": + return "b" + elif direction == "b": + return "t" + class PowerLine(arcade.gui.UITextureButton): - def __init__(self, line_type, left_neighbor, top_neighbour): - super().__init__(texture=TEXTURE_MAP[ROTATIONS[line_type][0], False]) + def __init__(self, line_type, left_neighbour, top_neighbour): + super().__init__(texture=TEXTURE_MAP[line_type, ROTATIONS[line_type][0], line_type == "power_source"]) self.line_type = line_type self.rotation = ROTATIONS[line_type][0] - self.connected = False + self.powered = self.line_type == "power_source" - self.left_neighbour, self.top_neighbour = left_neighbor, top_neighbour + self.left_neighbour, self.top_neighbour = left_neighbour, top_neighbour self.right_neighbour, self.bottom_neighbour = None, None self.on_click = lambda e: self.next_rotation() - self.update() + self.update_visual() def next_rotation(self): current_index = ROTATIONS[self.line_type].index(self.rotation) - if current_index + 1 == len(ROTATIONS[self.line_type]) - 1: + if current_index + 1 == len(ROTATIONS[self.line_type]): self.rotation = ROTATIONS[self.line_type][0] else: self.rotation = ROTATIONS[self.line_type][current_index + 1] - self.update() + self.update_visual() - def update_neighbours(self): - if self.rotation == "horizontal": - self.left_neighbour.update() if self.left_neighbour else None - self.right_neighbour.update() if self.right_neighbour else None - elif self.rotation == "vertical": - self.top_neighbour.update() if self.top_neighbour else None - self.bottom_neighbour.update() if self.bottom_neighbour else None + def get_neighbour(self, name): + if name == "l": + return self.left_neighbour + elif name == "r": + return self.right_neighbour + elif name == "b": + return self.bottom_neighbour + elif name == "t": + return self.top_neighbour - def update(self): - if not self.connected: - old_connected = self.connected - self.connected = NEIGHBOURS[self.rotation](self.left_neighbour, self.right_neighbour, self.top_neighbour, self.bottom_neighbour) - if self.connected != old_connected: - self.update_neighbours() + def get_connected_neighbours(self): + return [ + self.get_neighbour(neighbour_direction) for neighbour_direction in NEIGHBOURS[self.rotation] + if ( + self.get_neighbour(neighbour_direction) and + get_opposite(neighbour_direction) in NEIGHBOURS[self.get_neighbour(neighbour_direction).rotation] + ) + ] - self.texture = TEXTURE_MAP[(self.rotation, self.connected)] - self.texture_hovered = TEXTURE_MAP[(self.rotation, self.connected)] + def update_value(self): + self.powered = any([neighbour.powered for neighbour in self.get_connected_neighbours()]) + + def update_visual(self): + self.texture = TEXTURE_MAP[(self.line_type, self.rotation, self.powered)] + self.texture_hovered = TEXTURE_MAP[(self.line_type, self.rotation, self.powered)] self._requires_render = True \ No newline at end of file diff --git a/utils/preload.py b/utils/preload.py index 77487cd..43fe057 100644 --- a/utils/preload.py +++ b/utils/preload.py @@ -3,16 +3,18 @@ import arcade.gui, arcade button_texture = arcade.gui.NinePatchTexture(64 // 4, 64 // 4, 64 // 4, 64 // 4, arcade.load_texture("assets/graphics/button.png")) button_hovered_texture = arcade.gui.NinePatchTexture(64 // 4, 64 // 4, 64 // 4, 64 // 4, arcade.load_texture("assets/graphics/button_hovered.png")) -vertical_connected = arcade.load_texture("assets/graphics/connected_lines/line/vertical.png") -horizontal_connected = arcade.load_texture("assets/graphics/connected_lines/line/horizontal.png") -left_bottom_connected = arcade.load_texture("assets/graphics/connected_lines/corner/left_bottom.png") -left_top_connected = arcade.load_texture("assets/graphics/connected_lines/corner/left_top.png") -right_bottom_connected = arcade.load_texture("assets/graphics/connected_lines/corner/right_bottom.png") -right_top_connected = arcade.load_texture("assets/graphics/connected_lines/corner/right_top.png") +vertical_powered = arcade.load_texture("assets/graphics/powered_lines/line/vertical.png") +horizontal_powered = arcade.load_texture("assets/graphics/powered_lines/line/horizontal.png") +left_bottom_powered = arcade.load_texture("assets/graphics/powered_lines/corner/left_bottom.png") +left_top_powered = arcade.load_texture("assets/graphics/powered_lines/corner/left_top.png") +right_bottom_powered = arcade.load_texture("assets/graphics/powered_lines/corner/right_bottom.png") +right_top_powered = arcade.load_texture("assets/graphics/powered_lines/corner/right_top.png") -vertical_unconnected = arcade.load_texture("assets/graphics/unconnected_lines/line/vertical.png") -horizontal_unconnected = arcade.load_texture("assets/graphics/unconnected_lines/line/horizontal.png") -left_bottom_unconnected = arcade.load_texture("assets/graphics/unconnected_lines/corner/left_bottom.png") -left_top_unconnected = arcade.load_texture("assets/graphics/unconnected_lines/corner/left_top.png") -right_bottom_unconnected = arcade.load_texture("assets/graphics/unconnected_lines/corner/right_bottom.png") -right_top_unconnected = arcade.load_texture("assets/graphics/unconnected_lines/corner/right_top.png") \ No newline at end of file +vertical_unpowered = arcade.load_texture("assets/graphics/unpowered_lines/line/vertical.png") +horizontal_unpowered = arcade.load_texture("assets/graphics/unpowered_lines/line/horizontal.png") +left_bottom_unpowered = arcade.load_texture("assets/graphics/unpowered_lines/corner/left_bottom.png") +left_top_unpowered = arcade.load_texture("assets/graphics/unpowered_lines/corner/left_top.png") +right_bottom_unpowered = arcade.load_texture("assets/graphics/unpowered_lines/corner/right_bottom.png") +right_top_unpowered = arcade.load_texture("assets/graphics/unpowered_lines/corner/right_top.png") + +power_source = arcade.load_texture("assets/graphics/power_source.png")