From 4327b756a48f0187574ad21ae78c852f04c057bf Mon Sep 17 00:00:00 2001
From: Christian Heller <c.heller@plomlompom.de>
Date: Wed, 9 Mar 2016 22:35:55 +0100
Subject: [PATCH] TCE: Add water.

---
 plugins/client/TheCrawlingEater.py |  9 ++++++---
 plugins/server/TheCrawlingEater.py | 17 +++++++++++++----
 2 files changed, 19 insertions(+), 7 deletions(-)

diff --git a/plugins/client/TheCrawlingEater.py b/plugins/client/TheCrawlingEater.py
index a1af9c2..106fc5b 100644
--- a/plugins/client/TheCrawlingEater.py
+++ b/plugins/client/TheCrawlingEater.py
@@ -34,6 +34,7 @@ def win_map(self):
     curses.init_pair(3, curses.COLOR_RED, curses.COLOR_BLACK)
     curses.init_pair(4, curses.COLOR_YELLOW, curses.COLOR_BLACK)
     curses.init_pair(5, curses.COLOR_MAGENTA, curses.COLOR_BLACK)
+    curses.init_pair(6, curses.COLOR_BLACK, curses.COLOR_BLUE)
     col_unknown = curses.color_pair(1)
     col_mem_obstacle = curses.color_pair(2)
     col_mem = curses.color_pair(2)
@@ -41,6 +42,7 @@ def win_map(self):
     col_dirt = curses.color_pair(4)
     col_earth = curses.color_pair(3)
     col_player = curses.color_pair(5)
+    col_water = curses.color_pair(6)
     for y in range(world_data["map_size"]):
         for x in range(world_data["map_size"]):
             pos = y * world_data["map_size"] + x
@@ -61,8 +63,8 @@ def win_map(self):
                 bonus = (" ", attribute)
                 winmap += [(char, attribute), bonus]
             else:
-                bonus_char = " "
                 attribute = col_stone
+                bonus = " "
                 if char == ".":
                     attribute = col_dirt
                 elif char == ":":
@@ -71,10 +73,11 @@ def win_map(self):
                     attribute = col_earth
                 elif char == "#":
                     attribute = col_dirt
+                elif char == "~":
+                    attribute = col_water
                 elif char == "o":
                     attribute = col_player
-                    bonus_char = char
-                bonus = (bonus_char, attribute)
+                    bonus = (char, attribute)
                 winmap += [(char, attribute), bonus]
         if y % 2 == 0:
             winmap += "  "
diff --git a/plugins/server/TheCrawlingEater.py b/plugins/server/TheCrawlingEater.py
index e23f00f..355b025 100644
--- a/plugins/server/TheCrawlingEater.py
+++ b/plugins/server/TheCrawlingEater.py
@@ -124,15 +124,24 @@ def make_map():
             if y == 0 or y == (length - 1) or x == 0 or x == (length - 1):
                 break
             world_db["MAP"][pos] = ord("#")
-    n_trees = int((length ** 2) / 16)
-    i_trees = 0
-    while (i_trees <= n_trees):
+    n_ground = int((length ** 2) / 16)
+    i_ground = 0
+    while (i_ground <= n_ground):
         single_allowed = rand.next() % 32
         y, x, pos = new_pos()
         if "#" == chr(world_db["MAP"][pos]) \
                 and ((not single_allowed) or is_neighbor((y, x), "_")):
             world_db["MAP"][pos] = ord("_")
-            i_trees += 1
+            i_ground += 1
+    n_water = int((length ** 2) / 64)
+    i_water = 0
+    while (i_water <= n_water):
+        single_allowed = rand.next() % 32
+        y, x, pos = new_pos()
+        if "_" == chr(world_db["MAP"][pos]) \
+                and ((not single_allowed) or is_neighbor((y, x), "~")):
+            world_db["MAP"][pos] = ord("~")
+            i_water += 1
 
 
 def calc_effort(ta, t):
-- 
2.30.2