Add support for Context global objects

This commit is contained in:
2022-08-30 17:22:09 +02:00
parent 0ec1cb4659
commit 5f90d337cf
2 changed files with 143 additions and 0 deletions

View File

@@ -85,6 +85,46 @@ public interface Context extends Updatable, Renderable, Disposable {
<E extends Event> void removeEventListener(EventType<E> type, Consumer<E> listener);
void putGlobal(String key, Object value);
void putGlobal(String key, boolean value);
void putGlobal(String key, byte value);
void putGlobal(String key, short value);
void putGlobal(String key, int value);
void putGlobal(String key, long value);
void putGlobal(String key, float value);
void putGlobal(String key, double value);
void putGlobal(String key, char value);
Object getGlobal(String key);
<T> T getGlobal(String key, Class<T> type);
boolean getBooleanGlobal(String key);
byte getByteGlobal(String key);
short getShortGlobal(String key);
int getIntGlobal(String key);
long getLongGlobal(String key);
float getFloatGlobal(String key);
double getDoubleGlobal(String key);
char getCharGlobal(String key);
String getStringGlobal(String key);
void init(Screen screen, Input input, Camera camera);
void input(Input input);

View File

@@ -43,13 +43,16 @@ import lombok.extern.slf4j.Slf4j;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.function.Consumer;
@Slf4j
@Builder
public class DefaultContext implements Context {
private final Map<String, Object> globals = new HashMap<>();
@NonNull
private final GameEngine engine;
@@ -286,6 +289,106 @@ public class DefaultContext implements Context {
eventHandler.removeListener(type, listener);
}
@Override
public void putGlobal(String key, Object value) {
globals.put(key, value);
}
@Override
public void putGlobal(String key, boolean value) {
globals.put(key, value);
}
@Override
public void putGlobal(String key, byte value) {
globals.put(key, value);
}
@Override
public void putGlobal(String key, short value) {
globals.put(key, value);
}
@Override
public void putGlobal(String key, int value) {
globals.put(key, value);
}
@Override
public void putGlobal(String key, long value) {
globals.put(key, value);
}
@Override
public void putGlobal(String key, float value) {
globals.put(key, value);
}
@Override
public void putGlobal(String key, double value) {
globals.put(key, value);
}
@Override
public void putGlobal(String key, char value) {
globals.put(key, value);
}
@Override
public Object getGlobal(String key) {
return globals.get(key);
}
@Override
public <T> T getGlobal(String key, Class<T> type) {
return type.cast(globals.get(key));
}
@Override
public boolean getBooleanGlobal(String key) {
return (boolean) globals.get(key);
}
@Override
public byte getByteGlobal(String key) {
return (byte) globals.get(key);
}
@Override
public short getShortGlobal(String key) {
return (short) globals.get(key);
}
@Override
public int getIntGlobal(String key) {
return (int) globals.get(key);
}
@Override
public long getLongGlobal(String key) {
return (long) globals.get(key);
}
@Override
public float getFloatGlobal(String key) {
return (float) globals.get(key);
}
@Override
public double getDoubleGlobal(String key) {
return (double) globals.get(key);
}
@Override
public char getCharGlobal(String key) {
return (char) globals.get(key);
}
@Override
public String getStringGlobal(String key) {
return (String) globals.get(key);
}
@Override
public void input(Input input) {
gameRunner.input(input);