diff --git a/assets.h b/assets.h index 2b4f21d..0c9d404 100644 --- a/assets.h +++ b/assets.h @@ -67,7 +67,7 @@ static const char *LCR_internalDataFile = ":vw0l0L" ":vx0l0I" - ":-s0q0" + ":-s0q1" ":;p0w0L :f5130" // bugs @@ -84,11 +84,11 @@ static const char *LCR_internalDataFile = ":~t1t2 :~u1t2 :~t1u2" // bumps ":^t0r0 :fq110 " // ramps - ":}n0lJ :|n1lJ :|n3lJ- :]n4lJ- :=o0l :f151" // loop - ":]n0mJ :|n1mJ :|n3mJ- :]n4mJ- :=o0m :f151" // loop - ":}l0kL :|l1kL :|l3kL- :]l4kL- :=k0k :f151" - ":]l0jL :|l1jL :|l3jL- :]l4jL- :=k0j :f151" - ":-k5k0 :f5120" + ":}n0l1J :|n1l1J :|n3l1J- :]n4l1J- :=o0l1 :f151" // loop + ":]n0m1J :|n1m1J :|n3m1J- :]n4m1J- :=o0m1 :f151" // loop + ":}l0k1L :|l1k1L :|l3k1L- :]l4k1L- :=k0k1 :f151" + ":]l0j1L :|l1j1L :|l3j1L- :]l4j1L- :=k0j1 :f151" + ":-k5k1 :f5120" " map end " "#Rrep1;testmap;482f70f9 00000188:00c1:0089:0111:00b9:0091:0109:0028:0050:00c1:0093:0030:00d1:0069:0041:0020:0071:0013:0012:0023:0022:0050:0032:0020:0022:0060:0024:00bc:0044" diff --git a/racing.h b/racing.h index a45489f..4426b6c 100644 --- a/racing.h +++ b/racing.h @@ -1167,7 +1167,8 @@ uint32_t LCR_racingStep(unsigned int input) { TPE_Unit upDot = TPE_vec3Dot(carUp,TPE_vec3(0,TPE_F,0)); - // if car is "somwhat" upwards (TPE_F / 8 is a hardcoded constant): + /* if car is "somewhat" horizontal (TPE_F / 8 is a hardcoded constant) + (else we assume we're riding on wall): */ if (upDot > TPE_F / 8 || upDot < -1 * TPE_F / 8) { uint8_t @@ -1178,23 +1179,17 @@ uint32_t LCR_racingStep(unsigned int input) gz = (LCR_racing.carPositions[0].z + (LCR_MAP_SIZE_BLOCKS / 2) * LCR_GAME_UNIT) / LCR_GAME_UNIT; -/* TODO: this shit below looks wrong: - - in the conditions yMod < LCR_GAME_UNIT / 2 can't ever happen because we - did % (LCR_GAME_UNIT / 2)? - - FIX -*/ - TPE_Unit yMod = (LCR_racing.carPositions[0].y + LCR_MAP_SIZE_BLOCKS * LCR_GAME_UNIT / 2) % (LCR_GAME_UNIT / 2); - if (upDot > 0 && yMod < LCR_GAME_UNIT / 2) // TODO: const + if (yMod < LCR_GAME_UNIT / 5) // if kinda at the bottom of the block groundBlockIndex = LCR_mapGetBlockAt(gx,gy - 1,gz); - else if (upDot < 0 && yMod > LCR_GAME_UNIT / 2) - groundBlockIndex = LCR_mapGetBlockAt(gx,gy + 1,gz); if (groundBlockIndex == -1) groundBlockIndex = LCR_mapGetBlockAt(gx,gy,gz); + + if (groundBlockIndex == -1) // still nothing? try bottom again + groundBlockIndex = LCR_mapGetBlockAt(gx,gy - 1,gz); } if (groundBlockIndex != -1)