From d094973e6b0f1314f4b00961040ff6fdac5a0ec8 Mon Sep 17 00:00:00 2001
From: quenousimporte <quenousimporte@git.ouvaton.coop>
Date: Tue, 15 Apr 2025 14:21:45 +0200
Subject: [PATCH] struggling with dof ("ddl")

---
 w/w.c | 63 +++++++++++++++++++++++++++++++++++++++++++++--------------
 1 file changed, 48 insertions(+), 15 deletions(-)

diff --git a/w/w.c b/w/w.c
index 3b2f0a8..c2f6b04 100644
--- a/w/w.c
+++ b/w/w.c
@@ -576,25 +576,24 @@ char gentile(int x, int y)
 		if (d == 1)
 		{
 			c = TILE_DOOR;
-			ddl++;
 		}
 		else if (d < 5 && ddl > 1)
 		{
 			c = TILE_WALL;
-			ddl--;
 		}
 		else
 		{
 			c = TILE_FREE;
-			ddl++;
 		}
 		setatpos(x, y, c);
+		return c;
 	}
 	return TILE_UNUSED;
 }
 
 void updatemap()
 {
+	//ddl--;
 	int x = state.position.x;
 	int y = state.position.y;
 
@@ -602,37 +601,70 @@ void updatemap()
 	char c = gentile(x, y - 1);
 	if (c == TILE_FREE)
 	{
-		ddl--;
+		ddl++;
 		gentile(x - 1, y - 2);
 		gentile(x + 1, y - 2);
+	} 
+	else if (c == TILE_DOOR)
+	{
+		ddl++;
+	}
+	else if (c != TILE_UNUSED)
+	{
+		ddl--;
 	}
 
 	// south
 	c = gentile(x, y + 1);
 	if (c == TILE_FREE)
 	{
-		ddl--;
+		ddl++;
 		gentile(x - 1, y + 2);
 		gentile(x + 1, y + 2);
+	} 
+	else if (c == TILE_DOOR)
+	{
+		ddl++;
+	}
+	else if (c != TILE_UNUSED) 
+	{
+		ddl--;
 	}
 
 	// east
 	c = gentile(x + 1, y);
 	if (c == TILE_FREE)
 	{
-		ddl--;
+		ddl++;
 		gentile(x + 2, y - 1);
 		gentile(x + 2, y + 1);
+	} 
+	else if (c == TILE_DOOR)
+	{
+		ddl++;
 	}
-
+	else if (c != TILE_UNUSED) 
+	{
+		ddl--;
+	}
+	
 	// west
 	c = gentile(x - 1, y);
 	if (c == TILE_FREE)
 	{
-		ddl--;
+		ddl++;
 		gentile(x - 2, y - 1);
 		gentile(x - 2, y + 1);
+	} 
+	else if (c == TILE_DOOR)
+	{
+		ddl++;
 	}
+	else if (c != TILE_UNUSED) 
+	{
+		ddl--;
+	}
+	
 }
 
 void dfs(int x, int y)
@@ -687,8 +719,8 @@ void dfs(int x, int y)
 
 void initmap()
 {
-	//memset(&map, TILE_UNKNOWN, MAP_SIZE * MAP_SIZE);
-	memset(&map, TILE_WALL, MAP_SIZE * MAP_SIZE);  // dfs: put walls everywhere
+	memset(&map, TILE_UNKNOWN, MAP_SIZE * MAP_SIZE);
+	//memset(&map, TILE_WALL, MAP_SIZE * MAP_SIZE);  // dfs: put walls everywhere
 
 	// dfs: add random room
 	for (int x = 0; x < MAP_SIZE; x ++)
@@ -705,15 +737,16 @@ void initmap()
 
 			setatpos(x, y, TILE_WALL); // => instead of TILE_UNUSED, for readibility
 
-			//setatpos(x + 1, y + 1, TILE_FREE);
-			setatpos(x + 1, y + 1, TILE_UNVISITED); // dfs
+			setatpos(x + 1, y + 1, TILE_FREE);
+			//setatpos(x + 1, y + 1, TILE_UNVISITED); // dfs
 		}
 		setatpos(x + 1, 0, TILE_WALL);
 		setatpos(x + 1, 14, TILE_WALL);
 	}
 
 	// setatpos(1, 13, TILE_FREE);
-	dfs(1,13);
+	//dfs(1,13);
+	ddl = 0;
 }
 
 void update(char* command)
@@ -728,7 +761,7 @@ void update(char* command)
 			int x = state.position.x;
 			int y = state.position.y;
 			forward();
-			//updatemap();
+			updatemap();
 			if ( (x != state.position.x || y != state.position.y) && dice() > 4)
 			{
 				// gotomonster();
@@ -776,7 +809,7 @@ void update(char* command)
 			state.position.orientation = NORTH;
 
 			initmap();
-			//updatemap();
+			updatemap();
 			updatepov();
 		}
 		else if (c == CMD_GOTOMARKET)