summaryrefslogtreecommitdiff
path: root/src/simulation
diff options
context:
space:
mode:
authorSimon Robertshaw <simon@hardwired.org.uk>2012-08-05 17:35:12 (GMT)
committer Simon Robertshaw <simon@hardwired.org.uk>2012-08-05 17:35:12 (GMT)
commit4ce22e4e7705224a9b4c1b9bfa8886de0029a3e3 (patch)
treed9c02db57d9a20709758d7b771ee60ea9cbe4e88 /src/simulation
parent30f8049efc6efc086509d235df413e4932dab83e (diff)
downloadpowder-4ce22e4e7705224a9b4c1b9bfa8886de0029a3e3.zip
powder-4ce22e4e7705224a9b4c1b9bfa8886de0029a3e3.tar.gz
Wall Edge option, fixes #70
Diffstat (limited to 'src/simulation')
-rw-r--r--src/simulation/Simulation.cpp36
-rw-r--r--src/simulation/Simulation.h3
2 files changed, 39 insertions, 0 deletions
diff --git a/src/simulation/Simulation.cpp b/src/simulation/Simulation.cpp
index 4fb9ac2..64969e1 100644
--- a/src/simulation/Simulation.cpp
+++ b/src/simulation/Simulation.cpp
@@ -750,6 +750,41 @@ int Simulation::create_part_add_props(int p, int x, int y, int tv, int rx, int r
return p;
}
+void Simulation::SetEdgeMode(int newEdgeMode)
+{
+ edgeMode = newEdgeMode;
+ switch(edgeMode)
+ {
+ case 0:
+ for(int i = 0; i<(XRES/CELL); i++)
+ {
+ bmap[0][i] = 0;
+ bmap[YRES/CELL-1][i] = 0;
+ }
+ for(int i = 1; i<((YRES/CELL)-1); i++)
+ {
+ bmap[i][0] = 0;
+ bmap[i][XRES/CELL-1] = 0;
+ }
+ break;
+ case 1:
+ int i;
+ for(i=0; i<(XRES/CELL); i++)
+ {
+ bmap[0][i] = WL_WALL;
+ bmap[YRES/CELL-1][i] = WL_WALL;
+ }
+ for(i=1; i<((YRES/CELL)-1); i++)
+ {
+ bmap[i][0] = WL_WALL;
+ bmap[i][XRES/CELL-1] = WL_WALL;
+ }
+ break;
+ default:
+ SetEdgeMode(0);
+ }
+}
+
void Simulation::ApplyDecoration(int x, int y, int colR_, int colG_, int colB_, int colA_, int mode)
{
int rp;
@@ -1801,6 +1836,7 @@ void Simulation::clear_sim(void)
grav->Clear();
if(air)
air->Clear();
+ SetEdgeMode(edgeMode);
}
void Simulation::init_can_move()
{
diff --git a/src/simulation/Simulation.h b/src/simulation/Simulation.h
index e4f4311..9b10df2 100644
--- a/src/simulation/Simulation.h
+++ b/src/simulation/Simulation.h
@@ -102,6 +102,7 @@ public:
int photons[YRES][XRES];
int pmap_count[YRES][XRES];
//
+ int edgeMode;
int gravityMode;
//int airMode;
int legacy_enable;
@@ -156,6 +157,8 @@ public:
void rotate_area(int area_x, int area_y, int area_w, int area_h, int invert);
void clear_area(int area_x, int area_y, int area_w, int area_h);
+ void SetEdgeMode(int newEdgeMode);
+
int Tool(int x, int y, int tool, float strength);
int ToolBrush(int x, int y, int tool, Brush * cBrush);
void ToolLine(int x1, int y1, int x2, int y2, int tool, Brush * cBrush);