def lay_canvas_instructions(self): if self._no_ripple_effect: return with self.canvas.after: if hasattr(self, "radius"): self._round_rad = self.radius StencilPush(group="rectangular_ripple_behavior") RoundedRectangle( pos=self.pos, size=self.size, radius=self._round_rad, group="rectangular_ripple_behavior", ) StencilUse(group="rectangular_ripple_behavior") self.col_instruction = Color(rgba=self.ripple_color, group="rectangular_ripple_behavior") self.ellipse = Ellipse( size=(self._ripple_rad, self._ripple_rad), pos=( self.ripple_pos[0] - self._ripple_rad / 2.0, self.ripple_pos[1] - self._ripple_rad / 2.0, ), group="rectangular_ripple_behavior", ) StencilUnUse(group="rectangular_ripple_behavior") RoundedRectangle( pos=self.pos, size=self.size, radius=self._round_rad, group="rectangular_ripple_behavior", ) StencilPop(group="rectangular_ripple_behavior") self.bind(ripple_color=self._set_color, _ripple_rad=self._set_ellipse)
def __init__(self, squarepos, squwid, squhei, **kwargs): super(PopUpBox, self).__init__(**kwargs) self.size = (Map.mapvar.squsize * squwid, Map.mapvar.squsize * squhei) self.pos = (squarepos[0] + 3 * __main__.app.root.squsize, squarepos[1] + __main__.app.root.squsize - __main__.app.root.squsize * squhei / 2) self.do_resize = False self.do_rotation = False Player.player.tbbox = self if self.right > __main__.app.root.scrwid - __main__.app.root.squsize * 2: self.set_right(squarepos[0]) if self.top > __main__.app.root.playhei: self.top = __main__.app.root.playhei if self.y < 5: self.y = 5 self.layout = GridLayout(size_hint=(None, None), size=Player.player.tbbox.size, pos=(0, 0), cols=2, spacing=4, padding=5) with self.canvas.before: Color(.4, .4, .4, 1) self.rect = RoundedRectangle(pos=(0, 0), size=self.size) Player.player.layout = self.layout self.add_widget(self.layout) self.enableList = [] self.upgradeAll = False # print Player.player.layout.size, Player.player.layout.pos, Player.player.tbbox.size, Player.player.tbbox.pos Map.mapvar.background.popUpOpen = self Map.mapvar.popupcontainer.add_widget(self) self.type = None
def adjust_size(self, *args): (par_x, par_y) = self.parent.size if par_x == 0 or par_y == 0: with self.canvas: self.canvas.clear() return par_scale = par_x / par_y (img_x, img_y) = self.image.texture.size img_scale = img_x / img_y if par_scale > img_scale: (img_x_new, img_y_new) = (img_x, img_x / par_scale) else: (img_x_new, img_y_new) = (img_y * par_scale, img_y) crop_pos_x = (img_x - img_x_new) / 2 crop_pos_y = (img_y - img_y_new) / 2 subtexture = self.image.texture.get_region( crop_pos_x, crop_pos_y, img_x_new, img_y_new ) with self.canvas: self.canvas.clear() Color(1, 1, 1) RoundedRectangle(texture=subtexture, pos=self.pos, size=(par_x, par_y), radius=self.radius)
def on_size(self, *kwargs): self.canvas.before.clear() with self.canvas.before: Color(1, 1, 1, 1) RoundedRectangle(pos=self.pos, size=self.size, radius=[ 10, ])
def lay_canvas_instructions(self): with self.canvas.after: StencilPush() RoundedRectangle(size=self.size, pos=self.pos, radius=[self._radius]) StencilUse() self.col_instruction = Color(rgba=self.ripple_color) self.ellipse = Ellipse( size=(self.ripple_rad, self.ripple_rad), pos=( self.ripple_pos[0] - self.ripple_rad / 2.0, self.ripple_pos[1] - self.ripple_rad / 2.0, ), ) StencilUnUse() RoundedRectangle(size=self.size, pos=self.pos, radius=[self._radius]) StencilPop() self.bind(ripple_color=self._set_color, ripple_rad=self._set_ellipse)
def __init__(self, **kwargs): super(TrafficWidget, self).__init__(**kwargs) self.gdm_service = GDMService() logger.info("Initialized TrafficWidget") with self.canvas: Color(0.15, 0.15, 0.15, .4, mode='rgba') RoundedRectangle(pos=(-25, -25), size=(270, 140), radius=[(5, 5), (5, 5), (5, 5), (5, 5)])
def __init__(self, **kwargs): super(SimulationWidget, self).__init__(**kwargs) self.nest_radius = 3 self.old_window_size_x = 0 self.old_window_size_y = 0 self.cells = [[0 for y in range(HEIGHT)] for x in range(WIDTH + 1)] x, y = Window.size self.spacing_x = x / WIDTH self.spacing_y = y / HEIGHT self.meter_width = x / 2 self.meter_bar = InstructionGroup() self.meter_bar.add(Color(1, 1, 1)) self.meter_bar.add( RoundedRectangle(pos=[ x / 2 - self.meter_width / 2, y - self.meter_height * 0.9 ], size=[self.meter_width, self.meter_height / 3])) self.meter_indicator.source = os.path.join(ROOT_PATH, "indicator.png") self.meter_backdrop.source = os.path.join(ROOT_PATH, "indicator_backdrop.png") self.meter_backdrop.pos = [ x / 2 - self.meter_backdrop.size[0] / 2, y - self.meter_height * 1.2 ] self.meter_indicator.pos = [ x / 2 - self.meter_indicator.size[0] / 2, y - self.meter_height * 1.2 ] self.meter_backdrop.size = [self.meter_height, self.meter_height] self.meter_indicator.size = [self.meter_height, self.meter_height] self.meter_backdrop.color = interpolate_color(self.p1_color, self.p2_color, 0.5) self.sides = InstructionGroup() self.sides.add(Color(rgb=self.p1_color)) self.sides.add(Rectangle(pos=[0, 0], size=[self.bar_width, y])) self.sides.add(Color(rgb=self.p2_color)) self.sides.add( Rectangle(pos=[x - self.bar_width, 0], size=[self.bar_width, y])) x = 0 y = -1 count = 0 for i in range(0, len(WORLD_DATA), INTS_PER_FIELD): x = (i - (count * INTS_PER_FIELD) + count) % WIDTH count += 1 if x % WIDTH == 0: y += 1 y_inverted = HEIGHT - y - 1 g = InstructionGroup() g.add(Color(0, 0, 0, 1)) # black g.add( Rectangle(pos=(x * self.spacing_x, y_inverted * self.spacing_y), size=(self.spacing_x, self.spacing_y))) self.ids["grid_layout"].canvas.add(g) self.cells[x][y_inverted] = g self.ids["grid_layout"].canvas.add(self.sides) self.ids["grid_layout"].canvas.add(self.meter_bar)
def set_background(self, color): # self.canvas.before.clear() with self.canvas.before: Color(*color) self.rect = RoundedRectangle(pos=(self.pos[0] + sp(40), self.pos[1]), size=(self.size[0] - sp(80), self.size[1]), radius=[20])
def __init__(self, **kwargs): super(RoundedWidget, self).__init__(**kwargs) self.background_color = (1, 1, 1, 0) if kwargs.has_key('background_color'): background_color = kwargs['background_color'] else: background_color = (1, 1, 1, 0) with self.canvas.before: Color(rgba=background_color) self.rect = RoundedRectangle(pos=self.pos, size=self.size, radius=[20, ]) self.bind(pos=self.update_rect, size=self.update_rect)
def __init__(self, **kwargs): super(NewsWidget, self).__init__(**kwargs) self.rss_service = RSSService() logger.info("Initialized NewsWidget") with self.canvas: Color(0.15, 0.15, 0.15, .4, mode='rgba') RoundedRectangle(pos=(0, -200), size=(760, 300), radius=[(5, 5), (5, 5), (5, 5), (5, 5)]) Color(1, 1, 1, .2, mode='rgba') Line(points=[15, 0, 745, 0]) Line(points=[15, -100, 745, -100])
def __init__(self, **kwargs): super(WeatherWidget, self).__init__(**kwargs) self.met_service = METService() logger.info("Initialized WeatherWidget") with self.canvas: Color(0.15, 0.15, 0.15, .4, mode='rgba') RoundedRectangle(pos=(-25, -25), size=(985, 240), radius=[(5, 5), (5, 5), (5, 5), (5, 5)]) Color(1, 1, 1, .2, mode='rgba') Line(points=[220, 190, 220, 0]) Line(points=[470, 190, 470, 0]) Line(points=[720, 190, 720, 0])
def set_progress_round(self, interval: Union[int, float]) -> NoReturn: with self.canvas.after: self._instance_progress_inner_circle_color = Color(rgba=(0, 0, 0, 0)) self._instance_progress_inner_circle_ellipse = Ellipse( size=self.get_progress_round_size(), pos=self.get_progress_round_pos(), ) self.bind( pos=self.update_progress_inner_circle_ellipse, size=self.update_progress_inner_circle_ellipse, ) # FIXME: Radius value is not displayed. self._instance_overlay_color = Color(rgba=(0, 0, 0, 0)) self._instance_overlay_rounded_rec = RoundedRectangle( size=self.size, pos=self.pos, radius=self.instance_item.radius if hasattr( self.instance_item, "radius") else [ 0, ], ) self.bind( pos=self.update_overlay_rounded_rec, size=self.update_overlay_rounded_rec, ) self._instance_progress_inner_outer_color = Color(rgba=(0, 0, 0, 0)) self._instance_progress_inner_outer_line = SmoothLine( width=dp(4), circle=[ self.center_x, self.center_y, self.progress_round_size * 0.58, 0, 0, ], )
def getUpgradeButtons(self): if Player.player.towerSelected.level != Player.player.upgPathSelectLvl and Player.player.towerSelected.type != 'Wind': layout = StandardUpgradeLayout() instance = Localdefs.towerabilitylist[1] layout.ids.upgradebutton.instance = instance Player.player.tbbox.enableList.append(layout.ids.upgradebutton) layout.ids.upgradebutton.ids.label.font_size = __main__.app.root.scrwid * .013 layout.ids.upgradebutton.ids.label.halign = 'right' cost = Player.player.towerSelected.upgradeDict['Cost'][ Player.player.towerSelected.level] layout.ids.upgradebutton.instance.cost = cost if cost > Player.player.money: layout.ids.upgradebutton.disabled = True layout.ids.upgradebutton.ids.label.text = 'Upgrade: $' + str(cost) layout.ids.upgradebutton.ids.image.source = instance.imgstr elif Player.player.towerSelected.type == 'Wind': Player.player.tbbox.size = (Player.player.tbbox.width, Player.player.tbbox.height * 1.25) Player.player.layout.size = Player.player.tbbox.size with Player.player.tbbox.canvas.before: Color(.4, .4, .4, 1) RoundedRectangle(pos=(0, 0), size=Player.player.tbbox.size) self.ids.towerinfo.size_hint = (1, .5) if Player.player.towerSelected.level != Player.player.upgPathSelectLvl: layout = WindStandardLayout() instance = Localdefs.towerabilitylist[1] layout.ids.upgradebutton.instance = instance Player.player.tbbox.enableList.append(layout.ids.upgradebutton) layout.ids.upgradebutton.ids.label.font_size = __main__.app.root.scrwid * .013 layout.ids.upgradebutton.ids.label.halign = 'right' cost = Player.player.towerSelected.upgradeDict['Cost'][ Player.player.towerSelected.level] layout.ids.upgradebutton.instance.cost = cost if cost > Player.player.money: layout.ids.upgradebutton.disabled = True layout.ids.upgradebutton.ids.label.text = 'Upgrade: $' + str( cost) layout.ids.upgradebutton.ids.image.source = instance.imgstr layout.ids.rotatebutton.instance = Localdefs.towerabilitylist[ 2] layout.ids.rotatebutton.ids.image.source = "iconimgs/Rotate.png" layout.ids.rotatebutton.ids.label.text = "Rotate Group" else: layout = WindPathUpgradeLayout() layout.ids.LeaderPath.instance = Localdefs.towerabilitylist[1] cost = Player.player.towerSelected.upgradeDict['Cost'][ Player.player.towerSelected.level] layout.ids.LeaderPath.id = 'LeaderPath' layout.ids.LeaderPath.instance.cost = cost layout.ids.LeaderPath.ids.label.text = 'Leader Path $' + str( cost[0]) + " + " + str(cost[1]) + " Gems" layout.ids.LeaderPath.ids.image.source = "towerimgs/crown.png" Player.player.tbbox.enableList.append(layout.ids.LeaderPath) layout.ids.Damage.instance = Localdefs.towerabilitylist[1] layout.ids.Damage.instance.cost = cost layout.ids.Damage.ids.label.text = 'Damage Path $' + str( cost[0]) + " + " + str(cost[1]) + " Gems" layout.ids.Damage.ids.image.source = "towerimgs/Wind/icon.png" Player.player.tbbox.enableList.append(layout.ids.Damage) layout.ids.rotatebutton.instance = Localdefs.towerabilitylist[ 2] layout.ids.rotatebutton.ids.image.source = "iconimgs/Rotate.png" layout.ids.rotatebutton.ids.label.text = "Rotate Group" if cost[0] > Player.player.money or cost[ 1] > Player.player.gems: layout.ids.Damage.disabled = True layout.ids.LeaderPath.disabled = True else: layout = PathUpgradeLayout() layout.ids.LeaderPath.instance = Localdefs.towerabilitylist[1] cost = Player.player.towerSelected.upgradeDict['Cost'][ Player.player.towerSelected.level] layout.ids.LeaderPath.instance.cost = cost layout.ids.LeaderPath.id = 'LeaderPath' layout.ids.LeaderPath.ids.label.text = 'Leader Path $' + str( cost[0]) + " + " + str(cost[1]) + " Gems" layout.ids.LeaderPath.ids.image.source = "towerimgs/crown.png" Player.player.tbbox.enableList.append(layout.ids.LeaderPath) layout.ids.Damage.instance = Localdefs.towerabilitylist[1] layout.ids.Damage.instance.cost = cost layout.ids.Damage.ids.label.text = 'Damage Path $' + str( cost[0]) + " + " + str(cost[1]) + " Gems" layout.ids.Damage.ids.image.source = os.path.join( "towerimgs", Player.player.towerSelected.type, "icon.png") Player.player.tbbox.enableList.append(layout.ids.Damage) if cost[0] > Player.player.money or cost[1] > Player.player.gems: layout.ids.Damage.disabled = True layout.ids.LeaderPath.disabled = True return layout
def __init__(self, **kwargs): super().__init__(**kwargs) self.current_i = 0 self.score = 0 self.added_score = 0 self.current_score = 0 self.right_answer = False self.pop_up_1 = PopUpWindow() # sound: self.sound_background = SoundLoader.load( "src/game/sound/word/start_action.wav") self.sound_hit = SoundLoader.load("src/game/sound/effects/beep.ogg") self.sound_pop_1 = SoundLoader.load("src/game/sound/effects/pop_1.wav") self.sound_background.play() Clock.schedule_interval(self.update_score, 0) self.bg = AsyncImage(source='game/images/background/loading.gif', anim_delay=0.01, pos=(400, 400)) with self.canvas: Color(0.1, 0.4, 0.2, .7, mode="rgb") self.selected_1 = RoundedRectangle(size=(0, 0)) Color(0.2, 0.1, 0.4, .7, mode="rgb") self.selected_2 = RoundedRectangle(size=(0, 0)) Color(0, 0, 0, 0, mode="rgba") self.temp_label_rec = Rectangle() self.score_text = Label(pos=(Window.width - 230, Window.height - 100), text=fix_text(str(self.score)), font_name="src/game/font/Far_Fanni", font_size=dp("8"), halign='left', color=[0, 0, 1, 1]) Color(0.2, 0.5, 0.2, 1, mode="rgba") self.answer_connection_line = Line(width=2) self.score_label = Label(pos=(Window.width - 150, Window.height - 100), text=fix_text("امتیاز : "), font_name="src/game/font/Far_Fanni", font_size=dp("8"), halign='left', color=[0, 0, 1, 1]) self.answer_result_line_1 = Label( pos=(50, Window.height - 100), text=fix_text(""), font_name="src/game/font/Far_Fanni", font_size=dp("12"), halign='left', opacity=0, color=[0, 0, 1, 1]) self.answer_result_line_2 = Label( pos=(50, Window.height - 130), font_name="src/game/font/Far_Fanni", font_size=dp("12"), halign='left', opacity=1, color=[0, 0, 1, 1]) self.answer_result_line_3 = Label( pos=(50, Window.height - 160), font_name="src/game/font/Far_Fanni", font_size=dp("12"), halign='left', opacity=1, color=[0, 0, 1, 1]) Color(0.2, 0.1, 0.4, 1, mode="rgba") self.score_line = Line(rectangle=(0, Window.height - 100, Window.width, Window.height), ) self.labels = [ Label(pos=(-500, 0), font_name="src/game/font/Far_Fanni", font_size=dp("18"), color=[0, 0.3, 0, 1]) for i in range(100, 500, 50) ] self.available_answer_box = 3 self.available_answer_box_runs = True self.selected_word = None self._move_word = None self._move_word_direction_x = 5 self._move_word_direction_y = 3 self.selected_word_1 = self.labels[0] self.selected_word_2 = self.labels[1] for i in self.labels: i.size = self.label_size(i) Window.clearcolor = (.9, 1, 1, 1) self.selected_1_is_selected = False self.selected_2_is_selected = False self.selected_1_new_pos = None self.selected_2_new_pos = None self.init_labels()