diff --git a/core/src/ru/deadsoftware/cavedroid/game/GameRenderer.java b/core/src/ru/deadsoftware/cavedroid/game/GameRenderer.java
index 09878f501d1224304633243a69b80fafc0fe34bc..49b9f0c9bc4d64fd61a9514ff6d1e6e7cb86067a 100644 (file)
import com.badlogic.gdx.graphics.g2d.TextureRegion;
import com.badlogic.gdx.graphics.glutils.ShapeRenderer;
import com.badlogic.gdx.math.Intersector;
+import com.badlogic.gdx.math.MathUtils;
import com.badlogic.gdx.math.Rectangle;
-import com.badlogic.gdx.math.Vector2;
-import com.badlogic.gdx.scenes.scene2d.utils.ScissorStack;
import ru.deadsoftware.cavedroid.MainConfig;
import ru.deadsoftware.cavedroid.game.mobs.Mob;
import ru.deadsoftware.cavedroid.game.mobs.MobsController;
import ru.deadsoftware.cavedroid.game.mobs.Player;
-import ru.deadsoftware.cavedroid.game.objects.Block;
+import ru.deadsoftware.cavedroid.game.model.block.Block;
+import ru.deadsoftware.cavedroid.game.model.item.Item;
import ru.deadsoftware.cavedroid.game.objects.Drop;
import ru.deadsoftware.cavedroid.game.objects.DropController;
-import ru.deadsoftware.cavedroid.game.objects.Item;
import ru.deadsoftware.cavedroid.game.world.GameWorld;
import ru.deadsoftware.cavedroid.misc.ControlMode;
import ru.deadsoftware.cavedroid.misc.Renderer;
-import ru.deadsoftware.cavedroid.misc.utils.SpriteUtilsKt;
import javax.annotation.CheckForNull;
import javax.annotation.Nullable;
return y * 16 - getCamY();
}
- private void drawWreck(int bl) {
+ private void drawWreck(Block bl) {
if (mGameInput.getBlockDamage() > 0) {
- int index = 10 * mGameInput.getBlockDamage() / GameItems.getBlock(bl).getHp();
+ int index = 10 * mGameInput.getBlockDamage() / bl.getHp();
String key = "break_" + index;
if (index > 10 || index < 0) {
private void drawBlock(int x, int y, boolean drawBG) {
if (drawBG) {
- if ((!mGameWorld.hasForeAt(x, y) || mGameWorld.getForeMapBlock(x, y).isTransparent())
+ if ((!mGameWorld.hasForeAt(x, y) || mGameWorld.getForeMap(x, y).isTransparent())
&& mGameWorld.hasBackAt(x, y)) {
- mGameWorld.getBackMapBlock(x, y).draw(spriter, drawX(x), drawY(y));
+ mGameWorld.getBackMap(x, y).draw(spriter, drawX(x), drawY(y));
if (!mGameWorld.hasForeAt(x, y) && x == mGameInput.getCurX() && y == mGameInput.getCurY()) {
drawWreck(mGameWorld.getBackMap(mGameInput.getCurX(), mGameInput.getCurY()));
}
}
}
- if (mGameWorld.hasForeAt(x, y) && mGameWorld.getForeMapBlock(x, y).isBackground() == drawBG) {
- mGameWorld.getForeMapBlock(x, y).draw(spriter, drawX(x), drawY(y));
+ if (mGameWorld.hasForeAt(x, y) && mGameWorld.getForeMap(x, y).isBackground() == drawBG) {
+ mGameWorld.getForeMap(x, y).draw(spriter, drawX(x), drawY(y));
if (x == mGameInput.getCurX() && y == mGameInput.getCurY()) {
drawWreck(mGameWorld.getForeMap(mGameInput.getCurX(), mGameInput.getCurY()));
}
shaper.setColor(0f, 0f, 0f, .5f);
for (int y = minY; y < maxY; y++) {
for (int x = minX; x < maxX; x++) {
- if ((!mGameWorld.hasForeAt(x, y) || mGameWorld.getForeMapBlock(x, y).isTransparent())
+ if ((!mGameWorld.hasForeAt(x, y) || mGameWorld.getForeMap(x, y).isTransparent())
&& mGameWorld.hasBackAt(x, y)) {
shaper.rect(drawX(x), drawY(y), 16, 16);
}
}
final Item item = GameItems.getItem(drop.getId());
- @CheckForNull final Block block = GameItems.getBlock(GameItems.getItemKey(drop.getId()));
- @CheckForNull final Sprite sprite = item.isBlock()
- ? block.getTexture()
- : item.getSprite();
-
- if (sprite == null) {
- return;
- }
+ final Sprite sprite = item.getSprite();
sprite.setPosition(drawingRect.x, drawingRect.y);
sprite.setSize(drawingRect.width, drawingRect.height);
y + 18 + (mGameInput.getCreativeScroll() * (72f / GameProc.MAX_CREATIVE_SCROLL)));
for (int i = mGameInput.getCreativeScroll() * 8; i < mGameInput.getCreativeScroll() * 8 + 40; i++) {
if (i > 0 && i < GameItems.getItemsSize()) {
- if (GameItems.getItem(i).isBlock()) {
- spriter.draw(GameItems.getBlock(GameItems.getBlockIdByItemId(i)).getTexture(),
- x + 8 + ((i - mGameInput.getCreativeScroll() * 8) % 8) * 18,
- y + 18 + ((i - mGameInput.getCreativeScroll() * 8) / 8) * 18);
- } else {
- spriter.draw(GameItems.getItem(i).getTexture(),
- x + 8 + ((i - mGameInput.getCreativeScroll() * 8) % 8) * 18,
- y + 18 + ((i - mGameInput.getCreativeScroll() * 8) / 8) * 18);
- }
+ spriter.draw(GameItems.getItem(i).getSprite(),
+ x + 8 + ((i - mGameInput.getCreativeScroll() * 8) % 8) * 18,
+ y + 18 + ((i - mGameInput.getCreativeScroll() * 8) / 8) * 18);
}
}
for (int i = 0; i < 9; i++) {
if (mMobsController.getPlayer().inventory[i] > 0) {
- if (GameItems.getItem(mMobsController.getPlayer().inventory[i]).isBlock()) {
- spriter.draw(GameItems.getBlock(GameItems.getBlockIdByItemId(mMobsController.getPlayer().inventory[i])).getTexture(),
- x + 8 + i * 18, y + creative.getRegionHeight() - 24);
- } else {
- spriter.draw(GameItems.getItem(mMobsController.getPlayer().inventory[i]).getTexture(),
- x + 8 + i * 18, y + creative.getRegionHeight() - 24);
- }
+ spriter.draw(GameItems.getItem(mMobsController.getPlayer().inventory[i]).getSprite(),
+ x + 8 + i * 18, y + creative.getRegionHeight() - 24);
}
}
for (int i = 0; i < 9; i++) {
if (mMobsController.getPlayer().inventory[i] > 0) {
- if (GameItems.getItem(mMobsController.getPlayer().inventory[i]).isBlock()) {
- spriter.draw(GameItems.getBlock(GameItems.getBlockIdByItemId(mMobsController.getPlayer().inventory[i])).getTexture(),
- getWidth() / 2 - (float) hotbar.getRegionWidth() / 2 + 3 + i * 20,
- 3);
- } else {
- spriter.draw(GameItems.getItem(mMobsController.getPlayer().inventory[i]).getTexture(),
- getWidth() / 2 - (float) hotbar.getRegionWidth() / 2 + 3 + i * 20,
- 3);
- }
+ spriter.draw(GameItems.getItem(mMobsController.getPlayer().inventory[i]).getSprite(),
+ getWidth() / 2 - (float) hotbar.getRegionWidth() / 2 + 3 + i * 20,
+ 3);
}
}
spriter.draw(hotbarSelector,
drawWorld(true);
player.draw(spriter, player.getX() - getCamX() - player.getWidth() / 2, player.getY() - getCamY(), delta);
- mMobsController.forEach( (mob) -> { drawMob(mob, delta); });
+ mMobsController.getMobs().forEach((mob) -> {
+ drawMob(mob, delta);
+ });
mDropController.forEach(this::drawDrop);
drawWorld(false);
drawGUI();
final boolean hasBackMap = mGameWorld.hasBackAt(x, y);
if (hasForeMap) {
- final Block block = mGameWorld.getForeMapBlock(x, y);
+ final Block block = mGameWorld.getForeMap(x, y);
if (GameItems.isWater(block)) {
result = Color.BLUE;
final int worldX = (int) (mMobsController.getPlayer().getMapX() - size / 2 + x);
final int worldY = (int) (mMobsController.getPlayer().getUpperMapY() - size / 2 + y);
- @Nullable
- final Color color = getMinimapColor(worldX, worldY);
+ @Nullable final Color color = getMinimapColor(worldX, worldY);
if (color != null) {
shaper.setColor(color);
@Override
public void render(float delta) {
- int fps = (int) (1 / delta);
+ int fps = MathUtils.ceil(1 / delta);
updateCameraPosition();
mGameInput.moveCursor(this);
drawString("CurY: " + mGameInput.getCurY(), 0, 40);
drawString("Velocity: " + player.getVelocity(), 0, 50);
drawString("Swim: " + player.swim, 0, 60);
- drawString("Mobs: " + mMobsController.getSize(), 0, 70);
+ drawString("Mobs: " + mMobsController.getMobs().size(), 0, 70);
drawString("Drops: " + mDropController.getSize(), 0, 80);
- drawString("Block: " + GameItems.getBlockKey(mGameWorld.getForeMap(mGameInput.getCurX(), mGameInput.getCurY())), 0, 90);
+ drawString("Block: " + mGameWorld.getForeMap(mGameInput.getCurX(), mGameInput.getCurY()).getParams().getKey(), 0, 90);
drawString("Hand: " + GameItems.getItemKey(mMobsController.getPlayer().inventory[mMobsController.getPlayer().slot]), 0, 100);
drawString("Game mode: " + player.gameMode, 0, 110);
- drawString("Check swim: " + GameItems.isFluid(mGameWorld.getForeMap(player.getMapX(), player.getLowerMapY())), 0, 120);
spriter.end();
}