OSDN Git Service

視界の範囲が円範囲でなく矩形になっている不具合を修正。 / Fix square sight to round.
authorDeskull <desull@users.sourceforge.jp>
Wed, 14 Jan 2015 11:29:52 +0000 (20:29 +0900)
committerDeskull <desull@users.sourceforge.jp>
Wed, 14 Jan 2015 11:29:52 +0000 (20:29 +0900)
Deeangband/Field.cpp

index 9b348de..7fde6a2 100644 (file)
@@ -35,6 +35,8 @@ namespace Deeangband
                        }
                }
 
+               this->UpdateSight();
+
                this->createRectRoom(13, 13, 20, 33);
 
                creatures.resize(0);
@@ -275,6 +277,7 @@ namespace Deeangband
                                                                int lsy = lineIt->GetY() - baseY + size;
                                                                coordVec[lsy * sideWidth + lsx] = true;
                                                                if(!this->GetSquare(lineIt->GetX(), lineIt->GetY()) || this->GetSquare(lineIt->GetX(), lineIt->GetY())->IsWall()) break;
+                                                               if(Coordinates::Distance(baseX, baseY, lineIt->GetX(), lineIt->GetY()) > s) break;
                                                        }
                                                }
                                                else
@@ -285,6 +288,7 @@ namespace Deeangband
                                                                int lsy = lineRIt->GetY() - baseY + size;
                                                                coordVec[lsy * sideWidth + lsx] = true;
                                                                if(!this->GetSquare(lineRIt->GetX(), lineRIt->GetY()) || this->GetSquare(lineRIt->GetX(), lineRIt->GetY())->IsWall()) break;
+                                                               if(Coordinates::Distance(baseX, baseY, lineRIt->GetX(), lineRIt->GetY()) > s) break;
                                                        }
                                                }
                                        }
@@ -305,6 +309,7 @@ namespace Deeangband
                                                                int lsy = lineIt->GetY() - baseY + size;
                                                                coordVec[lsy * sideWidth + lsx] = true;
                                                                if(!this->GetSquare(lineIt->GetX(), lineIt->GetY()) || this->GetSquare(lineIt->GetX(), lineIt->GetY())->IsWall()) break;
+                                                               if(Coordinates::Distance(baseX, baseY, lineIt->GetX(), lineIt->GetY()) > s) break;
                                                        }
                                                }
                                                else
@@ -315,6 +320,7 @@ namespace Deeangband
                                                                int lsy = lineRIt->GetY() - baseY + size;
                                                                coordVec[lsy * sideWidth + lsx] = true;
                                                                if(!this->GetSquare(lineRIt->GetX(), lineRIt->GetY()) || this->GetSquare(lineRIt->GetX(), lineRIt->GetY())->IsWall()) break;
+                                                               if(Coordinates::Distance(baseX, baseY, lineRIt->GetX(), lineRIt->GetY()) > s) break;
                                                        }
                                                }
                                        }
@@ -343,6 +349,7 @@ namespace Deeangband
                                                                int lsy = lineIt->GetY() - baseY + size;
                                                                coordVec[lsy * sideWidth + lsx] = true;
                                                                if(!this->GetSquare(lineIt->GetX(), lineIt->GetY()) || this->GetSquare(lineIt->GetX(), lineIt->GetY())->IsWall()) break;
+                                                               if(Coordinates::Distance(baseX, baseY, lineIt->GetX(), lineIt->GetY()) > s) break;
                                                        }
                                                }
                                                else
@@ -353,6 +360,7 @@ namespace Deeangband
                                                                int lsy = lineRIt->GetY() - baseY + size;
                                                                coordVec[lsy * sideWidth + lsx] = true;
                                                                if(!this->GetSquare(lineRIt->GetX(), lineRIt->GetY()) || this->GetSquare(lineRIt->GetX(), lineRIt->GetY())->IsWall()) break;
+                                                               if(Coordinates::Distance(baseX, baseY, lineRIt->GetX(), lineRIt->GetY()) > s) break;
                                                        }       
                                                }
                                        }
@@ -373,6 +381,7 @@ namespace Deeangband
                                                                int lsy = lineIt->GetY() - baseY + size;
                                                                coordVec[lsy * sideWidth + lsx] = true;
                                                                if(!this->GetSquare(lineIt->GetX(), lineIt->GetY()) || this->GetSquare(lineIt->GetX(), lineIt->GetY())->IsWall()) break;
+                                                               if(Coordinates::Distance(baseX, baseY, lineIt->GetX(), lineIt->GetY()) > s) break;
                                                        }
                                                }
                                                else
@@ -383,6 +392,7 @@ namespace Deeangband
                                                                int lsy = lineRIt->GetY() - baseY + size;
                                                                coordVec[lsy * sideWidth + lsx] = true;
                                                                if(!this->GetSquare(lineRIt->GetX(), lineRIt->GetY()) || this->GetSquare(lineRIt->GetX(), lineRIt->GetY())->IsWall()) break;
+                                                               if(Coordinates::Distance(baseX, baseY, lineRIt->GetX(), lineRIt->GetY()) > s) break;
                                                        }       
                                                }
                                        }