Archived
Private
Public Access
1
0

Initial commit

This commit is contained in:
2022-09-04 12:45:01 +02:00
commit f4a01d6a69
11601 changed files with 4206660 additions and 0 deletions

View File

@@ -0,0 +1,80 @@
package de.craftix.game;
import de.craftix.game.block.Block;
import de.craftix.game.block.Material;
import de.craftix.game.entity.Player;
import java.awt.*;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
public class World {
private int blocksX;
private int blocksY;
private Block[][] blocks;
private File worldFile;
public World(String worldFile) {
this.worldFile = new File("worlds/" + worldFile);
loadWorldFromFile();
}
public void update() {
for(int row = 0; row < blocksY; row++) {
for(int col = 0; col < blocksX; col++) {
blocks[row][col].update();
}
}
}
public void render(Graphics2D g) {
int blocksRendered = 0;
Player player = Playstate.player;
int startX = player.getCenterX() - GamePanel.width / GamePanel.SCALE / 2;
int startY = player.getCenterY() - GamePanel.height / GamePanel.SCALE / 2;
int endX = player.getCenterX() + GamePanel.width / GamePanel.SCALE / 2 + Game.BLOCKSIZE;
int endY = player.getCenterY() + GamePanel.height / GamePanel.SCALE / 2 + Game.BLOCKSIZE;
for (int row = startY; row <= endY; row += Game.BLOCKSIZE) {
for (int col = startX; col <= endX; col += Game.BLOCKSIZE) {
int blockX = getColTile(col);
int blockY = getRowTile(row);
if (blockX >= 0 && blockY >= 0 && blockX < this.blocksX && blockY < this.blocksY) {
blocks[blockY][blockX].render(g);
blocksRendered++;
}
}
}
g.setColor(Color.WHITE);
g.drawString("Blocks Rendered: " + blocksRendered, 5, 10);
}
private void loadWorldFromFile() {
try {
BufferedReader reader = new BufferedReader(new FileReader(worldFile));
blocksX = Integer.parseInt(reader.readLine());
blocksY = Integer.parseInt(reader.readLine());
blocks = new Block[blocksY][blocksX];
for (int row = 0; row < blocksY; row++) {
String line = reader.readLine();
String[] tokens = line.split(" ");
for (int col = 0; col < blocksX; col++){
int id = Integer.parseInt(tokens[col]);
blocks[row][col] = new Block(Material.values()[id], col * Game.BLOCKSIZE, row * Game.BLOCKSIZE, Game.BLOCKSIZE, Game.BLOCKSIZE);
}
}
reader.close();
} catch (Exception e) {e.printStackTrace();}
}
public int getRowTile(int y) {return y / Game.BLOCKSIZE;}
public int getColTile(int x) {return x / Game.BLOCKSIZE;}
public Block[][] getBlocks() {return blocks;}
public Block getBlock(float x, float y) {return blocks[getRowTile((int)y)][getColTile((int)x)];}
}