summaryrefslogtreecommitdiff
path: root/src/simulation/elements
diff options
context:
space:
mode:
authorSimon Robertshaw <simon@hardwired.org.uk>2012-07-25 14:47:18 (GMT)
committer Simon Robertshaw <simon@hardwired.org.uk>2012-07-25 14:47:18 (GMT)
commit08d1dd06ed77970a4ad5fe1b1db7bfbf857f74d5 (patch)
tree775d58d5c5b3927f847475ea0ece7146727a927b /src/simulation/elements
parent2214ab4eb08701d5d13da6f1d777ca10fcab2d4e (diff)
downloadpowder-08d1dd06ed77970a4ad5fe1b1db7bfbf857f74d5.zip
powder-08d1dd06ed77970a4ad5fe1b1db7bfbf857f74d5.tar.gz
TPT: Fix STKM causing stacking and falling through some powders c14704ae49
Diffstat (limited to 'src/simulation/elements')
-rw-r--r--src/simulation/elements/STKM.cpp19
1 files changed, 10 insertions, 9 deletions
diff --git a/src/simulation/elements/STKM.cpp b/src/simulation/elements/STKM.cpp
index 829dcd3..ca564a3 100644
--- a/src/simulation/elements/STKM.cpp
+++ b/src/simulation/elements/STKM.cpp
@@ -79,6 +79,7 @@ int Element_STKM::graphics(GRAPHICS_FUNC_ARGS)
//#TPT-Directive ElementHeader Element_STKM static int run_stickman(playerst* playerp, UPDATE_FUNC_ARGS)
int Element_STKM::run_stickman(playerst* playerp, UPDATE_FUNC_ARGS) {
int r, rx, ry;
+ int t = parts[i].type;
float pp, d;
float dt = 0.9;///(FPSB*FPSB); //Delta time in square
float gvx, gvy;
@@ -187,7 +188,7 @@ int Element_STKM::run_stickman(playerst* playerp, UPDATE_FUNC_ARGS) {
{
if (dl>dr)
{
- if (!sim->eval_move(PT_DUST, playerp->legs[4], playerp->legs[5], NULL))
+ if (!sim->eval_move(t, playerp->legs[4], playerp->legs[5], NULL))
{
playerp->accs[2] = -3*gvy-3*gvx;
playerp->accs[3] = 3*gvx-3*gvy;
@@ -197,7 +198,7 @@ int Element_STKM::run_stickman(playerst* playerp, UPDATE_FUNC_ARGS) {
}
else
{
- if (!sim->eval_move(PT_DUST, playerp->legs[12], playerp->legs[13], NULL))
+ if (!sim->eval_move(t, playerp->legs[12], playerp->legs[13], NULL))
{
playerp->accs[6] = -3*gvy-3*gvx;
playerp->accs[7] = 3*gvx-3*gvy;
@@ -212,7 +213,7 @@ int Element_STKM::run_stickman(playerst* playerp, UPDATE_FUNC_ARGS) {
{
if (dl<dr)
{
- if (!sim->eval_move(PT_DUST, playerp->legs[4], playerp->legs[5], NULL))
+ if (!sim->eval_move(t, playerp->legs[4], playerp->legs[5], NULL))
{
playerp->accs[2] = 3*gvy-3*gvx;
playerp->accs[3] = -3*gvx-3*gvy;
@@ -222,7 +223,7 @@ int Element_STKM::run_stickman(playerst* playerp, UPDATE_FUNC_ARGS) {
}
else
{
- if (!sim->eval_move(PT_DUST, playerp->legs[12], playerp->legs[13], NULL))
+ if (!sim->eval_move(t, playerp->legs[12], playerp->legs[13], NULL))
{
playerp->accs[6] = 3*gvy-3*gvx;
playerp->accs[7] = -3*gvx-3*gvy;
@@ -234,7 +235,7 @@ int Element_STKM::run_stickman(playerst* playerp, UPDATE_FUNC_ARGS) {
//Jump
if (((int)(playerp->comm)&0x04) == 0x04 &&
- (!sim->eval_move(PT_DUST, playerp->legs[4], playerp->legs[5], NULL) || !sim->eval_move(PT_DUST, playerp->legs[12], playerp->legs[13], NULL)))
+ (!sim->eval_move(t, playerp->legs[4], playerp->legs[5], NULL) || !sim->eval_move(t, playerp->legs[12], playerp->legs[13], NULL)))
{
parts[i].vy -= 4*gvy;
playerp->accs[3] -= gvy;
@@ -385,27 +386,27 @@ int Element_STKM::run_stickman(playerst* playerp, UPDATE_FUNC_ARGS) {
playerp->legs[8] += (playerp->legs[8]-parts[i].x)*d;
playerp->legs[9] += (playerp->legs[9]-parts[i].y)*d;
- if (INBOND(playerp->legs[4], playerp->legs[5]) && !sim->eval_move(PT_DUST, playerp->legs[4], playerp->legs[5], NULL))
+ if (INBOND(playerp->legs[4], playerp->legs[5]) && !sim->eval_move(t, playerp->legs[4], playerp->legs[5], NULL))
{
playerp->legs[4] = playerp->legs[6];
playerp->legs[5] = playerp->legs[7];
}
- if (INBOND(playerp->legs[12], playerp->legs[13]) && !sim->eval_move(PT_DUST, playerp->legs[12], playerp->legs[13], NULL))
+ if (INBOND(playerp->legs[12], playerp->legs[13]) && !sim->eval_move(t, playerp->legs[12], playerp->legs[13], NULL))
{
playerp->legs[12] = playerp->legs[14];
playerp->legs[13] = playerp->legs[15];
}
//This makes stick man "pop" from obstacles
- if (INBOND(playerp->legs[4], playerp->legs[5]) && !sim->eval_move(PT_DUST, playerp->legs[4], playerp->legs[5], NULL))
+ if (INBOND(playerp->legs[4], playerp->legs[5]) && !sim->eval_move(t, playerp->legs[4], playerp->legs[5], NULL))
{
float t;
t = playerp->legs[4]; playerp->legs[4] = playerp->legs[6]; playerp->legs[6] = t;
t = playerp->legs[5]; playerp->legs[5] = playerp->legs[7]; playerp->legs[7] = t;
}
- if (INBOND(playerp->legs[12], playerp->legs[13]) && !sim->eval_move(PT_DUST, playerp->legs[12], playerp->legs[13], NULL))
+ if (INBOND(playerp->legs[12], playerp->legs[13]) && !sim->eval_move(t, playerp->legs[12], playerp->legs[13], NULL))
{
float t;
t = playerp->legs[12]; playerp->legs[12] = playerp->legs[14]; playerp->legs[14] = t;