Exemplo n.º 1
0
 def InterpolateOpacity(self,Start,End,Tile1,Tile2):
     start = self.getTile(Start).center
     end = self.getTile(End).center
     point = self.getTile(Tile1).center
     d1 = HexMath.distancefromLine(start[0],start[1],end[0],end[1], point[0], point[1])
     point = self.getTile(Tile2).center
     d2 = HexMath.distancefromLine(start[0],start[1],end[0],end[1], point[0], point[1])
     d1 = round((d1/float((d1+d2))),2) #percentage distance for d1
     d2 = round(1.0 - d1,2) # precentage distance for d2
     #weight view difficulty
     return round((self.getTile(Tile1).opacity * d1 + self.getTile(Tile2).opacity * d2),2)
Exemplo n.º 2
0
 def getFov(self,Pos,Range):
     #rather slow lot of overhead,needs to work with 120 tiles
     List = self.getTilesbyDistance(Pos,Range,minDistance=1)
     
     for element in List:
         rtrOpacity = 0
         intersected = self.intersectingline(self.getTile(Pos),self.getTile(element))
         for tile in intersected:
             if tile[0] == 1: #line did just intercept one tile so add seeing difficulty
                 rtrOpacity += self.getTile(tile[1]).opacity
             else: #two hexes intercepted, calculate mean difficulty weighted by distance
                 start = self.getTile(Pos).center
                 end = self.getTile(element).center
                 point = self.getTile(tile[1]).center
                 d1 = HexMath.distancefromLine(start[0],start[1],end[0],end[1], point[0], point[1])
                 point = self.getTile(tile[2]).center
                 d2 = HexMath.distancefromLine(start[0],start[1],end[0],end[1], point[0], point[1])
                 d1 = round((d1/float((d1+d2))),2) #percentage distance for d1
                 d2 = round(1.0 - d1,2) # precentage distance for d2
                 #weight view difficulty
                 opacity = round((self.getTile(tile[1]).opacity * d1 + self.getTile(tile[2]).opacity * d2),2)
                 rtrOpacity += opacity