shithub: sce

Download patch

ref: 4c2c9c8892686ad0a04ec93222a1f51fdafdf4f3
parent: a4c273b2345da84aaa0409096965b4b3146f7eb6
author: qwx <qwx@sciops.net>
date: Sun Aug 15 20:09:32 EDT 2021

M ./drw.c
M ./fns.h
M ./path.c
M ./sce.c
M ./sim.c
M ./sim.move.c
M ./util.c
util: normalize debug prints, add mobjfmt

--- a/drw.c
+++ b/drw.c
@@ -81,7 +81,7 @@
 	i = fbvis[vp.y * fbw + vp.x];
 	mo = i == -1 ? nil : visbuf[i];
 	if(mo == it){
-		dprint("select: %#p not moving to itself\n", it);
+		dprint("select: %M not moving to itself\n", it);
 		return;
 	}
 	p = divpt(addpt(subpt(p, selr.min), pan), scale);
@@ -88,7 +88,7 @@
 	p.x /= Nodewidth;
 	p.y /= Nodeheight;
 	if(nodemapwidth - p.x < it->o->w || nodemapheight - p.y < it->o->h){
-		dprint("select: %#p not moving beyond map edge\n", it);
+		dprint("select: %M not moving beyond map edge\n", it);
 		return;
 	}
 	if(mo != nil)
@@ -316,7 +316,7 @@
 
 	n = mo->state;
 	if(n < 0 || n > OSend){
-		dprint("frm: %s invalid animation frame %d\n", mo->o->name, n);
+		dprint("frm: %M invalid animation frame %d\n", mo, n);
 		return nil;
 	}
 	pp = &mo->o->pics[n][type];
--- a/fns.h
+++ b/fns.h
@@ -59,6 +59,7 @@
 u64int*	bload(int, int, int, int, int, int, int, int);
 void	bset(int, int, int, int, int);
 void	initbmap(void);
+int	mobjfmt(Fmt*);
 void	dprint(char *, ...);
 int	max(int, int);
 int	min(int, int);
@@ -68,3 +69,4 @@
 vlong	flen(int);
 
 #pragma	varargck	argpos	dprint	1
+#pragma	varargck	type	"M"	Mobj*
--- a/path.c
+++ b/path.c
@@ -492,7 +492,7 @@
 		return;
 	}
 	mo->goalblocked = 1;
-	dprint("setgoal: moving goal %d,%d in block %#p ", p->x, p->y, block);
+	dprint("%M setgoal: moving goal %d,%d in block %#p ", mo, p->x, p->y, block);
 	pm = nodemap + p->y * nodemapwidth + p->x;
 	pm->x = p->x;
 	pm->y = p->y;
@@ -549,7 +549,7 @@
 {
 	Node *a, *b, *n;
 
-	dprint("findpath %d,%d → %d,%d\n", mo->x, mo->y, p.x, p.y);
+	dprint("%M findpath to %d,%d\n", mo, p.x, p.y);
 	clearpath();
 	a = nodemap + mo->y * nodemapwidth + mo->x;
 	a->x = mo->x;
@@ -564,13 +564,13 @@
 	markmobj(mo, 0);
 	n = a∗(a, b, mo);
 	if(n != b){
-		dprint("findpath: goal unreachable\n");
+		dprint("%M findpath: goal unreachable\n", mo);
 		if((n = nearest) == a || n == nil || a->h < n->h){
 			werrstr("a∗: can't move");
 			markmobj(mo, 1);
 			return -1;
 		}
-		dprint("nearest: %#p %d,%d dist %f\n", n, n->x, n->y, n->h);
+		dprint("%M nearest: %#p %d,%d dist %f\n", mo, n, n->x, n->y, n->h);
 		b = nearestnonjump(n, b, mo);
 		if(b == a){
 			werrstr("a∗: really can't move");
--- a/sce.c
+++ b/sce.c
@@ -191,6 +191,7 @@
 	if(prefix == nil)
 		prefix = smprint("/sys/games/lib/%s", progname);
 	srand(time(nil));
+	fmtinstall('M', mobjfmt);
 	initfs();
 	initsv(tv, *argv);
 	initcl();
--- a/sim.c
+++ b/sim.c
@@ -66,12 +66,12 @@
 		mo->actp->cleanupfn(mo);
 	mo->actp++;
 	if((mo->state = mo->actp->os) == OSskymaybe){
-		dprint("A nextaction %s %#p: done\n", mo->o->name, mo);
+		dprint("%M nextaction: done\n", mo);
 		mo->actp = nil;
 		popcommand(mo);
 		return;
 	}
-	dprint("A nextaction %s %#p: %s\n", mo->o->name, mo, mo->actp->name);
+	dprint("%M nextaction: %s\n", mo, mo->actp->name);
 }
 
 int
@@ -79,7 +79,7 @@
 {
 	mo->actp = a;
 	mo->state = a->os;
-	dprint("A pushaction %s %#p: %s\n", mo->o->name, mo, a->name);
+	dprint("%M pushaction: %s\n", mo, a->name);
 	return 0;
 }
 
@@ -86,7 +86,6 @@
 void
 clearcommands(Mobj *mo)
 {
-	dprint("C clearcommand %s %#p: %s\n", mo->o->name, mo, mo->cmds[0].name);
 	if(mo->actp != nil && mo->actp->cleanupfn != nil)
 		mo->actp->cleanupfn(mo);
 	mo->actp = nil;
@@ -98,7 +97,7 @@
 void
 abortcommands(Mobj *mo)
 {
-	dprint("C abortcommand %s %#p: %s\n", mo->o->name, mo, mo->cmds[0].name);
+	dprint("%M abortcommand: %s\n", mo, mo->cmds[0].name);
 	clearcommands(mo);
 }
 
@@ -105,7 +104,7 @@
 void
 popcommand(Mobj *mo)
 {
-	dprint("C popcommand %s %#p: %s\n", mo->o->name, mo, mo->cmds[0].name);
+	dprint("%M popcommand: %s\n", mo, mo->cmds[0].name);
 	if(--mo->ctail > 0){
 		memmove(mo->cmds, mo->cmds+1, mo->ctail * sizeof *mo->cmds);
 		mo->state = OSskymaybe;
@@ -118,7 +117,7 @@
 {
 	Command *c;
 
-	dprint("C pushcommand %s %#p\n", mo->o->name, mo);
+	dprint("%M pushcommand\n", mo);
 	if(mo->ctail >= nelem(mo->cmds)){
 		werrstr("command buffer overflow");
 		return nil;
--- a/sim.move.c
+++ b/sim.move.c
@@ -81,7 +81,7 @@
 static void
 movedone(Mobj *mo)
 {
-	dprint("mobj %s %#p successfully reached goal\n", mo->o->name, mo);
+	dprint("%M successfully reached goal\n", mo);
 	nextaction(mo);
 }
 
@@ -167,8 +167,8 @@
 		/* disallow corner coasting */
 		if(x != mo->x && y != mo->y
 		&& (isblocked(x, mo->y, mo->o) || isblocked(mo->x, y, mo->o))){
-			dprint("detected corner coasting %d,%d vs %d,%d\n",
-				x, y, mo->x, mo->y);
+			dprint("%M detected corner coasting at %d,%d\n",
+				mo, x, y);
 			goto end;
 		}
 		mo->subpx = sx;
@@ -248,13 +248,13 @@
 		return;
 	if(continuemove(mo) < 0){
 		if(nerr > 1){
-			fprint(2, "stepmove: %s %#p bug: infinite loop!\n", mo->o->name, mo);
+			fprint(2, "%M stepmove: bug: infinite loop!\n", mo);
 			return;
 		}
-		dprint("stepmove: %s %#p failed moving to %d,%d from %d,%d: %r\n",
-			mo->o->name, mo, mo->pathp->x, mo->pathp->y, mo->px, mo->py);
+		dprint("%M stepmove: failed moving from %d,%d to %d,%d: %r\n",
+			mo, mo->px, mo->py, mo->pathp->x, mo->pathp->y);
 		if(repath(mo->target, mo) < 0){
-			dprint("stepmove: %s %#p moving towards target: %r\n", mo->o->name, mo);
+			dprint("%M stepmove: failed moving towards target: %r\n", mo);
 			abortcommands(mo);
 			return;
 		}
@@ -271,17 +271,15 @@
 		movedone(mo);
 		return;
 	}
-	dprint("stepmove: %s %#p reached final node, but not target\n",
-		mo->o->name, mo);
+	dprint("%M stepmove: reached final node, but not target\n", mo);
 	if(mo->goalblocked && isblocked(mo->target.x, mo->target.y, mo->o)){
-		dprint("stepmove: %s %#p goal still blocked, stopping\n", mo->o->name, mo);
+		dprint("%M stepmove: goal still blocked, stopping\n", mo);
 		abortmove(mo);
 		return;
 	}
-	dprint("stepmove: %s %#p trying again\n", mo->o->name, mo);
+	dprint("%M stepmove: trying again\n", mo);
 	if(mo->npatherr++ > 1 || repath(mo->target, mo) < 0){
-		dprint("stepmove: %s %#p still can't reach target: %r\n",
-			mo->o->name, mo);
+		dprint("%M stepmove: still can't reach target: %r\n", mo);
 		abortmove(mo);
 		return;
 	}
--- a/util.c
+++ b/util.c
@@ -18,6 +18,17 @@
 	return a < b ? a : b;
 }
 
+int
+mobjfmt(Fmt *fmt)
+{
+	Mobj *mo;
+
+	mo = va_arg(fmt->args, Mobj*);
+	if(mo == nil)
+		return fmtstrcpy(fmt, "[]");
+	return fmtprint(fmt, "[%s:%#p:%d,%d]", mo->o->name, mo, mo->x, mo->y);
+}
+
 void
 dprint(char *fmt, ...)
 {