shithub: sce

Download patch

ref: f4fc7ec0a6cfa2b6a0db00f8d34f2f7d0471cd60
parent: 2a9f768f9e36997f1cc75773ad892cfc72719ea0
author: qwx <qwx@sciops.net>
date: Mon Nov 22 18:48:03 EST 2021

sim: consider move a success if next to target

this shouldn't even be a problem,
but will have to be solved later

--- a/path.c
+++ b/path.c
@@ -445,15 +445,17 @@
 }
 
 int
-isnextto(Mobj *, Mobj *tgt)
+isnextto(Mobj *mo, Mobj *tgt)
 {
+	Rectangle r1, r2;
+
 	if(tgt == nil)
 		return 0;
-	/*
-	FIXME: ??
-		get nearest tgt node, distance = 0? other functions would use that too
-	*/
-	return 0;
+	r1.min = mo->Point;
+	r1.max = addpt(r1.min, Pt(mo->o->w, mo->o->h));
+	r2.min = tgt->Point;
+	r2.max = addpt(r2.min, Pt(tgt->o->w, tgt->o->h));
+	return rectXrect(insetrect(r1, -1), r2);
 }
 
 static Node *
--- a/sim.move.c
+++ b/sim.move.c
@@ -271,6 +271,7 @@
 		movedone(mo);
 		return;
 	}
+	/* FIXME: this is a shitty hack, see notes */
 	if(isnextto(mo, mo->cmds[0].target1)){
 		dprint("%M stepmove: next to target, stopping\n", mo);
 		movedone(mo);