Fixed wall region indexing bug
[kaka/rust-sdl-test.git] / src / core / level / mod.rs
index e422042..47a4703 100644 (file)
@@ -204,8 +204,7 @@ pub struct WallRegion {
 }
 
 impl WallRegion {
-    pub fn new(points: Vec<Point<f64>>) -> Self {
-       let index: RegionIndex = 0; // use as param
+    pub fn new(index: RegionIndex, points: Vec<Point<f64>>) -> Self {
        let mut edges = Vec::with_capacity(points.len());
 
        for i in 0..points.len() {
@@ -223,12 +222,12 @@ impl WallRegion {
 
     fn next(&self, index: EdgeIndex) -> Rc<WallEdge> {
        let index = (index + 1) % self.edges.len();
-       Rc::clone(&self.edges[index])
+       self.edges[index].clone()
     }
 
     fn previous(&self, index: EdgeIndex) -> Rc<WallEdge> {
-       let index = (index + self.edges.len() + 1) % self.edges.len();
-       Rc::clone(&self.edges[index])
+       let index = (index + self.edges.len() - 1) % self.edges.len();
+       self.edges[index].clone()
     }
 }
 
@@ -270,18 +269,18 @@ pub struct Wall {
 
 impl Wall {
     #[allow(dead_code)]
-    pub fn next(self) -> Wall {
+    pub fn next(&self) -> Wall {
        Wall {
            edge: self.region.next(self.edge.id),
-           region: self.region,
+           region: self.region.clone(),
        }
     }
 
     #[allow(dead_code)]
-    pub fn previous(self) -> Wall {
+    pub fn previous(&self) -> Wall {
        Wall {
            edge: self.region.previous(self.edge.id),
-           region: self.region,
+           region: self.region.clone(),
        }
     }