feat: Increase gravity strength for falling elements
This commit is contained in:
parent
ebb96846ed
commit
ba4fa3eb37
@ -1,11 +1,24 @@
|
|||||||
// Basic element behaviors (sand, water, dirt)
|
// Basic element behaviors (sand, water, dirt)
|
||||||
function updateSand(x, y) {
|
function updateSand(x, y) {
|
||||||
// Try to move down
|
// Try to move down with stronger gravity (up to 3 pixels at once)
|
||||||
if (getPixel(x, y + 1) === EMPTY) {
|
let maxFall = 3;
|
||||||
|
let newY = y;
|
||||||
|
|
||||||
|
// Check how far down we can fall
|
||||||
|
for (let i = 1; i <= maxFall; i++) {
|
||||||
|
if (getPixel(x, y + i) === EMPTY) {
|
||||||
|
newY = y + i;
|
||||||
|
} else {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (newY > y) {
|
||||||
|
// Fall straight down as far as possible
|
||||||
setPixel(x, y, EMPTY);
|
setPixel(x, y, EMPTY);
|
||||||
setPixel(x, y + 1, SAND);
|
setPixel(x, newY, SAND);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
// Try to move down-left or down-right
|
// Try to move down-left or down-right
|
||||||
else if (getPixel(x - 1, y + 1) === EMPTY) {
|
else if (getPixel(x - 1, y + 1) === EMPTY) {
|
||||||
setPixel(x, y, EMPTY);
|
setPixel(x, y, EMPTY);
|
||||||
@ -49,13 +62,26 @@ function updateWater(x, y) {
|
|||||||
setMetadata(x, y, metadata);
|
setMetadata(x, y, metadata);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Try to move down
|
// Try to move down with stronger gravity (up to 2 pixels at once)
|
||||||
if (getPixel(x, y + 1) === EMPTY) {
|
let maxFall = 2;
|
||||||
|
let newY = y;
|
||||||
|
|
||||||
|
// Check how far down we can fall
|
||||||
|
for (let i = 1; i <= maxFall; i++) {
|
||||||
|
if (getPixel(x, y + i) === EMPTY) {
|
||||||
|
newY = y + i;
|
||||||
|
} else {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (newY > y) {
|
||||||
|
// Fall straight down as far as possible
|
||||||
setPixel(x, y, EMPTY);
|
setPixel(x, y, EMPTY);
|
||||||
setPixel(x, y + 1, WATER);
|
setPixel(x, newY, WATER);
|
||||||
moveMetadata(x, y, x, y + 1);
|
moveMetadata(x, y, x, newY);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
// Try to move down-left or down-right
|
// Try to move down-left or down-right
|
||||||
else if (getPixel(x - 1, y + 1) === EMPTY) {
|
else if (getPixel(x - 1, y + 1) === EMPTY) {
|
||||||
setPixel(x, y, EMPTY);
|
setPixel(x, y, EMPTY);
|
||||||
@ -128,12 +154,25 @@ function updateWater(x, y) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function updateDirt(x, y) {
|
function updateDirt(x, y) {
|
||||||
// Try to move down
|
// Try to move down with stronger gravity (up to 3 pixels at once)
|
||||||
if (getPixel(x, y + 1) === EMPTY) {
|
let maxFall = 3;
|
||||||
|
let newY = y;
|
||||||
|
|
||||||
|
// Check how far down we can fall
|
||||||
|
for (let i = 1; i <= maxFall; i++) {
|
||||||
|
if (getPixel(x, y + i) === EMPTY) {
|
||||||
|
newY = y + i;
|
||||||
|
} else {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (newY > y) {
|
||||||
|
// Fall straight down as far as possible
|
||||||
setPixel(x, y, EMPTY);
|
setPixel(x, y, EMPTY);
|
||||||
setPixel(x, y + 1, DIRT);
|
setPixel(x, newY, DIRT);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
// Try to move down-left or down-right
|
// Try to move down-left or down-right
|
||||||
else if (getPixel(x - 1, y + 1) === EMPTY) {
|
else if (getPixel(x - 1, y + 1) === EMPTY) {
|
||||||
setPixel(x, y, EMPTY);
|
setPixel(x, y, EMPTY);
|
||||||
|
@ -1,11 +1,25 @@
|
|||||||
// Plant element behaviors (grass, seeds, trees)
|
// Plant element behaviors (grass, seeds, trees)
|
||||||
function updateGrass(x, y) {
|
function updateGrass(x, y) {
|
||||||
// Grass behaves like dirt for physics
|
// Grass behaves like dirt for physics with stronger gravity
|
||||||
if (getPixel(x, y + 1) === EMPTY) {
|
let maxFall = 3;
|
||||||
|
let newY = y;
|
||||||
|
|
||||||
|
// Check how far down we can fall
|
||||||
|
for (let i = 1; i <= maxFall; i++) {
|
||||||
|
if (getPixel(x, y + i) === EMPTY) {
|
||||||
|
newY = y + i;
|
||||||
|
} else {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (newY > y) {
|
||||||
|
// Fall straight down as far as possible
|
||||||
setPixel(x, y, EMPTY);
|
setPixel(x, y, EMPTY);
|
||||||
setPixel(x, y + 1, GRASS);
|
setPixel(x, newY, GRASS);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
// Try to move down-left or down-right
|
||||||
else if (getPixel(x - 1, y + 1) === EMPTY) {
|
else if (getPixel(x - 1, y + 1) === EMPTY) {
|
||||||
setPixel(x, y, EMPTY);
|
setPixel(x, y, EMPTY);
|
||||||
setPixel(x - 1, y + 1, GRASS);
|
setPixel(x - 1, y + 1, GRASS);
|
||||||
@ -46,13 +60,27 @@ function updateGrass(x, y) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function updateSeed(x, y) {
|
function updateSeed(x, y) {
|
||||||
// Seeds fall like sand
|
// Seeds fall like sand with stronger gravity
|
||||||
if (getPixel(x, y + 1) === EMPTY) {
|
let maxFall = 3;
|
||||||
|
let newY = y;
|
||||||
|
|
||||||
|
// Check how far down we can fall
|
||||||
|
for (let i = 1; i <= maxFall; i++) {
|
||||||
|
if (getPixel(x, y + i) === EMPTY) {
|
||||||
|
newY = y + i;
|
||||||
|
} else {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (newY > y) {
|
||||||
|
// Fall straight down as far as possible
|
||||||
setPixel(x, y, EMPTY);
|
setPixel(x, y, EMPTY);
|
||||||
setPixel(x, y + 1, SEED);
|
setPixel(x, newY, SEED);
|
||||||
moveMetadata(x, y, x, y + 1);
|
moveMetadata(x, y, x, newY);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
// Try to move down-left or down-right
|
||||||
else if (getPixel(x - 1, y + 1) === EMPTY) {
|
else if (getPixel(x - 1, y + 1) === EMPTY) {
|
||||||
setPixel(x, y, EMPTY);
|
setPixel(x, y, EMPTY);
|
||||||
setPixel(x - 1, y + 1, SEED);
|
setPixel(x - 1, y + 1, SEED);
|
||||||
|
@ -1,12 +1,26 @@
|
|||||||
// Tree element behaviors
|
// Tree element behaviors
|
||||||
function updateTreeSeed(x, y) {
|
function updateTreeSeed(x, y) {
|
||||||
// Tree seeds fall like other seeds
|
// Tree seeds fall like other seeds with stronger gravity
|
||||||
if (getPixel(x, y + 1) === EMPTY) {
|
let maxFall = 3;
|
||||||
|
let newY = y;
|
||||||
|
|
||||||
|
// Check how far down we can fall
|
||||||
|
for (let i = 1; i <= maxFall; i++) {
|
||||||
|
if (getPixel(x, y + i) === EMPTY) {
|
||||||
|
newY = y + i;
|
||||||
|
} else {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (newY > y) {
|
||||||
|
// Fall straight down as far as possible
|
||||||
setPixel(x, y, EMPTY);
|
setPixel(x, y, EMPTY);
|
||||||
setPixel(x, y + 1, TREE_SEED);
|
setPixel(x, newY, TREE_SEED);
|
||||||
moveMetadata(x, y, x, y + 1);
|
moveMetadata(x, y, x, newY);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
// Try to move down-left or down-right
|
||||||
else if (getPixel(x - 1, y + 1) === EMPTY) {
|
else if (getPixel(x - 1, y + 1) === EMPTY) {
|
||||||
setPixel(x, y, EMPTY);
|
setPixel(x, y, EMPTY);
|
||||||
setPixel(x - 1, y + 1, TREE_SEED);
|
setPixel(x - 1, y + 1, TREE_SEED);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user