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)
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