diff --git a/api/src/main/java/com/bartlomiejpluta/base/api/context/Context.java b/api/src/main/java/com/bartlomiejpluta/base/api/context/Context.java index 6615f52e..4fbf644b 100644 --- a/api/src/main/java/com/bartlomiejpluta/base/api/context/Context.java +++ b/api/src/main/java/com/bartlomiejpluta/base/api/context/Context.java @@ -85,6 +85,46 @@ public interface Context extends Updatable, Renderable, Disposable { void removeEventListener(EventType type, Consumer 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 getGlobal(String key, Class 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); diff --git a/engine/src/main/java/com/bartlomiejpluta/base/engine/context/model/DefaultContext.java b/engine/src/main/java/com/bartlomiejpluta/base/engine/context/model/DefaultContext.java index d6575f51..6e8ccbbe 100644 --- a/engine/src/main/java/com/bartlomiejpluta/base/engine/context/model/DefaultContext.java +++ b/engine/src/main/java/com/bartlomiejpluta/base/engine/context/model/DefaultContext.java @@ -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 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 getGlobal(String key, Class 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);