Exemplo n.º 1
0
    def draw(self):
        # draw filled box
        egi.set_pen_color(self.color)
        egi.closed_shape(self._pts, filled=True)

        # draw box border
        if cfg['BOXLINES_ON']:
            egi.set_pen_color((.7, .7, .7, 1))
            egi.closed_shape(self._pts, filled=False)

        if self.kind == 'I':
            egi.set_stroke(1)
            egi.set_pen_color(name="RED")
            egi.line(self._pts[0].x + 10, self._pts[0].y - 5,
                     self._pts[0].x + 10, self._pts[0].y - 16)
            egi.line(self._pts[0].x + 5, self._pts[0].y - 11,
                     self._pts[0].x + 16, self._pts[0].y - 11)

        if self.kind == 'P':
            obj_pts = (
                Point2D(self._pts[0].x + 5, self._pts[0].y - 5),  # top left
                Point2D(self._pts[0].x + 15, self._pts[0].y - 4),  # top right
                Point2D(self._pts[0].x + 15,
                        self._pts[0].y - 15),  # bottom right
                Point2D(self._pts[0].x + 5, self._pts[0].y - 15)  # bottom left
            )
            egi.set_stroke(1)
            egi.set_pen_color(name="RED")
            egi.closed_shape(obj_pts, filled=False)

        # centre circle
        if cfg['CENTER_ON']:
            egi.set_pen_color((.3, .3, 1, 1))
            egi.circle(self._vc, 5)
        # box position (simple column,row) (or x,y actually)
        if self.node:
            if cfg['LABELS_ON']:
                if not self.idx_label:
                    info = "%d" % self.idx
                    self.idx_label = pyglet.text.Label(info,
                                                       color=(0, 0, 0, 255),
                                                       anchor_x="center",
                                                       anchor_y="top")
                    info = "(%d,%d)" % (self.pos[0], self.pos[1])
                    self.pos_label = pyglet.text.Label(info,
                                                       color=(0, 0, 0, 255),
                                                       anchor_x="center",
                                                       anchor_y="bottom")
                    self._reposition_labels()
                self.idx_label.draw()
                #self.pos_label.draw()
        if self.marker:
            if not self.marker_label or self.marker_label.text != self.marker:
                self.marker_label = pyglet.text.Label(self.marker,
                                                      color=(255, 0, 0, 255),
                                                      bold=True,
                                                      anchor_x="center",
                                                      anchor_y="center")
                self._reposition_labels()
            self.marker_label.draw()
Exemplo n.º 2
0
    def drawWaves(self):
        egi.green_pen()
        seed = self.world._clock * 2

        water = self.water
        egi.set_stroke(2)

        egi.set_pen_color(color=rgba(water[0], 0.5))
        egi.unclosed_shape(
            self.createWave(seed=seed,
                            amplitude=7,
                            width=self.size.width,
                            start=Vector2D(self.box.left, self.box.top + 10)))

        egi.set_pen_color(color=rgba(water[1], 0.5))
        self.mainWave = self.createWave(seed=seed / 2,
                                        amplitude=3,
                                        width=self.size.width,
                                        start=Vector2D(self.box.left,
                                                       self.box.top + 0))
        egi.unclosed_shape(self.mainWave)

        egi.set_pen_color(color=rgba(water[2], 0.5))
        egi.unclosed_shape(
            self.createWave(seed=seed / 3,
                            amplitude=10,
                            width=self.size.width,
                            start=Vector2D(self.box.left, self.box.top + 0)))
Exemplo n.º 3
0
    def draw_paths(self):
        if self.path:
            # copied from the box_world

            egi.set_stroke(2)
            # Show open edges
            route = self.path.route
            egi.set_pen_color(name='GREEN')
            for i in self.path.open:
                egi.circle(self.world.boxes[i]._vc, 10)
            # show the partial paths considered
            egi.set_pen_color(name='ORANGE')
            egi.set_stroke(2)
            for i, j in route.items():
                egi.line_by_pos(self.world.boxes[i]._vc,
                                self.world.boxes[j]._vc)
            egi.set_stroke(1)

            # show the final path delivered
            egi.set_pen_color(name='RED')
            egi.set_stroke(2)
            path = self.path.path
            for i in range(1, len(path)):
                egi.line_by_pos(self.world.boxes[path[i - 1]]._vc,
                                self.world.boxes[path[i]]._vc)
            egi.set_stroke(1)
Exemplo n.º 4
0
	def render(self):
		
		self.drawWaves()
		self.drawWalls()
		
		egi.set_stroke(1)

		if(self.world.drawDebug):
			for wall in self.walls:
				egi.line_by_pos(wall.center, wall.center + wall.normal * 100)
Exemplo n.º 5
0
 def draw(self):
     if self.mode == "Agent":
         if self.fsm:
             self.fsm.update()
             self.fsm.draw()
         egi.blue_pen()
     else:
         egi.red_pen()
     egi.set_stroke(4)
     egi.circle(Point2D(self.my_x, self.my_y), 10)
Exemplo n.º 6
0
	def render(self):
		
		egi.set_stroke(1)

		self.super.render()

		if(self.chosenOne and self.world.drawDebug):
			egi.grey_pen()
			egi.text_at_pos(self.pos.x, self.pos.y, str(self.sickness))
			egi.text_at_pos(self.world.width - 100, self.world.height - 30, str(self._state))
Exemplo n.º 7
0
    def render(self):

        self.drawWaves()
        self.drawWalls()

        egi.set_stroke(1)

        if (self.world.drawDebug):
            for wall in self.walls:
                egi.line_by_pos(wall.center, wall.center + wall.normal * 100)
Exemplo n.º 8
0
    def drawWalls(self):

        tank = '0e59cb'
        egi.set_pen_color(color=rgba(tank, 0.6))
        egi.set_stroke(2)

        self.tankShape[0].y = self.mainWave[0].y
        self.tankShape[-1].y = self.mainWave[-1].y

        egi.unclosed_shape(self.tankShape)
Exemplo n.º 9
0
    def render(self):

        egi.set_stroke(1)

        self.super.render()

        if (self.chosenOne and self.world.drawDebug):
            egi.grey_pen()
            egi.text_at_pos(self.pos.x, self.pos.y, str(self.sickness))
            egi.text_at_pos(self.world.width - 100, self.world.height - 30,
                            str(self._state))
Exemplo n.º 10
0
	def drawWalls(self):



		tank = '0e59cb'
		egi.set_pen_color(color=rgba(tank, 0.6))
		egi.set_stroke(2)

		self.tankShape[0].y = self.mainWave[0].y
		self.tankShape[-1].y = self.mainWave[-1].y

		egi.unclosed_shape(self.tankShape)
Exemplo n.º 11
0
	def drawWaves(self):
		egi.green_pen()
		seed = self.world._clock * 2

		water = self.water
		egi.set_stroke(2)

		egi.set_pen_color(color=rgba(water[0], 0.5))
		egi.unclosed_shape(self.createWave(seed= seed, amplitude = 7, width = self.size.width, start = Vector2D(self.box.left, self.box.top + 10) ))
		
		egi.set_pen_color(color=rgba(water[1], 0.5))
		self.mainWave = self.createWave(seed= seed/2, amplitude = 3, width = self.size.width, start = Vector2D(self.box.left, self.box.top + 0) )
		egi.unclosed_shape(self.mainWave)
		
		
		egi.set_pen_color(color=rgba(water[2], 0.5))
		egi.unclosed_shape(self.createWave(seed= seed/3, amplitude = 10, width = self.size.width, start = Vector2D(self.box.left, self.box.top + 0) ))
Exemplo n.º 12
0
    def draw(self, agent_pos):
        for box in self.boxes:
            box.draw()

        if cfg['EDGES_ON']:
            egi.set_pen_color(name='LIGHT_BLUE')
            for node, edges in self.graph.edgelist.items():
                # print node, edges
                for dest in edges:
                    egi.line_by_pos(self.boxes[node]._vc, self.boxes[dest]._vc)

        if self.path:
            # put a circle in the visited boxes?
            if cfg['BOXUSED_ON']:
                egi.set_pen_color(name="GREEN")
                for i in self.path.closed:
                    egi.circle(self.boxes[i]._vc, 10)

            if cfg['TREE_ON']:
                egi.set_stroke(3)
                # Show open edges
                route = self.path.route
                egi.set_pen_color(name='GREEN')
                for i in self.path.open_nodes:
                    egi.circle(self.boxes[i]._vc, 10)
                # show the partial paths considered
                egi.set_pen_color(name='ORANGE')
                for i, j in route.items():
                    egi.line_by_pos(self.boxes[i]._vc, self.boxes[j]._vc)
                egi.set_stroke(1)

            if cfg['PATH_ON']:
                # show the final path delivered
                egi.set_pen_color(name='RED')
                egi.set_stroke(2)
                path = self.path.path
                for i in range(1, len(path)):
                    egi.line_by_pos(self.boxes[path[i - 1]]._vc,
                                    self.boxes[path[i]]._vc)
                egi.set_stroke(1)

            if agent_pos:
                egi.set_stroke(4)
                egi.set_pen_color(name="BLUE")
                egi.circle(agent_pos, 10)
Exemplo n.º 13
0
    def draw(self):
        for box in self.boxes:
            box.draw()

        if cfg['EDGES_ON']:
            egi.set_pen_color(name='LIGHT_BLUE')
            for node, edges in self.graph.edgelist.items():
                # print node, edges
                for dest in edges:
                    egi.line_by_pos(self.boxes[node]._vc, self.boxes[dest]._vc)

        if self.path:
            # put a circle in the visited boxes?
            if cfg['BOXUSED_ON']:
                egi.set_pen_color(name="GREEN")
                for i in self.path.closed:
                    egi.circle(self.boxes[i]._vc, 10)

            if cfg['TREE_ON']:
                egi.set_stroke(3)
                # Show open edges
                route = self.path.route
                egi.set_pen_color(name='GREEN')
                for i in self.path.open:
                    egi.circle(self.boxes[i]._vc, 10)
                # show the partial paths considered
                egi.set_pen_color(name='ORANGE')
                for i,j in route.items():
                    egi.line_by_pos(self.boxes[i]._vc, self.boxes[j]._vc)
                egi.set_stroke(1)

            if cfg['PATH_ON']:
                # show the final path delivered
                egi.set_pen_color(name='RED')
                egi.set_stroke(2)
                path = self.path.path
                for i in range(1,len(path)):
                    egi.line_by_pos(self.boxes[path[i-1]]._vc, self.boxes[path[i]]._vc)
                egi.set_stroke(1)

            if(self.follower):
                egi.set_pen_color(name='GREEN')
                egi.set_stroke(5)
                egi.circle(self.follower, 15)
Exemplo n.º 14
0
    def draw(self):
        for box in self.boxes:
            box.draw()

        if cfg['EDGES_ON']:
            egi.set_pen_color(name='LIGHT_BLUE')
            for node, edges in self.graph.edgelist.items():
                # print node, edges
                for dest in edges:
                    egi.line_by_pos(self.boxes[node]._vc, self.boxes[dest]._vc)



        if self.path:

            if not self.agent:
                path_pts = []
                for i in range(0,len(self.path.path)):
                    path_pts.append(PointToVector2D(self.boxes[self.path.path[i]]._vc))

                self.agent = Agent()
                self.agent.path.set_pts(path_pts)

            self.agent.update()
            self.agent.render()

            # put a circle in the visited boxes?
            if cfg['BOXUSED_ON']:
                egi.set_pen_color(name="GREEN")
                for i in self.path.closed:
                    egi.circle(self.boxes[i]._vc, 10)

            if cfg['TREE_ON']:
                egi.set_stroke(3)
                # Show open edges
                route = self.path.route
                egi.set_pen_color(name='GREEN')
                for i in self.path.open:
                    egi.circle(self.boxes[i]._vc, 10)
                # show the partial paths considered
                egi.set_pen_color(name='ORANGE')
                for i,j in route.items():
                    egi.line_by_pos(self.boxes[i]._vc, self.boxes[j]._vc)
                egi.set_stroke(1)

            if cfg['PATH_ON']:
                # show the final path delivered
                egi.set_pen_color(name='RED')
                egi.set_stroke(2)
                path = self.path.path
                for i in range(1,len(path)):
                    egi.line_by_pos(self.boxes[path[i-1]]._vc, self.boxes[path[i]]._vc)
                egi.set_stroke(1)
Exemplo n.º 15
0
 def draw(self):
     if self.projectile:
         egi.green_pen()
         egi.set_stroke(10)
         egi.circle(self.projectile, 3)
Exemplo n.º 16
0
 def render(self):
     egi.white_pen()
     egi.set_stroke(3)
     egi.circle(self.pos, self.radius)
Exemplo n.º 17
0
 def render(self):
     egi.green_pen()
     egi.set_stroke(2)
     egi.circle(self.pos, self.radius, True)
Exemplo n.º 18
0
 def render(self):
     egi.white_pen()
     egi.set_stroke(3)
     egi.circle(self.pos, self.radius)
Exemplo n.º 19
0
 def render(self):
     egi.green_pen()
     egi.set_stroke(2)
     egi.circle(self.pos, self.radius, True)
Exemplo n.º 20
0
	def beforeUpdate(self):
		egi.set_stroke(1) # we want our debug info to be 1px