Fixed init of grounds and fixed tests.
This commit is contained in:
parent
3b9422346a
commit
f8353d4354
14 changed files with 178 additions and 96 deletions
7
.idea/misc.xml
generated
7
.idea/misc.xml
generated
|
|
@ -1,5 +1,12 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ExternalStorageConfigurationManager" enabled="true" />
|
||||
<component name="MavenProjectsManager">
|
||||
<option name="originalFiles">
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/../Zutil/pom.xml" />
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_11" project-jdk-name="11" project-jdk-type="JavaSDK" />
|
||||
</project>
|
||||
1
.idea/vcs.xml
generated
1
.idea/vcs.xml
generated
|
|
@ -2,5 +2,6 @@
|
|||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
||||
<mapping directory="$PROJECT_DIR$/../Zutil" vcs="Git" />
|
||||
</component>
|
||||
</project>
|
||||
|
|
@ -1,23 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module external.root.project.path="$MODULE_DIR$/.." external.system.id="GRADLE" type="JAVA_MODULE" version="4">
|
||||
<component name="FacetManager">
|
||||
<facet type="android-gradle" name="Android-Gradle">
|
||||
<configuration>
|
||||
<option name="GRADLE_PROJECT_PATH" value=":android" />
|
||||
<option name="LAST_SUCCESSFUL_SYNC_AGP_VERSION" />
|
||||
<option name="LAST_KNOWN_AGP_VERSION" value="3.5.0" />
|
||||
</configuration>
|
||||
</facet>
|
||||
<facet type="android" name="Android">
|
||||
<configuration>
|
||||
<option name="SELECTED_BUILD_VARIANT" value="debug" />
|
||||
<option name="ASSEMBLE_TASK_NAME" value="assembleDebug" />
|
||||
<option name="COMPILE_JAVA_TASK_NAME" value="compileDebugSources" />
|
||||
<afterSyncTasks>
|
||||
<task>generateDebugSources</task>
|
||||
</afterSyncTasks>
|
||||
<option name="ALLOW_USER_CONFIGURATION" value="false" />
|
||||
</configuration>
|
||||
</facet>
|
||||
</component>
|
||||
</module>
|
||||
|
|
@ -16,7 +16,7 @@ sourceSets {
|
|||
dependencies {
|
||||
api "com.badlogicgames.gdx:gdx:$gdxVersion"
|
||||
|
||||
implementation 'se.koc:zutil:1.0.236'
|
||||
implementation 'se.koc:zutil:1.0.0-SNAPSHOT'
|
||||
|
||||
testImplementation "org.junit.jupiter:junit-jupiter-engine:5.5.2"
|
||||
testImplementation "org.junit.platform:junit-platform-runner:1.5.2"
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
{
|
||||
"1": {
|
||||
"name": "Grass"
|
||||
"0": {
|
||||
"name": "Grass",
|
||||
"texture": "texture/ground/grass.png"
|
||||
}
|
||||
}
|
||||
|
|
@ -17,31 +17,50 @@ public class Block {
|
|||
|
||||
private long offset_x = 0;
|
||||
private long offset_y = 0;
|
||||
private byte[][] height = new byte[BLOCK_SIZE][BLOCK_SIZE];
|
||||
private byte[][] landType = new byte[BLOCK_SIZE][BLOCK_SIZE];
|
||||
private int[][] height = new int[BLOCK_SIZE][BLOCK_SIZE];
|
||||
private int[][] groundType = new int[BLOCK_SIZE][BLOCK_SIZE];
|
||||
|
||||
public Block(long x, long y) {
|
||||
offset_x = x;
|
||||
offset_y = y;
|
||||
}
|
||||
|
||||
public long getBlockStartX(){
|
||||
return offset_x;
|
||||
}
|
||||
|
||||
public long getBlockStartY(){
|
||||
return offset_y;
|
||||
}
|
||||
|
||||
public long getBlockEndX(){
|
||||
return offset_x + BLOCK_SIZE;
|
||||
return offset_x + BLOCK_SIZE - 1;
|
||||
}
|
||||
|
||||
public long getBlockEndY(){
|
||||
return offset_y + BLOCK_SIZE;
|
||||
return offset_y + BLOCK_SIZE - 1;
|
||||
}
|
||||
|
||||
protected int getLocalX(long world_x) {
|
||||
return (int) Math.abs(world_x-offset_x);
|
||||
}
|
||||
protected int getLocalY(long world_y) {
|
||||
return (int) Math.abs(world_y-offset_y);
|
||||
}
|
||||
|
||||
|
||||
public void setHeight(long x, long y, int height) {
|
||||
this.height[getLocalX(x)][getLocalY(y)] = height;
|
||||
}
|
||||
public int getHeight(long x, long y) {
|
||||
return height[(int) Math.abs(x-offset_x)][(int) Math.abs(y-offset_y)];
|
||||
return height[getLocalX(x)][getLocalY(y)];
|
||||
}
|
||||
|
||||
public int getGround(long x, long y) {
|
||||
return landType[(int) Math.abs(x-offset_x)][(int) Math.abs(y-offset_y)];
|
||||
|
||||
public void setGroundType(long x, long y, GroundType groundType) {
|
||||
setGroundType(x, y, groundType.getId());
|
||||
}
|
||||
public void setGroundType(long x, long y, int groundTypeId) {
|
||||
this.groundType[getLocalX(x)][getLocalY(y)] = groundTypeId;
|
||||
}
|
||||
public int getGroundType(long x, long y) {
|
||||
return groundType[getLocalX(x)][getLocalY(y)];
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,16 +3,23 @@ package se.cookery.world;
|
|||
/**
|
||||
* Class representing a ground material type.
|
||||
*/
|
||||
public class GroundType {
|
||||
public final class GroundType {
|
||||
// Variables
|
||||
|
||||
private int id;
|
||||
private String name;
|
||||
private final int id;
|
||||
private final String name;
|
||||
|
||||
|
||||
protected GroundType() {}
|
||||
protected GroundType(int id, String name) {
|
||||
this.id = id;
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public int getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return null;
|
||||
return name;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,28 +0,0 @@
|
|||
package se.cookery.world;
|
||||
|
||||
import com.badlogic.gdx.utils.JsonReader;
|
||||
|
||||
import java.security.InvalidParameterException;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public class GroundTypeFactory {
|
||||
// Constants
|
||||
|
||||
public static final String RESOURCE_GROUND_TYPE = "data/ground_types.json";
|
||||
|
||||
// Variables
|
||||
|
||||
public static Map<Integer, GroundType> groundTypes = new HashMap<>();
|
||||
|
||||
|
||||
public static void initialize() {
|
||||
|
||||
}
|
||||
|
||||
public static GroundType get(int id) {
|
||||
if (0 > id || id > groundTypes.size())
|
||||
throw new InvalidParameterException("Provided id " + id + " is not associated with a ground type.");
|
||||
return groundTypes.get(id);
|
||||
}
|
||||
}
|
||||
58
core/src/se/cookery/world/GroundTypeManager.java
Normal file
58
core/src/se/cookery/world/GroundTypeManager.java
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
package se.cookery.world;
|
||||
|
||||
import com.badlogic.gdx.utils.JsonReader;
|
||||
import zutil.io.file.FileUtil;
|
||||
import zutil.log.LogUtil;
|
||||
import zutil.parser.DataNode;
|
||||
import zutil.parser.json.JSONParser;
|
||||
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.FileReader;
|
||||
import java.io.IOException;
|
||||
import java.security.InvalidParameterException;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.Map;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
public class GroundTypeManager {
|
||||
public static final Logger logger = LogUtil.getLogger();
|
||||
|
||||
// Constants
|
||||
|
||||
public static final String RESOURCE_GROUND_TYPE = "data/ground_types.json";
|
||||
|
||||
// Variables
|
||||
|
||||
public static Map<Integer, GroundType> groundTypes = new HashMap<>();
|
||||
|
||||
|
||||
public static void initialize() throws IOException {
|
||||
FileReader reader = new FileReader(FileUtil.find(RESOURCE_GROUND_TYPE));
|
||||
JSONParser parser = new JSONParser(reader);
|
||||
DataNode json = parser.read();
|
||||
reader.close();
|
||||
|
||||
|
||||
for (Iterator<String> keys=json.keyIterator(); keys.hasNext();) {
|
||||
int id = Integer.parseInt(keys.next());
|
||||
DataNode groundJson = json.get(id);
|
||||
|
||||
registerGroundType(new GroundType(
|
||||
id,
|
||||
groundJson.getString("name")
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
protected static void registerGroundType(GroundType groundType) {
|
||||
logger.finest("Registering new GroundType: id=" + groundType.getId() + ", name=" + groundType.getName());
|
||||
groundTypes.put(groundType.getId(), groundType);
|
||||
}
|
||||
|
||||
public static GroundType get(int id) {
|
||||
if (0 > id || id > groundTypes.size())
|
||||
throw new InvalidParameterException("Provided id " + id + " is not associated with a ground type.");
|
||||
return groundTypes.get(id);
|
||||
}
|
||||
}
|
||||
|
|
@ -2,6 +2,7 @@ package se.cookery.world;
|
|||
|
||||
import se.cookery.world.gen.WorldGenerator;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.TreeMap;
|
||||
|
||||
|
|
@ -28,8 +29,12 @@ public class World {
|
|||
* not exist then a new block will be generated for the requested coordinate
|
||||
*/
|
||||
public Block getBlock(long x, long y) {
|
||||
if (!blockExists(x, y))
|
||||
generator.generateBlock(x, y);
|
||||
return null;
|
||||
if (!blockExists(x, y)) {
|
||||
if (!worldBlocks.containsKey(x))
|
||||
worldBlocks.put(x, new HashMap<>());
|
||||
|
||||
worldBlocks.get(x).put(y, generator.generateBlock(x, y));
|
||||
}
|
||||
return worldBlocks.get(x).get(y);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,6 +6,15 @@ public class GrassLandWorldGenerator implements WorldGenerator {
|
|||
|
||||
@Override
|
||||
public Block generateBlock(long x, long y) {
|
||||
return null;
|
||||
Block b = new Block(x, y);
|
||||
|
||||
for (long i = x; i < x+Block.BLOCK_SIZE; i++) {
|
||||
for (long j = y; j < y+Block.BLOCK_SIZE; j++) {
|
||||
b.setGroundType(i, j, 0);
|
||||
b.setHeight(i, j, 0);
|
||||
}
|
||||
}
|
||||
|
||||
return b;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
37
core/test/se/cookery/world/BlockTest.java
Normal file
37
core/test/se/cookery/world/BlockTest.java
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
package se.cookery.world;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
class BlockTest {
|
||||
|
||||
@Test
|
||||
void getBlockStartX() {
|
||||
Block block = new Block(0, 0);
|
||||
assertEquals(0, block.getBlockStartX());
|
||||
assertEquals(0, block.getBlockStartY());
|
||||
assertEquals(19, block.getBlockEndX());
|
||||
assertEquals(19, block.getBlockEndY());
|
||||
}
|
||||
|
||||
@Test
|
||||
void getBlockStartY() {
|
||||
}
|
||||
|
||||
@Test
|
||||
void getLocalX() {
|
||||
}
|
||||
|
||||
@Test
|
||||
void getLocalY() {
|
||||
}
|
||||
|
||||
@Test
|
||||
void getHeight() {
|
||||
}
|
||||
|
||||
@Test
|
||||
void getGroundType() {
|
||||
}
|
||||
}
|
||||
|
|
@ -1,29 +1,36 @@
|
|||
package se.cookery.world;
|
||||
|
||||
import org.junit.jupiter.api.BeforeAll;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.security.InvalidParameterException;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
class GroundTypeFactoryTest {
|
||||
class GroundTypeManagerTest {
|
||||
|
||||
@BeforeAll
|
||||
public static void initialize() throws IOException {
|
||||
GroundTypeManager.initialize();
|
||||
}
|
||||
|
||||
@Test
|
||||
void invalidIDTest() {
|
||||
assertThrows(InvalidParameterException.class, () -> {
|
||||
GroundTypeFactory.get(-1);
|
||||
GroundTypeManager.get(-1);
|
||||
});
|
||||
|
||||
assertThrows(InvalidParameterException.class, () -> {
|
||||
GroundTypeFactory.get(500);
|
||||
GroundTypeManager.get(500);
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
void get() {
|
||||
GroundType ground = GroundTypeFactory.get(0);
|
||||
GroundType ground = GroundTypeManager.get(0);
|
||||
assertNotNull(ground);
|
||||
assertSame(ground, GroundTypeFactory.get(0));
|
||||
assertSame(ground, GroundTypeManager.get(0));
|
||||
assertEquals("Grass", ground.getName());
|
||||
}
|
||||
}
|
||||
18
ios/ios.iml
18
ios/ios.iml
|
|
@ -1,18 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module external.root.project.path="$MODULE_DIR$/.." external.system.id="GRADLE" type="JAVA_MODULE" version="4">
|
||||
<component name="FacetManager">
|
||||
<facet type="android-gradle" name="Android-Gradle">
|
||||
<configuration>
|
||||
<option name="GRADLE_PROJECT_PATH" value=":ios" />
|
||||
<option name="LAST_SUCCESSFUL_SYNC_AGP_VERSION" />
|
||||
<option name="LAST_KNOWN_AGP_VERSION" />
|
||||
</configuration>
|
||||
</facet>
|
||||
<facet type="java-gradle" name="Java-Gradle">
|
||||
<configuration>
|
||||
<option name="BUILD_FOLDER_PATH" value="$MODULE_DIR$/build" />
|
||||
<option name="BUILDABLE" value="true" />
|
||||
</configuration>
|
||||
</facet>
|
||||
</component>
|
||||
</module>
|
||||
Loading…
Add table
Add a link
Reference in a new issue