diff --git a/.gitignore b/.gitignore index 580e3b816..eb642599c 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,4 @@ Thumbs.db ~$* assets/modules/basegame/demoworld assets/modules/basegame/demoworld.gz +external_resource_packs.zip diff --git a/assets/crt.frag b/assets/crt.frag new file mode 100644 index 000000000..5d372e3ee --- /dev/null +++ b/assets/crt.frag @@ -0,0 +1,44 @@ +#version 120 +#ifdef GL_ES + precision mediump float; +#endif + + +varying vec4 v_color; +varying vec2 v_texCoords; +uniform sampler2D u_texture; + +uniform vec2 resolution; + +uniform vec3 phosphor_colour = vec3(1.3, 0.8567, 0.0); +vec3 scanline_darkening = vec3(0.45, 0.45, 0.45); + +// 0: every odd line will get darkened; 1: every even line will get darkened +uniform float alternative_scanline = 0.0; // 1.0: true + +uniform float blur_blend = 0.3; + +void main(void) { + vec3 color = texture2D(u_texture, v_texCoords).rgb; + vec3 color_pre = texture2D(u_texture, (gl_FragCoord + vec2(-1.0, 0.0)) / resolution).rgb; + vec3 color_next = texture2D(u_texture, (gl_FragCoord + vec2( 1.0, 0.0)) / resolution).rgb; + + color = color * (1.0 - blur_blend) + color_pre * (blur_blend / 2.0) + color_next * (blur_blend / 2.0); + + bool is_scanline = mod(int(gl_FragCoord.y), 2) == int(alternative_scanline); + + float color_luminosity = ( + 3.0 * color.r + + 4.0 * color.g + + 1.0 * color.b + ) / 8.0; + + // out colour + color = vec3(color_luminosity) * phosphor_colour; + + if (is_scanline) { + color = color * scanline_darkening; + } + + gl_FragColor = vec4(color, 1.0); +} \ No newline at end of file diff --git a/assets/loopey.wav b/assets/loopey.wav new file mode 100644 index 000000000..a8de1b073 Binary files /dev/null and b/assets/loopey.wav differ diff --git a/assets/modules/basegame/basegame.groovy b/assets/modules/basegame/basegame_groovy_delete_pending similarity index 100% rename from assets/modules/basegame/basegame.groovy rename to assets/modules/basegame/basegame_groovy_delete_pending diff --git a/assets/modules/basegame/items/testpick.nope b/assets/modules/basegame/items/testpick.nope index 4c7914368..56cb86103 100644 --- a/assets/modules/basegame/items/testpick.nope +++ b/assets/modules/basegame/items/testpick.nope @@ -6,8 +6,8 @@ import net.torvald.point.Point2d import net.torvald.terrarum.Terrarum -import net.torvald.terrarum.gameactors.AVKey -import net.torvald.terrarum.gameactors.ActorWithPhysics +import net.torvald.terrarum.modulebasegame.gameactors.AVKey +import net.torvald.terrarum.modulebasegame.gameactors.ActorWithPhysics import net.torvald.terrarum.itemproperties.Calculate import net.torvald.terrarum.itemproperties.GameItem import net.torvald.terrarum.itemproperties.Material diff --git a/assets/modules/basegame/metadata.properties b/assets/modules/basegame/metadata.properties index 9e591e75c..2d2d30e49 100644 --- a/assets/modules/basegame/metadata.properties +++ b/assets/modules/basegame/metadata.properties @@ -8,7 +8,8 @@ description=The base game author=Terrarum # Name of the entry script -entrypoint=basegame.groovy +# Entry script must inherit net.torvald.terrarum.ModuleEntryPoint +entrypoint=net.torvald.terrarum.modulebasegame.EntryPoint # Release date in YYYY-MM-DD releasedate=2017-07-14 diff --git a/src/com/badlogic/gdx/backends/lwjgl/audio/OpenALAudio.java b/src/com/badlogic/gdx/backends/lwjgl/audio/OpenALAudio.java new file mode 100644 index 000000000..593573ed4 --- /dev/null +++ b/src/com/badlogic/gdx/backends/lwjgl/audio/OpenALAudio.java @@ -0,0 +1,367 @@ +/******************************************************************************* + * Copyright 2011 See AUTHORS file. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + ******************************************************************************/ + +package com.badlogic.gdx.backends.lwjgl.audio; + +import java.nio.FloatBuffer; + +import org.lwjgl.BufferUtils; +import org.lwjgl.LWJGLException; +import org.lwjgl.openal.AL; +import org.lwjgl.openal.AL10; + +import com.badlogic.gdx.Audio; +import com.badlogic.gdx.audio.AudioDevice; +import com.badlogic.gdx.audio.AudioRecorder; +import com.badlogic.gdx.files.FileHandle; +import com.badlogic.gdx.math.MathUtils; +import com.badlogic.gdx.utils.Array; +import com.badlogic.gdx.utils.GdxRuntimeException; +import com.badlogic.gdx.utils.IntArray; +import com.badlogic.gdx.utils.IntMap; +import com.badlogic.gdx.utils.LongMap; +import com.badlogic.gdx.utils.ObjectMap; + +import static org.lwjgl.openal.AL10.*; + +/** @author Nathan Sweet */ +public class OpenALAudio implements Audio { + private final int deviceBufferSize; + private final int deviceBufferCount; + private IntArray idleSources, allSources; + private LongMap soundIdToSource; + private IntMap sourceToSoundId; + private long nextSoundId = 0; + private ObjectMap> extensionToSoundClass = new ObjectMap(); + private ObjectMap> extensionToMusicClass = new ObjectMap(); + private OpenALSound[] recentSounds; + private int mostRecetSound = -1; + + Array music = new Array(false, 1, OpenALMusic.class); + boolean noDevice = false; + + public OpenALAudio () { + this(16, 9, 512); + } + + public OpenALAudio (int simultaneousSources, int deviceBufferCount, int deviceBufferSize) { + this.deviceBufferSize = deviceBufferSize; + this.deviceBufferCount = deviceBufferCount; + + registerSound("ogg", Ogg.Sound.class); + registerMusic("ogg", Ogg.Music.class); + registerSound("wav", Wav.Sound.class); + registerMusic("wav", Wav.Music.class); + registerSound("mp3", Mp3.Sound.class); + registerMusic("mp3", Mp3.Music.class); + + try { + AL.create(); + } catch (LWJGLException ex) { + noDevice = true; + ex.printStackTrace(); + return; + } + + allSources = new IntArray(false, simultaneousSources); + for (int i = 0; i < simultaneousSources; i++) { + int sourceID = alGenSources(); + if (alGetError() != AL_NO_ERROR) break; + allSources.add(sourceID); + } + idleSources = new IntArray(allSources); + soundIdToSource = new LongMap(); + sourceToSoundId = new IntMap(); + + FloatBuffer orientation = (FloatBuffer)BufferUtils.createFloatBuffer(6) + .put(new float[] {0.0f, 0.0f, 1.0f, 0.0f, -1.0f, 0.0f}).flip(); + alListener(AL_ORIENTATION, orientation); + FloatBuffer velocity = (FloatBuffer)BufferUtils.createFloatBuffer(3).put(new float[] {0.0f, 0.0f, 0.0f}).flip(); + alListener(AL_VELOCITY, velocity); + FloatBuffer position = (FloatBuffer)BufferUtils.createFloatBuffer(3).put(new float[] {0.0f, 0.0f, 0.0f}).flip(); + alListener(AL_POSITION, position); + + recentSounds = new OpenALSound[simultaneousSources]; + } + + public void registerSound (String extension, Class soundClass) { + if (extension == null) throw new IllegalArgumentException("extension cannot be null."); + if (soundClass == null) throw new IllegalArgumentException("soundClass cannot be null."); + extensionToSoundClass.put(extension, soundClass); + } + + public void registerMusic (String extension, Class musicClass) { + if (extension == null) throw new IllegalArgumentException("extension cannot be null."); + if (musicClass == null) throw new IllegalArgumentException("musicClass cannot be null."); + extensionToMusicClass.put(extension, musicClass); + } + + public OpenALSound newSound (FileHandle file) { + if (file == null) throw new IllegalArgumentException("file cannot be null."); + Class soundClass = extensionToSoundClass.get(file.extension().toLowerCase()); + if (soundClass == null) throw new GdxRuntimeException("Unknown file extension for sound: " + file); + try { + return soundClass.getConstructor(new Class[] {OpenALAudio.class, FileHandle.class}).newInstance(this, file); + } catch (Exception ex) { + throw new GdxRuntimeException("Error creating sound " + soundClass.getName() + " for file: " + file, ex); + } + } + + public OpenALMusic newMusic (FileHandle file) { + if (file == null) throw new IllegalArgumentException("file cannot be null."); + Class musicClass = extensionToMusicClass.get(file.extension().toLowerCase()); + if (musicClass == null) throw new GdxRuntimeException("Unknown file extension for music: " + file); + try { + return musicClass.getConstructor(new Class[] {OpenALAudio.class, FileHandle.class}).newInstance(this, file); + } catch (Exception ex) { + throw new GdxRuntimeException("Error creating music " + musicClass.getName() + " for file: " + file, ex); + } + } + + int obtainSource (boolean isMusic) { + if (noDevice) return 0; + for (int i = 0, n = idleSources.size; i < n; i++) { + int sourceId = idleSources.get(i); + int state = alGetSourcei(sourceId, AL_SOURCE_STATE); + if (state != AL_PLAYING && state != AL_PAUSED) { + if (isMusic) { + idleSources.removeIndex(i); + } else { + if (sourceToSoundId.containsKey(sourceId)) { + long soundId = sourceToSoundId.get(sourceId); + sourceToSoundId.remove(sourceId); + soundIdToSource.remove(soundId); + } + + long soundId = nextSoundId++; + sourceToSoundId.put(sourceId, soundId); + soundIdToSource.put(soundId, sourceId); + } + alSourceStop(sourceId); + alSourcei(sourceId, AL_BUFFER, 0); + AL10.alSourcef(sourceId, AL10.AL_GAIN, 1); + AL10.alSourcef(sourceId, AL10.AL_PITCH, 1); + AL10.alSource3f(sourceId, AL10.AL_POSITION, 0, 0, 1f); + return sourceId; + } + } + return -1; + } + + void freeSource (int sourceID) { + if (noDevice) return; + alSourceStop(sourceID); + alSourcei(sourceID, AL_BUFFER, 0); + if (sourceToSoundId.containsKey(sourceID)) { + long soundId = sourceToSoundId.remove(sourceID); + soundIdToSource.remove(soundId); + } + idleSources.add(sourceID); + } + + void freeBuffer (int bufferID) { + if (noDevice) return; + for (int i = 0, n = idleSources.size; i < n; i++) { + int sourceID = idleSources.get(i); + if (alGetSourcei(sourceID, AL_BUFFER) == bufferID) { + if (sourceToSoundId.containsKey(sourceID)) { + long soundId = sourceToSoundId.remove(sourceID); + soundIdToSource.remove(soundId); + } + alSourceStop(sourceID); + alSourcei(sourceID, AL_BUFFER, 0); + } + } + } + + void stopSourcesWithBuffer (int bufferID) { + if (noDevice) return; + for (int i = 0, n = idleSources.size; i < n; i++) { + int sourceID = idleSources.get(i); + if (alGetSourcei(sourceID, AL_BUFFER) == bufferID) { + if (sourceToSoundId.containsKey(sourceID)) { + long soundId = sourceToSoundId.remove(sourceID); + soundIdToSource.remove(soundId); + } + alSourceStop(sourceID); + } + } + } + + void pauseSourcesWithBuffer (int bufferID) { + if (noDevice) return; + for (int i = 0, n = idleSources.size; i < n; i++) { + int sourceID = idleSources.get(i); + if (alGetSourcei(sourceID, AL_BUFFER) == bufferID) + alSourcePause(sourceID); + } + } + + void resumeSourcesWithBuffer (int bufferID) { + if (noDevice) return; + for (int i = 0, n = idleSources.size; i < n; i++) { + int sourceID = idleSources.get(i); + if (alGetSourcei(sourceID, AL_BUFFER) == bufferID) { + if (alGetSourcei(sourceID, AL_SOURCE_STATE) == AL_PAUSED) + alSourcePlay(sourceID); + } + } + } + + public void update () { + if (noDevice) return; + for (int i = 0; i < music.size; i++) + music.items[i].update(); + } + + public long getSoundId (int sourceId) { + if (!sourceToSoundId.containsKey(sourceId)) return -1; + return sourceToSoundId.get(sourceId); + } + + public void stopSound (long soundId) { + if (!soundIdToSource.containsKey(soundId)) return; + int sourceId = soundIdToSource.get(soundId); + alSourceStop(sourceId); + } + + public void pauseSound (long soundId) { + if (!soundIdToSource.containsKey(soundId)) return; + int sourceId = soundIdToSource.get(soundId); + alSourcePause(sourceId); + } + + public void resumeSound (long soundId) { + if (!soundIdToSource.containsKey(soundId)) return; + int sourceId = soundIdToSource.get(soundId); + if (alGetSourcei(sourceId, AL_SOURCE_STATE) == AL_PAUSED) + alSourcePlay(sourceId); + } + + public void setSoundGain (long soundId, float volume) { + if (!soundIdToSource.containsKey(soundId)) return; + int sourceId = soundIdToSource.get(soundId); + AL10.alSourcef(sourceId, AL10.AL_GAIN, volume); + } + + public void setSoundLooping (long soundId, boolean looping) { + if (!soundIdToSource.containsKey(soundId)) return; + int sourceId = soundIdToSource.get(soundId); + alSourcei(sourceId, AL10.AL_LOOPING, looping ? AL10.AL_TRUE : AL10.AL_FALSE); + } + + public void setSoundPitch (long soundId, float pitch) { + if (!soundIdToSource.containsKey(soundId)) return; + int sourceId = soundIdToSource.get(soundId); + AL10.alSourcef(sourceId, AL10.AL_PITCH, pitch); + } + + public void setSoundPan (long soundId, float pan, float volume) { + if (!soundIdToSource.containsKey(soundId)) return; + int sourceId = soundIdToSource.get(soundId); + + AL10.alSource3f(sourceId, AL10.AL_POSITION, MathUtils.cos((pan - 1) * MathUtils.PI / 2), 0, + MathUtils.sin((pan + 1) * MathUtils.PI / 2)); + AL10.alSourcef(sourceId, AL10.AL_GAIN, volume); + } + + public void dispose () { + if (noDevice) return; + for (int i = 0, n = allSources.size; i < n; i++) { + int sourceID = allSources.get(i); + int state = alGetSourcei(sourceID, AL_SOURCE_STATE); + if (state != AL_STOPPED) alSourceStop(sourceID); + alDeleteSources(sourceID); + } + + sourceToSoundId.clear(); + soundIdToSource.clear(); + + AL.destroy(); + while (AL.isCreated()) { + try { + Thread.sleep(10); + } catch (InterruptedException e) { + } + } + } + + public AudioDevice newAudioDevice (int sampleRate, final boolean isMono) { + if (noDevice) return new AudioDevice() { + @Override + public void writeSamples (float[] samples, int offset, int numSamples) { + } + + @Override + public void writeSamples (short[] samples, int offset, int numSamples) { + } + + @Override + public void setVolume (float volume) { + } + + @Override + public boolean isMono () { + return isMono; + } + + @Override + public int getLatency () { + return 0; + } + + @Override + public void dispose () { + } + }; + return new OpenALAudioDevice(this, sampleRate, isMono, deviceBufferSize, deviceBufferCount); + } + + public AudioRecorder newAudioRecorder (int samplingRate, boolean isMono) { + if (noDevice) return new AudioRecorder() { + @Override + public void read (short[] samples, int offset, int numSamples) { + } + + @Override + public void dispose () { + } + }; + return new JavaSoundAudioRecorder(samplingRate, isMono); + } + + /** Retains a list of the most recently played sounds and stops the sound played least recently if necessary for a new sound to + * play */ + protected void retain (OpenALSound sound, boolean stop) { + // Move the pointer ahead and wrap + mostRecetSound++; + mostRecetSound %= recentSounds.length; + + if (stop) { + // Stop the least recent sound (the one we are about to bump off the buffer) + if (recentSounds[mostRecetSound] != null) recentSounds[mostRecetSound].stop(); + } + + recentSounds[mostRecetSound] = sound; + } + + /** Removes the disposed sound from the least recently played list */ + public void forget (OpenALSound sound) { + for (int i = 0; i < recentSounds.length; i++) { + if (recentSounds[i] == sound) recentSounds[i] = null; + } + } +} diff --git a/src/net/torvald/aa/KDHeapifiedTree.kt b/src/net/torvald/aa/KDHeapifiedTree.kt index 7a3388a79..4ca4313ce 100644 --- a/src/net/torvald/aa/KDHeapifiedTree.kt +++ b/src/net/torvald/aa/KDHeapifiedTree.kt @@ -1,10 +1,8 @@ package net.torvald.aa import net.torvald.point.Point2d -import net.torvald.terrarum.gameactors.Actor -import net.torvald.terrarum.gameactors.ActorWithPhysics -import net.torvald.terrarum.gameactors.sqr -import java.util.* +import net.torvald.terrarum.modulebasegame.gameactors.ActorWithPhysics +import net.torvald.terrarum.sqr /** * k-d Tree that uses binary heap instead of binary tree to improve data locality diff --git a/src/net/torvald/colourutil/CIEXYZUtil.kt b/src/net/torvald/colourutil/CIEXYZUtil.kt index 33e19155d..5cb9bf227 100644 --- a/src/net/torvald/colourutil/CIEXYZUtil.kt +++ b/src/net/torvald/colourutil/CIEXYZUtil.kt @@ -7,6 +7,34 @@ import com.badlogic.gdx.graphics.Color * Created by minjaesong on 2017-01-12. */ object CIEXYZUtil { + + /** + * 0..255 -> 0.0..1.0 + */ + private val rgbLineariseLUT = Array(257, { + val step = minOf(it, 255) / 255f + + if (step > 0.04045f) + ((step + 0.055f) / 1.055f).powerOf(2.4f) + else step / 12.92f + }) + + /** + * 0..255 -> 0.0..1.0 + */ + private val rgbUnLineariseLUT = Array(257, { + val step = minOf(it, 255) / 255f + + if (step > 0.0031308f) + 1.055f * step.powerOf(1f / 2.4f) - 0.055f + else + step * 12.92f + }) + + + + + fun Color.brighterXYZ(scale: Float): Color { val xyz = this.toXYZ() xyz.X = xyz.X.times(1f + scale).clampOne() @@ -37,8 +65,8 @@ object CIEXYZUtil { fun Color.toXYZ(): CIEXYZ = RGB(this).toXYZ() - fun RGB.toXYZ(): CIEXYZ { - val newR = if (r > 0.04045f) + fun RGB.linearise(): RGB { + /*val newR = if (r > 0.04045f) ((r + 0.055f) / 1.055f).powerOf(2.4f) else r / 12.92f val newG = if (g > 0.04045f) @@ -48,32 +76,78 @@ object CIEXYZUtil { ((b + 0.055f) / 1.055f).powerOf(2.4f) else b / 12.92f - val x = 0.4124564f * newR + 0.3575761f * newG + 0.1804375f * newB - val y = 0.2126729f * newR + 0.7151522f * newG + 0.0721750f * newB - val z = 0.0193339f * newR + 0.1191920f * newG + 0.9503041f * newB + + return RGB(newR, newG, newB, alpha)*/ + + val out = floatArrayOf(0f, 0f, 0f) + for (i in 0..2) { + val value = when (i) { + 0 -> this.r + 1 -> this.g + 2 -> this.b + else -> throw Exception("Fuck you") + } + val step = value.clampOne() * 255f + val intStep = step.toInt() + + out[i] = interpolateLinear(step - intStep, rgbLineariseLUT[intStep], rgbLineariseLUT[intStep + 1]) + } + + + return RGB(out[0], out[1], out[2], alpha) + } + + fun RGB.unLinearise(): RGB { + /*val newR = if (r > 0.0031308f) + 1.055f * r.powerOf(1f / 2.4f) - 0.055f + else + r * 12.92f + val newG = if (g > 0.0031308f) + 1.055f * g.powerOf(1f / 2.4f) - 0.055f + else + g * 12.92f + val newB = if (b > 0.0031308f) + 1.055f * b.powerOf(1f / 2.4f) - 0.055f + else + b * 12.92f + + + return RGB(newR, newG, newB, alpha)*/ + + val out = floatArrayOf(0f, 0f, 0f) + for (i in 0..2) { + val value = when (i) { + 0 -> this.r + 1 -> this.g + 2 -> this.b + else -> throw Exception("Fuck you") + } + val step = value.clampOne() * 255f + val intStep = step.toInt() + + out[i] = interpolateLinear(step - intStep, rgbUnLineariseLUT[intStep], rgbUnLineariseLUT[intStep + 1]) + } + + + return RGB(out[0], out[1], out[2], alpha) + } + + fun RGB.toXYZ(): CIEXYZ { + val new = this.linearise() + + val x = 0.4124564f * new.r + 0.3575761f * new.g + 0.1804375f * new.b + val y = 0.2126729f * new.r + 0.7151522f * new.g + 0.0721750f * new.b + val z = 0.0193339f * new.r + 0.1191920f * new.g + 0.9503041f * new.b return CIEXYZ(x, y, z, alpha) } fun CIEXYZ.toRGB(): RGB { - var r = 3.2404542f * X - 1.5371385f * Y - 0.4985314f * Z - var g = -0.9692660f * X + 1.8760108f * Y + 0.0415560f * Z - var b = 0.0556434f * X - 0.2040259f * Y + 1.0572252f * Z + val r = 3.2404542f * X - 1.5371385f * Y - 0.4985314f * Z + val g = -0.9692660f * X + 1.8760108f * Y + 0.0415560f * Z + val b = 0.0556434f * X - 0.2040259f * Y + 1.0572252f * Z - if (r > 0.0031308f) - r = 1.055f * r.powerOf(1f / 2.4f) - 0.055f - else - r *= 12.92f - if (g > 0.0031308f) - g = 1.055f * g.powerOf(1f / 2.4f) - 0.055f - else - g *= 12.92f - if (b > 0.0031308f) - b = 1.055f * b.powerOf(1f / 2.4f) - 0.055f - else - b *= 12.92f - - return RGB(r, g, b, alpha) + return RGB(r, g, b, alpha).unLinearise() } fun CIEXYZ.toColor(): Color { @@ -94,8 +168,22 @@ object CIEXYZUtil { private fun Float.powerOf(exp: Float) = FastMath.pow(this, exp) private fun Float.clampOne() = if (this > 1f) 1f else if (this < 0f) 0f else this + + private fun interpolateLinear(scale: Float, startValue: Float, endValue: Float): Float { + if (startValue == endValue) { + return startValue + } + if (scale <= 0f) { + return startValue + } + return if (scale >= 1f) { + endValue + } + else (1f - scale) * startValue + scale * endValue + } } + /** Range: X, Y, Z: 0 - 1.0+ (One-based-plus) */ data class CIEXYZ(var X: Float = 0f, var Y: Float = 0f, var Z: Float = 0f, var alpha: Float = 1f) { init { diff --git a/src/net/torvald/point/Point2d.kt b/src/net/torvald/point/Point2d.kt index e273923e9..ceb2cee9d 100644 --- a/src/net/torvald/point/Point2d.kt +++ b/src/net/torvald/point/Point2d.kt @@ -1,7 +1,7 @@ package net.torvald.point -import net.torvald.terrarum.gameactors.sqr -import net.torvald.terrarum.gameactors.sqrt +import net.torvald.terrarum.sqr +import net.torvald.terrarum.sqrt import org.dyn4j.geometry.Vector2 /** diff --git a/src/net/torvald/random/TileableValueNoise.kt b/src/net/torvald/random/TileableValueNoise.kt index 29cc69b82..65b99b5ad 100644 --- a/src/net/torvald/random/TileableValueNoise.kt +++ b/src/net/torvald/random/TileableValueNoise.kt @@ -1,9 +1,7 @@ package net.torvald.random import com.jme3.math.FastMath -import net.torvald.terrarum.gameactors.floorInt -import net.torvald.terrarum.gameactors.round -import net.torvald.terrarum.gameactors.roundInt +import net.torvald.terrarum.floorInt import net.torvald.terrarum.gameworld.fmod import java.util.* diff --git a/src/net/torvald/spriteanimation/SpriteAnimation.kt b/src/net/torvald/spriteanimation/SpriteAnimation.kt index 20b9a7a6b..0306573ae 100644 --- a/src/net/torvald/spriteanimation/SpriteAnimation.kt +++ b/src/net/torvald/spriteanimation/SpriteAnimation.kt @@ -7,7 +7,7 @@ package net.torvald.spriteanimation import com.badlogic.gdx.graphics.Color import com.badlogic.gdx.graphics.g2d.SpriteBatch import com.jme3.math.FastMath -import net.torvald.terrarum.gameactors.ActorWithPhysics +import net.torvald.terrarum.modulebasegame.gameactors.ActorWithPhysics import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack class SpriteAnimation(val parentActor: ActorWithPhysics) { diff --git a/src/net/torvald/terrarum/TerrarumAppLoader.java b/src/net/torvald/terrarum/AppLoader.java similarity index 93% rename from src/net/torvald/terrarum/TerrarumAppLoader.java rename to src/net/torvald/terrarum/AppLoader.java index df7a6d15d..8d5c4e58b 100644 --- a/src/net/torvald/terrarum/TerrarumAppLoader.java +++ b/src/net/torvald/terrarum/AppLoader.java @@ -17,17 +17,20 @@ import java.util.Arrays; import java.util.Random; /** + * The framework's Application Loader + * + * * Created by minjaesong on 2017-08-01. */ -public class TerrarumAppLoader implements ApplicationListener { +public class AppLoader implements ApplicationListener { - private static TerrarumAppLoader INSTANCE = null; + private static AppLoader INSTANCE = null; - private TerrarumAppLoader() { } + private AppLoader() { } - public static TerrarumAppLoader getINSTANCE() { + public static AppLoader getINSTANCE() { if (INSTANCE == null) { - INSTANCE = new TerrarumAppLoader(); + INSTANCE = new AppLoader(); } return INSTANCE; } @@ -100,7 +103,7 @@ public class TerrarumAppLoader implements ApplicationListener { appConfig.foregroundFPS = 9999; appConfig.title = GAME_NAME; - new LwjglApplication(new TerrarumAppLoader(), appConfig); + new LwjglApplication(new AppLoader(), appConfig); } @@ -198,7 +201,6 @@ public class TerrarumAppLoader implements ApplicationListener { loadTimer += Gdx.graphics.getRawDeltaTime(); if (loadTimer >= showupTime) { - Terrarum.INSTANCE.setAppLoader(this); Terrarum.INSTANCE.setScreenW(appConfig.width); Terrarum.INSTANCE.setScreenH(appConfig.height); setScreen(Terrarum.INSTANCE); @@ -255,12 +257,16 @@ public class TerrarumAppLoader implements ApplicationListener { } public void setScreen(Screen screen) { + System.out.println("[AppLoader] Changing screen to " + screen.getClass().getCanonicalName()); + if (this.screen != null) this.screen.hide(); this.screen = screen; if (this.screen != null) { this.screen.show(); this.screen.resize(Gdx.graphics.getWidth(), Gdx.graphics.getHeight()); } + + System.out.println("[AppLoader] Screen transisiton complete: " + this.screen.getClass().getCanonicalName()); } private void setCameraPosition(float newX, float newY) { diff --git a/src/net/torvald/terrarum/ColorLimiterTest.kt b/src/net/torvald/terrarum/ColorLimiterTest.kt index 6e450675f..1cea702df 100644 --- a/src/net/torvald/terrarum/ColorLimiterTest.kt +++ b/src/net/torvald/terrarum/ColorLimiterTest.kt @@ -10,8 +10,6 @@ import com.badlogic.gdx.graphics.Texture import com.badlogic.gdx.graphics.g2d.SpriteBatch import com.badlogic.gdx.graphics.glutils.ShaderProgram import com.badlogic.gdx.graphics.glutils.ShapeRenderer -import com.badlogic.gdx.math.Matrix4 -import net.torvald.terrarum.gameactors.sqrt import net.torvald.terrarumsansbitmap.gdx.GameFontBase /** diff --git a/src/net/torvald/terrarum/DefaultConfig.kt b/src/net/torvald/terrarum/DefaultConfig.kt index 47d53fd52..fe95c93c5 100644 --- a/src/net/torvald/terrarum/DefaultConfig.kt +++ b/src/net/torvald/terrarum/DefaultConfig.kt @@ -18,7 +18,7 @@ object DefaultConfig { jsonObject.addProperty("imtooyoungtodie", false) // no perma-death - jsonObject.addProperty("language", TerrarumAppLoader.getSysLang()) + jsonObject.addProperty("language", AppLoader.getSysLang()) jsonObject.addProperty("notificationshowuptime", 6500) jsonObject.addProperty("multithread", true) // experimental! diff --git a/src/net/torvald/terrarum/ErrorDisp.kt b/src/net/torvald/terrarum/ErrorDisp.kt index 139f98cba..146f266b3 100644 --- a/src/net/torvald/terrarum/ErrorDisp.kt +++ b/src/net/torvald/terrarum/ErrorDisp.kt @@ -10,8 +10,8 @@ import net.torvald.terrarum.langpack.Lang object ErrorDisp : Screen { - private val logoTex = TerrarumAppLoader.logo - private val font = TerrarumAppLoader.fontGame + private val logoTex = AppLoader.logo + private val font = AppLoader.fontGame var title = Lang["ERROR_GENERIC_TEXT"] @@ -26,7 +26,7 @@ object ErrorDisp : Screen { private val titleTextLeftMargin = 8 - private val titleText = "${TerrarumAppLoader.GAME_NAME} ${TerrarumAppLoader.getVERSION_STRING()}" + private val titleText = "${AppLoader.GAME_NAME} ${AppLoader.getVERSION_STRING()}" override fun show() { diff --git a/src/net/torvald/terrarum/FuckingWorldRenderer.kt b/src/net/torvald/terrarum/FuckingWorldRenderer.kt index 27559484d..3c12bfab6 100644 --- a/src/net/torvald/terrarum/FuckingWorldRenderer.kt +++ b/src/net/torvald/terrarum/FuckingWorldRenderer.kt @@ -8,16 +8,17 @@ import com.badlogic.gdx.graphics.g2d.SpriteBatch import com.badlogic.gdx.graphics.g2d.TextureRegion import com.badlogic.gdx.graphics.glutils.FrameBuffer import com.jme3.math.FastMath -import net.torvald.random.HQRNG import net.torvald.terrarum.blockproperties.BlockCodex -import net.torvald.terrarum.gameactors.* +import net.torvald.terrarum.gameactors.Actor import net.torvald.terrarum.gameactors.ai.ActorAI import net.torvald.terrarum.gameworld.GameWorld import net.torvald.terrarum.gameworld.fmod import net.torvald.terrarum.langpack.Lang +import net.torvald.terrarum.modulebasegame.Ingame +import net.torvald.terrarum.modulebasegame.gameactors.* import net.torvald.terrarum.serialise.ReadLayerData import net.torvald.terrarum.ui.UICanvas -import net.torvald.terrarum.ui.UITitleRemoConRoot +import net.torvald.terrarum.modulebasegame.ui.UITitleRemoConRoot import net.torvald.terrarum.weather.WeatherMixer import net.torvald.terrarum.worlddrawer.* import java.io.FileInputStream @@ -52,7 +53,9 @@ class FuckingWorldRenderer(val batch: SpriteBatch) : Screen { private var firstTime = true - override fun update(actor: HumanoidNPC, delta: Float) { + override fun update(actor: Actor, delta: Float) { + val actor = actor as HumanoidNPC + // fuck val avSpeed = 1.0 // FIXME camera goes faster when FPS is high actor.actorValue[AVKey.SPEED] = avSpeed @@ -336,7 +339,7 @@ class FuckingWorldRenderer(val batch: SpriteBatch) : Screen { batch.color = Color.LIGHT_GRAY val COPYTING = arrayOf( - TerrarumAppLoader.COPYRIGHT_DATE_NAME, + AppLoader.COPYRIGHT_DATE_NAME, Lang["COPYRIGHT_GNU_GPL_3"] ) diff --git a/src/net/torvald/terrarum/GlslTilingTest.kt b/src/net/torvald/terrarum/GlslTilingTest.kt index 442dbdf83..94783e213 100644 --- a/src/net/torvald/terrarum/GlslTilingTest.kt +++ b/src/net/torvald/terrarum/GlslTilingTest.kt @@ -8,10 +8,6 @@ import com.badlogic.gdx.graphics.* import com.badlogic.gdx.graphics.g2d.SpriteBatch import com.badlogic.gdx.graphics.glutils.ShaderProgram import com.jme3.math.FastMath -import net.torvald.terrarum.gameactors.ceilInt -import net.torvald.terrarum.gameactors.floor -import net.torvald.terrarum.gameactors.floorInt -import net.torvald.terrarum.worlddrawer.BlocksDrawer import net.torvald.terrarumsansbitmap.gdx.GameFontBase /** @@ -64,7 +60,7 @@ object GlslTilingTest : ApplicationAdapter() { //ErrorDisp.title = "Error in shader ${shader.vertexShaderSource}" //ErrorDisp.text = shader.log.split('\n') - //TerrarumAppLoader.getINSTANCE().setScreen(ErrorDisp) + //AppLoader.getINSTANCE().setScreen(ErrorDisp) System.exit(1) } @@ -172,4 +168,3 @@ object GlslTilingTest : ApplicationAdapter() { } } -private fun Float.ceil(): Float = FastMath.ceil(this).toFloat() diff --git a/src/net/torvald/terrarum/GsonSerialisable.kt b/src/net/torvald/terrarum/GsonSerialisable.kt new file mode 100644 index 000000000..e1d1a458f --- /dev/null +++ b/src/net/torvald/terrarum/GsonSerialisable.kt @@ -0,0 +1,13 @@ +package net.torvald.terrarum + +import com.google.gson.JsonObject + +/** + * Created by minjaesong on 2018-05-18. + */ +interface GsonSerialisable { + + fun read(gson: JsonObject) + fun write(targetGson: JsonObject) + +} \ No newline at end of file diff --git a/src/net/torvald/terrarum/KVHashMap.kt b/src/net/torvald/terrarum/KVHashMap.kt index 4a5d08832..62d4616f4 100644 --- a/src/net/torvald/terrarum/KVHashMap.kt +++ b/src/net/torvald/terrarum/KVHashMap.kt @@ -1,9 +1,11 @@ package net.torvald.terrarum +import com.badlogic.gdx.utils.Json +import com.badlogic.gdx.utils.JsonValue +import com.google.gson.Gson +import com.google.gson.JsonElement +import com.google.gson.JsonObject import com.google.gson.JsonPrimitive -import net.torvald.terrarum.gameactors.Actor -import java.util.* -import java.util.function.Consumer import kotlin.collections.HashMap typealias ItemValue = KVHashMap @@ -12,7 +14,7 @@ typealias GameConfig = KVHashMap /** * Created by minjaesong on 2015-12-30. */ -open class KVHashMap { +open class KVHashMap : GsonSerialisable { constructor() { hashMap = HashMap() @@ -114,4 +116,15 @@ open class KVHashMap { return KVHashMap(cloneOfMap) } + override fun read(gson: JsonObject) { + } + + override fun write(targetGson: JsonObject) { + hashMap.forEach { t, u -> + if (u is JsonPrimitive) + targetGson.add(t, u) + else + targetGson.add(t, Gson().toJsonTree(u)) + } + } } \ No newline at end of file diff --git a/src/net/torvald/terrarum/LoadScreen.kt b/src/net/torvald/terrarum/LoadScreen.kt index e55703872..9b0132042 100644 --- a/src/net/torvald/terrarum/LoadScreen.kt +++ b/src/net/torvald/terrarum/LoadScreen.kt @@ -6,8 +6,8 @@ import com.badlogic.gdx.graphics.* import com.badlogic.gdx.graphics.glutils.FrameBuffer import com.jme3.math.FastMath import net.torvald.dataclass.HistoryArray -import net.torvald.terrarum.gameactors.floor import net.torvald.terrarum.langpack.Lang +import net.torvald.terrarum.modulebasegame.Ingame /** * Created by minjaesong on 2017-07-13. diff --git a/src/net/torvald/terrarum/ModMgr.kt b/src/net/torvald/terrarum/ModMgr.kt index d020a777b..139ac60c1 100644 --- a/src/net/torvald/terrarum/ModMgr.kt +++ b/src/net/torvald/terrarum/ModMgr.kt @@ -8,6 +8,7 @@ import net.torvald.terrarum.itemproperties.ItemCodex import net.torvald.terrarum.blockproperties.BlockCodex import net.torvald.terrarum.itemproperties.ItemID import net.torvald.terrarum.langpack.Lang +import net.torvald.terrarum.modulebasegame.EntryPoint import net.torvald.terrarum.utils.JsonFetcher import org.apache.commons.csv.CSVFormat import org.apache.commons.csv.CSVParser @@ -34,9 +35,6 @@ import javax.script.Invocable */ object ModMgr { - val groovyEngine = ScriptEngineManager().getEngineByExtension("groovy")!! - val groovyInvocable = groovyEngine as Invocable - val metaFilename = "metadata.properties" val defaultConfigFilename = "default.json" @@ -104,11 +102,11 @@ object ModMgr { // run entry script in entry point if (entryPoint.isNotBlank()) { - val extension = entryPoint.split('.').last() - val engine = ScriptEngineManager().getEngineByExtension(extension)!! - val invocable = engine as Invocable - engine.eval(FileReader(getFile(moduleName, entryPoint))) - invocable.invokeFunction("invoke", moduleName) + val newClass = Class.forName(entryPoint) + val newClassConstructor = newClass.getConstructor(/* no args defined */) + val newClassInstance = newClassConstructor.newInstance(/* no args defined */) + + (newClassInstance as ModuleEntryPoint).invoke() } diff --git a/src/net/torvald/terrarum/ModuleEntryPoint.kt b/src/net/torvald/terrarum/ModuleEntryPoint.kt new file mode 100644 index 000000000..7a3e7e1ff --- /dev/null +++ b/src/net/torvald/terrarum/ModuleEntryPoint.kt @@ -0,0 +1,8 @@ +package net.torvald.terrarum + +/** + * Created by minjaesong on 2018-06-21. + */ +abstract class ModuleEntryPoint { + abstract fun invoke() +} \ No newline at end of file diff --git a/src/net/torvald/terrarum/Terrarum.kt b/src/net/torvald/terrarum/Terrarum.kt index a4ba736c6..974061645 100644 --- a/src/net/torvald/terrarum/Terrarum.kt +++ b/src/net/torvald/terrarum/Terrarum.kt @@ -11,14 +11,11 @@ import com.badlogic.gdx.graphics.glutils.ShapeRenderer import com.badlogic.gdx.utils.GdxRuntimeException import com.google.gson.JsonArray import com.google.gson.JsonPrimitive -import net.torvald.terrarum.gameactors.ActorWithPhysics -import net.torvald.terrarum.gameactors.floorInt +import com.jme3.math.FastMath +import net.torvald.terrarum.gameactors.Actor import net.torvald.terrarum.imagefont.TinyAlphNum -import net.torvald.terrarum.imagefont.Watch7SegMain -import net.torvald.terrarum.imagefont.WatchDotAlph import net.torvald.terrarum.itemproperties.ItemCodex -import net.torvald.terrarum.ui.ItemSlotImageBuilder -import net.torvald.terrarum.ui.MessageWindow +import net.torvald.terrarum.ui.ConsoleWindow import net.torvald.terrarum.utils.JsonFetcher import net.torvald.terrarum.utils.JsonWriter import net.torvald.terrarum.worlddrawer.FeaturesDrawer @@ -29,6 +26,14 @@ import org.lwjgl.BufferUtils import org.lwjgl.input.Controllers import java.io.File import java.io.IOException +import java.util.ArrayList +import java.util.concurrent.locks.Lock +import java.util.concurrent.locks.ReentrantLock +import javax.swing.JOptionPane + + + +typealias RGBA8888 = Int /** @@ -36,38 +41,8 @@ import java.io.IOException * * LibGDX Version Created by minjaesong on 2017-06-15. */ - -/*fun main(args: Array) { - Terrarum // invoke - - val config = LwjglApplicationConfiguration() - config.vSyncEnabled = Terrarum.USE_VSYNC - config.resizable = true - config.width = 1072 - config.height = 742 - config.backgroundFPS = RENDER_FPS - config.foregroundFPS = RENDER_FPS - config.title = GAME_NAME - - Terrarum.screenW = config.width - Terrarum.screenH = config.height - - println("[TerrarumKt] usevsync = ${Terrarum.USE_VSYNC}") - - // the game must run on same speed regardless of the display FPS; - // "Terrarum.TARGET_INTERNAL_FPS" denotes "execute as if FPS was set to this value" - - LwjglApplication(Terrarum, config) -}*/ - - - -typealias RGBA8888 = Int - object Terrarum : Screen { - lateinit var appLoader: TerrarumAppLoader - var screenW = 0 var screenH = 0 @@ -120,7 +95,7 @@ object Terrarum : Screen { var previousScreen: Screen? = null // to be used with temporary states like StateMonitorCheck - var ingame: Ingame? = null + var ingame: IngameInstance? = null private val gameConfig = GameConfig() val OSName = System.getProperty("os.name") @@ -145,7 +120,7 @@ object Terrarum : Screen { - val fontGame: GameFontBase = TerrarumAppLoader.fontGame + val fontGame: GameFontBase = AppLoader.fontGame lateinit var fontSmallNumbers: TinyAlphNum var joypadLabelStart: Char = 0xE000.toChar() // lateinit @@ -202,7 +177,7 @@ object Terrarum : Screen { private lateinit var configDir: String - const val NAME = TerrarumAppLoader.GAME_NAME + const val NAME = AppLoader.GAME_NAME val systemArch = System.getProperty("os.arch") @@ -234,7 +209,7 @@ object Terrarum : Screen { init { - println("$NAME version ${TerrarumAppLoader.getVERSION_STRING()}") + println("$NAME version ${AppLoader.getVERSION_STRING()}") getDefaultDirectory() @@ -418,16 +393,18 @@ object Terrarum : Screen { - TerrarumAppLoader.GAME_LOCALE = getConfigString("language") - println("[Terrarum] locale = ${TerrarumAppLoader.GAME_LOCALE}") + AppLoader.GAME_LOCALE = getConfigString("language") + println("[Terrarum] locale = ${AppLoader.GAME_LOCALE}") - ModMgr // invoke Module Manager, which will also invoke BlockCodex - ItemCodex // invoke Item Codex + ModMgr // invoke Module Manager + println("[Terrarum] all modules loaded successfully") + + // jump right into the ingame /*ingame = Ingame(batch) @@ -439,18 +416,18 @@ object Terrarum : Screen { // title screen - appLoader.setScreen(TitleScreen(batch)) + AppLoader.getINSTANCE().setScreen(TitleScreen(batch)) //appLoader.setScreen(FuckingWorldRenderer(batch)) } internal fun setScreen(screen: Screen) { - appLoader.setScreen(screen) + AppLoader.getINSTANCE().setScreen(screen) } override fun render(delta: Float) { - //appLoader.screen.render(deltaTime) + AppLoader.getINSTANCE().screen.render(deltaTime) //GLOBAL_RENDER_TIMER += 1 - // moved to TerrarumAppLoader; global event must be place at the apploader to prevent ACCIDENTAL forgot-to-update type of bug. + // moved to AppLoader; global event must be place at the apploader to prevent ACCIDENTAL forgot-to-update type of bug. } override fun pause() { @@ -467,13 +444,6 @@ object Terrarum : Screen { fontSmallNumbers.dispose() - ItemSlotImageBuilder.dispose() - WatchDotAlph.dispose() - Watch7SegMain.dispose() - WatchDotAlph.dispose() - - MessageWindow.SEGMENT_BLACK.dispose() - MessageWindow.SEGMENT_WHITE.dispose() //dispose any other resources used in this level @@ -715,6 +685,159 @@ object Terrarum : Screen { get() = Gdx.input.y } +open class IngameInstance(val batch: SpriteBatch) : Screen { + + var screenZoom = 1.0f + val ZOOM_MAXIMUM = 4.0f + val ZOOM_MINIMUM = 0.5f + + lateinit var consoleHandler: ConsoleWindow + + val ACTORCONTAINER_INITIAL_SIZE = 64 + val actorContainer = ArrayList(ACTORCONTAINER_INITIAL_SIZE) + val actorContainerInactive = ArrayList(ACTORCONTAINER_INITIAL_SIZE) + + override fun hide() { + } + + override fun show() { + } + + override fun render(delta: Float) { + } + + override fun pause() { + } + + override fun resume() { + } + + override fun resize(width: Int, height: Int) { + } + + override fun dispose() { + } + + fun getActorByID(ID: Int): Actor { + if (actorContainer.size == 0 && actorContainerInactive.size == 0) + throw IllegalArgumentException("Actor with ID $ID does not exist.") + + var index = actorContainer.binarySearch(ID) + if (index < 0) { + index = actorContainerInactive.binarySearch(ID) + + if (index < 0) { + JOptionPane.showMessageDialog( + null, + "Actor with ID $ID does not exist.", + null, JOptionPane.ERROR_MESSAGE + ) + throw IllegalArgumentException("Actor with ID $ID does not exist.") + } + else + return actorContainerInactive[index] + } + else + return actorContainer[index] + } + + fun ArrayList<*>.binarySearch(actor: Actor) = this.binarySearch(actor.referenceID!!) + + fun ArrayList<*>.binarySearch(ID: Int): Int { + // code from collections/Collections.kt + var low = 0 + var high = this.size - 1 + + while (low <= high) { + val mid = (low + high).ushr(1) // safe from overflows + + val midVal = get(mid)!! + + if (ID > midVal.hashCode()) + low = mid + 1 + else if (ID < midVal.hashCode()) + high = mid - 1 + else + return mid // key found + } + return -(low + 1) // key not found + } + + open fun removeActor(ID: Int) = removeActor(getActorByID(ID)) + /** + * get index of the actor and delete by the index. + * we can do this as the list is guaranteed to be sorted + * and only contains unique values. + * + * Any values behind the index will be automatically pushed to front. + * This is how remove function of [java.util.ArrayList] is defined. + */ + open fun removeActor(actor: Actor) { + val indexToDelete = actorContainer.binarySearch(actor.referenceID!!) + if (indexToDelete >= 0) { + actorContainer.removeAt(indexToDelete) + } + } + + open /** + * Check for duplicates, append actor and sort the list + */ + fun addNewActor(actor: Actor) { + if (theGameHasActor(actor.referenceID!!)) { + throw Error("The actor $actor already exists in the game") + } + else { + actorContainer.add(actor) + insertionSortLastElem(actorContainer) // we can do this as we are only adding single actor + } + } + + fun isActive(ID: Int): Boolean = + if (actorContainer.size == 0) + false + else + actorContainer.binarySearch(ID) >= 0 + + fun isInactive(ID: Int): Boolean = + if (actorContainerInactive.size == 0) + false + else + actorContainerInactive.binarySearch(ID) >= 0 + + /** + * actorContainer extensions + */ + fun theGameHasActor(actor: Actor?) = if (actor == null) false else theGameHasActor(actor.referenceID!!) + + fun theGameHasActor(ID: Int): Boolean = + isActive(ID) || isInactive(ID) + + + + + fun insertionSortLastElem(arr: ArrayList) { + lock(ReentrantLock()) { + var j = arr.lastIndex - 1 + val x = arr.last() + while (j >= 0 && arr[j] > x) { + arr[j + 1] = arr[j] + j -= 1 + } + arr[j + 1] = x + } + } + + inline fun lock(lock: Lock, body: () -> Unit) { + lock.lock() + try { + body() + } + finally { + lock.unlock() + } + } +} + inline fun SpriteBatch.inUse(action: (SpriteBatch) -> Unit) { this.begin() action(this) @@ -852,3 +975,56 @@ val ccX = GameFontBase.toColorCode(0x853F) val ccK = GameFontBase.toColorCode(0x888F) +typealias Second = Float + +inline fun Int.sqr(): Int = this * this +inline fun Double.floorInt() = Math.floor(this).toInt() +inline fun Float.floorInt() = FastMath.floor(this) +inline fun Float.floor() = FastMath.floor(this).toFloat() +inline fun Double.ceilInt() = Math.ceil(this).toInt() +inline fun Float.ceil(): Float = FastMath.ceil(this).toFloat() +inline fun Float.ceilInt() = FastMath.ceil(this) +inline fun Double.round() = Math.round(this).toDouble() +inline fun Double.floor() = Math.floor(this) +inline fun Double.ceil() = this.floor() + 1.0 +inline fun Double.roundInt(): Int = Math.round(this).toInt() +inline fun Float.roundInt(): Int = Math.round(this) +inline fun Double.abs() = Math.abs(this) +inline fun Double.sqr() = this * this +inline fun Double.sqrt() = Math.sqrt(this) +inline fun Float.sqrt() = FastMath.sqrt(this) +inline fun Int.abs() = if (this < 0) -this else this +fun Double.bipolarClamp(limit: Double) = + if (this > 0 && this > limit) limit + else if (this < 0 && this < -limit) -limit + else this + +fun absMax(left: Double, right: Double): Double { + if (left > 0 && right > 0) + if (left > right) return left + else return right + else if (left < 0 && right < 0) + if (left < right) return left + else return right + else { + val absL = left.abs() + val absR = right.abs() + if (absL > absR) return left + else return right + } +} + +fun Double.magnSqr() = if (this >= 0.0) this.sqr() else -this.sqr() +fun Double.sign() = if (this > 0.0) 1.0 else if (this < 0.0) -1.0 else 0.0 +fun interpolateLinear(scale: Double, startValue: Double, endValue: Double): Double { + if (startValue == endValue) { + return startValue + } + if (scale <= 0.0) { + return startValue + } + if (scale >= 1.0) { + return endValue + } + return (1.0 - scale) * startValue + scale * endValue +} \ No newline at end of file diff --git a/src/net/torvald/terrarum/TitleScreen.kt b/src/net/torvald/terrarum/TitleScreen.kt index 408a53a20..d83754386 100644 --- a/src/net/torvald/terrarum/TitleScreen.kt +++ b/src/net/torvald/terrarum/TitleScreen.kt @@ -10,14 +10,16 @@ import com.badlogic.gdx.graphics.glutils.FrameBuffer import com.jme3.math.FastMath import net.torvald.random.HQRNG import net.torvald.terrarum.blockproperties.BlockCodex -import net.torvald.terrarum.gameactors.* +import net.torvald.terrarum.gameactors.Actor import net.torvald.terrarum.gameactors.ai.ActorAI import net.torvald.terrarum.gameworld.GameWorld import net.torvald.terrarum.gameworld.fmod import net.torvald.terrarum.langpack.Lang +import net.torvald.terrarum.modulebasegame.Ingame +import net.torvald.terrarum.modulebasegame.gameactors.* import net.torvald.terrarum.serialise.ReadLayerData import net.torvald.terrarum.ui.UICanvas -import net.torvald.terrarum.ui.UITitleRemoConRoot +import net.torvald.terrarum.modulebasegame.ui.UITitleRemoConRoot import net.torvald.terrarum.weather.WeatherMixer import net.torvald.terrarum.worlddrawer.* import java.io.FileInputStream @@ -52,7 +54,9 @@ class TitleScreen(val batch: SpriteBatch) : Screen { private var firstTime = true - override fun update(actor: HumanoidNPC, delta: Float) { + override fun update(actor: Actor, delta: Float) { + val actor = actor as HumanoidNPC + // fuck val avSpeed = 1.0 // FIXME camera goes faster when FPS is high actor.actorValue[AVKey.SPEED] = avSpeed @@ -116,6 +120,9 @@ class TitleScreen(val batch: SpriteBatch) : Screen { private val TILE_SIZEF = TILE_SIZE.toFloat() private fun loadThingsWhileIntroIsVisible() { + println("[TitleScreen] Intro pre-load") + + demoWorld = ReadLayerData(FileInputStream(ModMgr.getFile("basegame", "demoworld"))) @@ -131,7 +138,7 @@ class TitleScreen(val batch: SpriteBatch) : Screen { }) - cameraPlayer = object : HumanoidNPC(demoWorld, cameraAI, GameDate(1, 1), usePhysics = false) { + cameraPlayer = object : HumanoidNPC(demoWorld, cameraAI, GameDate(1, 1), usePhysics = false, forceAssignRefID = Player.PLAYER_REF_ID) { init { setHitboxDimension(2, 2, 0, 0) hitbox.setPosition( @@ -165,6 +172,8 @@ class TitleScreen(val batch: SpriteBatch) : Screen { } override fun show() { + println("[TitleScreen] atrniartsientsarinoetsar") + initViewPort(Terrarum.WIDTH, Terrarum.HEIGHT) logo = TextureRegion(Texture(Gdx.files.internal("assets/graphics/logo_placeholder.tga"))) @@ -340,7 +349,7 @@ class TitleScreen(val batch: SpriteBatch) : Screen { batch.color = Color.LIGHT_GRAY val COPYTING = arrayOf( - TerrarumAppLoader.COPYRIGHT_DATE_NAME, + AppLoader.COPYRIGHT_DATE_NAME, Lang["COPYRIGHT_GNU_GPL_3"] ) diff --git a/src/net/torvald/terrarum/UIItemInventoryCatBar.kt b/src/net/torvald/terrarum/UIItemInventoryCatBar.kt index 5f100cf6b..3e171629a 100644 --- a/src/net/torvald/terrarum/UIItemInventoryCatBar.kt +++ b/src/net/torvald/terrarum/UIItemInventoryCatBar.kt @@ -5,9 +5,7 @@ import com.badlogic.gdx.graphics.Color import com.badlogic.gdx.graphics.Pixmap import com.badlogic.gdx.graphics.Texture import com.badlogic.gdx.graphics.g2d.SpriteBatch -import net.torvald.terrarum.gameactors.Second -import net.torvald.terrarum.gameactors.floorInt -import net.torvald.terrarum.gameactors.roundInt +import net.torvald.terrarum.modulebasegame.ui.UIInventoryFull import net.torvald.terrarum.ui.* /** diff --git a/src/net/torvald/terrarum/UIItemInventoryElem.kt b/src/net/torvald/terrarum/UIItemInventoryElem.kt index 9de67897d..5fd09eb10 100644 --- a/src/net/torvald/terrarum/UIItemInventoryElem.kt +++ b/src/net/torvald/terrarum/UIItemInventoryElem.kt @@ -7,6 +7,9 @@ import com.badlogic.gdx.graphics.g2d.SpriteBatch import com.badlogic.gdx.graphics.g2d.TextureRegion import net.torvald.colourutil.CIELabUtil.darkerLab import net.torvald.terrarum.itemproperties.GameItem +import net.torvald.terrarum.modulebasegame.Ingame +import net.torvald.terrarum.modulebasegame.ui.UIInventoryFull +import net.torvald.terrarum.modulebasegame.ui.UIItemInventoryCellBase import net.torvald.terrarum.ui.* /*** @@ -134,7 +137,7 @@ class UIItemInventoryElem( override fun keyDown(keycode: Int): Boolean { if (item != null && Terrarum.ingame != null && keycode in Input.Keys.NUM_1..Input.Keys.NUM_0) { - val inventory = Terrarum.ingame!!.player.inventory + val inventory = (Terrarum.ingame!! as Ingame).player.inventory val slot = if (keycode == Input.Keys.NUM_0) 9 else keycode - Input.Keys.NUM_1 val currentSlotItem = inventory?.getQuickBar(slot) @@ -164,7 +167,7 @@ class UIItemInventoryElem( // equip da shit val itemEquipSlot = item!!.equipPosition - val player = Terrarum.ingame!!.player + val player = (Terrarum.ingame!! as Ingame).player if (item != player.inventory.itemEquipped.get(itemEquipSlot)) { // if this item is unequipped, equip it player.equipItem(item!!) diff --git a/src/net/torvald/terrarum/UIItemInventoryElemSimple.kt b/src/net/torvald/terrarum/UIItemInventoryElemSimple.kt index 1c95cb619..71ec85b6f 100644 --- a/src/net/torvald/terrarum/UIItemInventoryElemSimple.kt +++ b/src/net/torvald/terrarum/UIItemInventoryElemSimple.kt @@ -6,6 +6,9 @@ import com.badlogic.gdx.graphics.Color import com.badlogic.gdx.graphics.g2d.SpriteBatch import com.badlogic.gdx.graphics.g2d.TextureRegion import net.torvald.terrarum.itemproperties.GameItem +import net.torvald.terrarum.modulebasegame.Ingame +import net.torvald.terrarum.modulebasegame.ui.UIInventoryFull +import net.torvald.terrarum.modulebasegame.ui.UIItemInventoryCellBase import net.torvald.terrarum.ui.* /** @@ -122,7 +125,7 @@ class UIItemInventoryElemSimple( println("keydown elemgrid") - val inventory = Terrarum.ingame!!.player.inventory + val inventory = (Terrarum.ingame!! as Ingame).player.inventory val slot = if (keycode == Input.Keys.NUM_0) 9 else keycode - Input.Keys.NUM_1 val currentSlotItem = inventory.getQuickBar(slot) @@ -154,7 +157,7 @@ class UIItemInventoryElemSimple( // equip da shit val itemEquipSlot = item!!.equipPosition - val player = Terrarum.ingame!!.player + val player = (Terrarum.ingame!! as Ingame).player if (item != player.inventory.itemEquipped.get(itemEquipSlot)) { // if this item is unequipped, equip it player.equipItem(item!!) diff --git a/src/net/torvald/terrarum/audio/SpatialAudioMixer.kt b/src/net/torvald/terrarum/audio/SpatialAudioMixer.kt index d78c8423c..2fcf661a3 100644 --- a/src/net/torvald/terrarum/audio/SpatialAudioMixer.kt +++ b/src/net/torvald/terrarum/audio/SpatialAudioMixer.kt @@ -6,19 +6,22 @@ package net.torvald.terrarum.audio * * Channels and their mapping: * - * Notation: (front/side/rear.subwoofer/top-front) + * Notation: (front/rear.subwoofer/top-front) * Plugs: G-Front (green), K-Rear (black), Y-Centre/Subwoofer (yellow), E-Side (grey) * e.g. E-RC,NULL means GREY jack outputs REAR-CENTRE to its left and nothing to its right channel. * * = Headphones: Binaural - * = Stereo ---------- (2/0/0.0/0): G-FL,FR - * = Quadraphonic ---- (2/0/2.0/0): G-FL,FR; K-RL,RR - * = 4.0 ------------- (3/0/1.0/0): G-FL,FR; Y-FC,RC - * = 5.1 ------------- (3/0/2.1/0): G-FL,FR; Y-FC,SW; K-RL,RR - * = 6.1 ------------- (3/0/3.1/0): G-FL,FR; Y-FC,SW; K-RL,RR, E-RC,RC - * = 7.1 ------------- (3/2/2.1/0): G-FL,FR; Y-FC,SW; K-RL,RR, E-SL,SR - * = Dolby Atmos 5.1.2 (3/0/2.1/2): G-FL,FR; Y-FC,SW; K-RL,RR, E-TL,TR + * = Stereo ---------- (2/0.0/0): G-FL,FR + * = Quadraphonic ---- (2/2.0/0): G-FL,FR; K-RL,RR + * = 4.0 ------------- (3/1.0/0): G-FL,FR; Y-FC,RC + * = 5.1 ------------- (3/2.1/0): G-FL,FR; Y-FC,SW; K-RL,RR + * = 6.1 ------------- (3/3.1/0): G-FL,FR; Y-FC,SW; K-RL,RR, E-RC,RC + * = 7.1 ------------- (3/4.1/0): G-FL,FR; Y-FC,SW; K-RL,RR, E-SL,SR + * = Dolby Atmos*5.1.2 (3/2.1/2): G-FL,FR; Y-FC,SW; K-RL,RR, E-TL,TR * + * = Extra options: + * = No centre speaker (5.1 and above) + * = No subwoofer (5.1 and above) * * Channel uses: * @@ -31,10 +34,115 @@ package net.torvald.terrarum.audio * * If both side and rear speakers are not there, play weather/ambient to the stereo speakers but NOT TO THE CENTRE * * For non-existent speakers, use channel phantoming * - * Note: 5.1.2 does NOT output Dolby-compatible signals. + * Note: 5.1.2 does NOT output Dolby-compatible signals. It's just a customised 8 channel setup. + * + * @see spatialAudioMixMat.xlsx */ object SpatialAudioMixer { - const val centreQuotient = 0.7071f + const val PANNING_THREE = 0.708f + const val PANNING_FOUR_POINT_FIVE = 0.596f + const val PANNING_SIX = 0.5f + + fun getPanning(coefficient: Float, panningLaw: Float = PANNING_FOUR_POINT_FIVE): Float { + val k = panningLaw.toDouble() + val a = 2.0 - 2.0 * k + val b = 4.0 * k - 1.0 + + return (coefficient*a*a + coefficient*b).toFloat() + } + + + const val PRESET_QUADRAPHONIC = """ +FL=1,0,0,0,0,0,0,0 +FC=0.5,0.5,0,0,0,0,0,0 +FR=0,1,0,0,0,0,0,0 +RL=0,0,0,0,0.75,0.25,0,0 +RR=0,0,0,0,0.25,0.75,0,0 +SL=0.25,0,0,0,0.75,0,0,0 +RC=0,0,0,0,0.5,0.5,0,0 +SR=0,0.25,0,0,0,0.75,0,0 +AMB=0.25,0.25,0,0,0.25,0.25,0,0 +LFE=0,0,0,0,0.5,0.5,0,0 +""" + const val PRESET_FIVE_POINT_ONE = """ +FL=1,0,0,0,0,0,0,0 +FC=0,0,1,0,0,0,0,0 +FR=0,1,0,0,0,0,0,0 +RL=0,0,0,0,0.75,0.25,0,0 +RR=0,0,0,0,0.25,0.75,0,0 +SL=0.25,0,0,0,0.75,0,0,0 +RC=0,0,0,0,0.5,0.5,0,0 +SR=0,0.25,0,0,0,0.75,0,0 +AMB=0.25,0.25,0,0,0.25,0.25,0,0 +LFE=0,0,0,1,0,0,0,0 +""" + + const val PRESET_SEVEN_POINT_ONE = """ +FL=1,0,0,0,0,0,0,0 +FC=0,0,1,0,0,0,0,0 +FR=0,1,0,0,0,0,0,0 +SL=0,0,0,0,0,0,1,0 +SR=0,0,0,0,0,0,0,1 +RL=0,0,0,0,1,0,0,0 +RC=0,0,0,0,0.5,0.5,0,0 +RR=0,0,0,0,0,1,0,0 +AMB=0.125,0.125,0,0,0.125,0.125,0.25,0.25 +LFE=0,0,0,1,0,0,0,0 +""" + + const val PRESET_FIVE_POINT_ONE_POINT_TWO = """ +FL=1,0,0,0,0,0,0,0 +FC=0,0,1,0,0,0,0,0 +FR=0,1,0,0,0,0,0,0 +RL=0,0,0,0,0.75,0.25,0,0 +RR=0,0,0,0,0.25,0.75,0,0 +SL=0.25,0,0,0,0.75,0,0,0 +RC=0,0,0,0,0.5,0.5,0,0 +RR=0,0.25,0,0,0,0.75,0,0 +AMB=0,0,0,0,0.125,0.125,0.375,0.375 +LFE=0,0,0,1,0,0,0,0 +""" + + const val PRESET_FOUR_POINT_ONE = """ +FL=0.75,0.25,0,0,0,0,0,0 +FC=0,0,1,0,0,0,0,0 +FR=0.25,0.75,0,0,0,0,0,0 +SL=1,0,0,0,0,0,0,0 +SR=0,1,0,0,0,0,0,0 +RL=0.5,0,0,0,0.5,0,0,0 +RC=0,0,0,0,1,0,0,0 +RR=0,0.5,0,0,0.5,0,0,0 +AMB=0.25,0.25,0,0,0.5,0,0,0 +LFE=0,0,0,1,0,0,0,0 +""" + + const val PRESET_SIX_POINT_ONE = """ +FL=1,0,0,0,0,0,0,0 +FC=0,0,1,0,0,0,0,0 +FR=0,1,0,0,0,0,0,0 +RL=0,0,0,0,0.75,0.25,0,0 +RR=0,0,0,0,0.25,0.75,0,0 +SL=0.25,0,0,0,0.75,0,0,0 +RC=0,0,0,0,0,0,1,0 +SR=0,0.25,0,0,0,0.75,0,0 +AMB=0.25,0.25,0,0,0.25,0.25,0,0 +LFE=0,0,0,1,0,0,0,0 +""" + + const val PRESET_STEREO = """ +FL=0.75,0.25,0,0,0,0,0,0 +FC=0.5,0.5,0,0,0,0,0,0 +FR=0.25,0.75,0,0,0,0,0,0 +SL=1,0,0,0,0,0,0,0 +SR=0,1,0,0,0,0,0,0 +RL=1,0,0,0,0,0,0,0 +RC=0.5,0.5,0,0,0,0,0,0 +RR=0,1,0,0,0,0,0,0 +AMB=0.5,0.5,0,0,0,0,0,0 +LFE=0.5,0.5,0,0,0,0,0,0 +""" + + } \ No newline at end of file diff --git a/src/net/torvald/terrarum/audio/surroundpanner/SurroundPannerTest.kt b/src/net/torvald/terrarum/audio/surroundpanner/SurroundPannerTest.kt new file mode 100644 index 000000000..22a3cf90a --- /dev/null +++ b/src/net/torvald/terrarum/audio/surroundpanner/SurroundPannerTest.kt @@ -0,0 +1,174 @@ +package net.torvald.terrarum.audio.surroundpanner + +import com.badlogic.gdx.Game +import com.badlogic.gdx.Gdx +import com.badlogic.gdx.audio.Sound +import com.badlogic.gdx.backends.lwjgl.LwjglApplication +import com.badlogic.gdx.backends.lwjgl.LwjglApplicationConfiguration +import com.badlogic.gdx.files.FileHandle +import java.awt.BorderLayout +import javax.swing.* + +/** + * Created by minjaesong on 2018-05-18. + */ +class SurroundPannerTest : JFrame() { + + val mixerPanel = JPanel(BorderLayout()) // LR slider + + val mixerPanSlider = JSlider(JSlider.HORIZONTAL, -32768, 32767, 0) + + init { + val sliderPanel = JPanel(); sliderPanel.add(mixerPanSlider) + mixerPanel.add(sliderPanel, BorderLayout.CENTER) + + this.add(mixerPanel, BorderLayout.CENTER) + this.defaultCloseOperation = EXIT_ON_CLOSE + this.isVisible = true + this.setSize(400, 600) + } + +} + +class AudioPlayerSlave : Game() { + + lateinit var audioSample: FileHandle + lateinit var gdxSound: Sound + var soundID = 0L + lateinit var surroundPanner: SurroundPannerTest + + + override fun create() { + audioSample = Gdx.files.internal("assets/loopey.wav") + gdxSound = Gdx.audio.newSound(audioSample) + surroundPanner = SurroundPannerTest() + soundID = gdxSound.loop() + } + + override fun render() { + gdxSound.setPan(soundID, surroundPanner.mixerPanSlider.value.toFloat() / 32768f, 0.5f) + } + + override fun dispose() { + super.dispose() + gdxSound.dispose() + } + +} + +fun main(args: Array) { + val appConfig = LwjglApplicationConfiguration() + appConfig.vSyncEnabled = false + appConfig.resizable = true + appConfig.width = 256 + appConfig.height = 256 + appConfig.backgroundFPS = 20 + appConfig.foregroundFPS = 20 + + LwjglApplication(AudioPlayerSlave(), appConfig) +} + + + +/* +package net.torvald.terrarum.audio.surroundpanner + +import com.badlogic.gdx.Game +import com.badlogic.gdx.Gdx +import com.badlogic.gdx.audio.Sound +import com.badlogic.gdx.backends.lwjgl.LwjglApplication +import com.badlogic.gdx.backends.lwjgl.LwjglApplicationConfiguration +import com.badlogic.gdx.files.FileHandle +import net.torvald.terrarum.audio.SpatialAudioMixer +import java.awt.BorderLayout +import java.io.StringReader +import java.util.* +import javax.swing.* + +/** + * Created by minjaesong on 2018-05-18. + */ +class SurroundPannerTest(val panningMatrix: String) : JFrame() { + + val panningSettings = Properties() + + val mixerPanel = JPanel(BorderLayout()) // LR slider, options (pan-rear threshold: Double, panning law: Double) + val matricesPanel = JPanel(BorderLayout()) // show and edit panning matrix + + + val mixerPanSlider = JSlider(JSlider.HORIZONTAL, -32768, 32767, 0) + val mixerPanRearSelector = JSpinner(SpinnerNumberModel(6667, 0, 10000, 1)) + val mixerPanLawSelector = JSpinner(SpinnerListModel(arrayOf(0.0, -3.0, -4.5, -6.0))) + + init { + val sliderPanel = JPanel(); sliderPanel.add(mixerPanSlider) + sliderPanel.isVisible = true + val panRearPanel = JPanel(); panRearPanel.add(JLabel("Pan-rear threshold")); panRearPanel.add(mixerPanRearSelector) + panRearPanel.isVisible = true + val panLawPanel = JPanel(); panLawPanel.add(JLabel("Panning law")); panLawPanel.add(mixerPanLawSelector) + panLawPanel.isVisible = true + val optionsPanel = JPanel(); optionsPanel.add(panRearPanel); optionsPanel.add(panLawPanel) + optionsPanel.isVisible = true + mixerPanel.add(sliderPanel, BorderLayout.CENTER) + mixerPanel.add(optionsPanel, BorderLayout.SOUTH) + + + + + panningSettings.load(StringReader(panningMatrix)) + + + this.add(mixerPanel, BorderLayout.CENTER) + this.add(matricesPanel, BorderLayout.SOUTH) + this.defaultCloseOperation = EXIT_ON_CLOSE + this.isVisible = true + this.setSize(400, 600) + } + +} + +class AudioPlayerSlave : Game() { + + lateinit var audioSample: FileHandle + lateinit var gdxSound: Sound + var soundID = 0L + lateinit var surroundPanner: SurroundPannerTest + + + override fun create() { + audioSample = Gdx.files.internal("assets/loopey.wav") + gdxSound = Gdx.audio.newSound(audioSample) + + + + + + surroundPanner = SurroundPannerTest(SpatialAudioMixer.PRESET_QUADRAPHONIC) + + + soundID = gdxSound.loop() + } + + override fun render() { + gdxSound.setPan(soundID, surroundPanner.mixerPanSlider.value.toFloat() / 32768f, 1f) + } + + override fun dispose() { + super.dispose() + gdxSound.dispose() + } + +} + +fun main(args: Array) { + val appConfig = LwjglApplicationConfiguration() + appConfig.vSyncEnabled = false + appConfig.resizable = true + appConfig.width = 256 + appConfig.height = 256 + appConfig.backgroundFPS = 20 + appConfig.foregroundFPS = 20 + + LwjglApplication(AudioPlayerSlave(), appConfig) +} + */ \ No newline at end of file diff --git a/src/net/torvald/terrarum/blockproperties/BlockPropUtil.kt b/src/net/torvald/terrarum/blockproperties/BlockPropUtil.kt index 5a33ee899..c87e73792 100644 --- a/src/net/torvald/terrarum/blockproperties/BlockPropUtil.kt +++ b/src/net/torvald/terrarum/blockproperties/BlockPropUtil.kt @@ -5,8 +5,9 @@ import com.badlogic.gdx.graphics.Color import com.jme3.math.FastMath import net.torvald.random.HQRNG import net.torvald.terrarum.Terrarum -import net.torvald.terrarum.gameactors.Second -import net.torvald.terrarum.gameworld.WorldTime +import net.torvald.terrarum.Second +import net.torvald.terrarum.modulebasegame.Ingame +import net.torvald.terrarum.modulebasegame.gameworld.WorldTime import net.torvald.terrarum.worlddrawer.LightmapRenderer import net.torvald.terrarum.weather.WeatherMixer @@ -20,7 +21,7 @@ object BlockPropUtil { var breathFuncX = 0f val breathRange = 0.02f - val breathCycleDuration: Second = 2f + val breathCycleDuration: Second = 2f var pulsateFuncX = 0f val pulsateRange = 0.034f @@ -94,7 +95,7 @@ object BlockPropUtil { fun getDynamicLumFunc(baseLum: Color, type: Int): Color { return when (type) { 1 -> getTorchFlicker(baseLum) - 2 -> Terrarum.ingame!!.world.globalLight.cpy().mul(LightmapRenderer.DIV_FLOAT) // current global light + 2 -> (Terrarum.ingame!! as Ingame).world.globalLight.cpy().mul(LightmapRenderer.DIV_FLOAT) // current global light 3 -> WeatherMixer.getGlobalLightOfTime(WorldTime.DAY_LENGTH / 2).cpy().mul(LightmapRenderer.DIV_FLOAT) // daylight at noon 4 -> getSlowBreath(baseLum) 5 -> getPulsate(baseLum) diff --git a/src/net/torvald/terrarum/blockstats/BlockStats.kt b/src/net/torvald/terrarum/blockstats/BlockStats.kt index e3f0ffe81..df32eb5ac 100644 --- a/src/net/torvald/terrarum/blockstats/BlockStats.kt +++ b/src/net/torvald/terrarum/blockstats/BlockStats.kt @@ -6,6 +6,7 @@ import net.torvald.terrarum.worlddrawer.BlocksDrawer import net.torvald.terrarum.worlddrawer.FeaturesDrawer import net.torvald.terrarum.Terrarum import com.jme3.math.FastMath +import net.torvald.terrarum.modulebasegame.Ingame import java.util.Arrays @@ -26,8 +27,8 @@ object BlockStats { // Get stats on no-zoomed screen area. In other words, will behave as if screen zoom were 1.0 // no matter how the screen is zoomed. - val map = Terrarum.ingame!!.world - val player = Terrarum.ingame!!.player + val map = (Terrarum.ingame!! as Ingame).world + val player = (Terrarum.ingame!! as Ingame).player val renderWidth = FastMath.ceil(Terrarum.WIDTH.toFloat()) val renderHeight = FastMath.ceil(Terrarum.HEIGHT.toFloat()) diff --git a/src/net/torvald/terrarum/console/Authenticator.kt b/src/net/torvald/terrarum/console/Authenticator.kt index 03c4653d3..b15736e66 100644 --- a/src/net/torvald/terrarum/console/Authenticator.kt +++ b/src/net/torvald/terrarum/console/Authenticator.kt @@ -39,7 +39,7 @@ internal object Authenticator : ConsoleCommand { Echo(msg) println("[Authenticator] " + msg) a = !a - (Terrarum.ingame!!.consoleHandler as ConsoleWindow).reset() + Terrarum.ingame!!.consoleHandler.reset() } else { printUsage() // thou shalt not pass! diff --git a/src/net/torvald/terrarum/console/CheatWarnTest.kt b/src/net/torvald/terrarum/console/CheatWarnTest.kt deleted file mode 100644 index 07dd7ac34..000000000 --- a/src/net/torvald/terrarum/console/CheatWarnTest.kt +++ /dev/null @@ -1,13 +0,0 @@ -package net.torvald.terrarum.console - -import net.torvald.terrarum.Terrarum - -object CheatWarnTest : ConsoleCommand { - - override fun execute(args: Array) { - Terrarum.ingame?.uiCheatMotherfuckerNootNoot?.setAsOpen() - } - - override fun printUsage() { - } -} \ No newline at end of file diff --git a/src/net/torvald/terrarum/console/CommandDict.kt b/src/net/torvald/terrarum/console/CommandDict.kt index 0b34f1191..f39f2a25c 100644 --- a/src/net/torvald/terrarum/console/CommandDict.kt +++ b/src/net/torvald/terrarum/console/CommandDict.kt @@ -1,5 +1,6 @@ package net.torvald.terrarum.console +import net.torvald.terrarum.modulebasegame.console.* import java.util.HashMap /** diff --git a/src/net/torvald/terrarum/console/QuitApp.kt b/src/net/torvald/terrarum/console/QuitApp.kt index 5ba8e9857..a4be55bff 100644 --- a/src/net/torvald/terrarum/console/QuitApp.kt +++ b/src/net/torvald/terrarum/console/QuitApp.kt @@ -1,5 +1,7 @@ package net.torvald.terrarum.console +import net.torvald.terrarum.console.ConsoleCommand + /** * Created by minjaesong on 2016-01-15. */ diff --git a/src/net/torvald/terrarum/console/Seed.kt b/src/net/torvald/terrarum/console/Seed.kt deleted file mode 100644 index bfe8c0193..000000000 --- a/src/net/torvald/terrarum/console/Seed.kt +++ /dev/null @@ -1,20 +0,0 @@ -package net.torvald.terrarum.console - -import net.torvald.terrarum.* -import net.torvald.terrarum.Terrarum - -/** - * Created by minjaesong on 2016-06-16. - */ -internal object Seed : ConsoleCommand { - - override fun execute(args: Array) { - Echo("Map$ccW: $ccG${Terrarum.ingame!!.world.generatorSeed}") - println("[seed] Map$ccW: $ccG${Terrarum.ingame!!.world.generatorSeed}") - // TODO display randomiser seed - } - - override fun printUsage() { - Echo("prints out the generator seed of the current game.") - } -} \ No newline at end of file diff --git a/src/net/torvald/terrarum/console/SetGlobalLightOverride.kt b/src/net/torvald/terrarum/console/SetGlobalLightOverride.kt index 460b09a20..c7676171d 100644 --- a/src/net/torvald/terrarum/console/SetGlobalLightOverride.kt +++ b/src/net/torvald/terrarum/console/SetGlobalLightOverride.kt @@ -3,6 +3,7 @@ package net.torvald.terrarum.console import com.badlogic.gdx.graphics.Color import net.torvald.terrarum.worlddrawer.LightmapRenderer import net.torvald.terrarum.Terrarum +import net.torvald.terrarum.modulebasegame.Ingame /** * Created by minjaesong on 2016-02-17. @@ -22,7 +23,7 @@ internal object SetGlobalLightOverride : ConsoleCommand { val GL = Color(r, g, b, a) lightOverride = true - Terrarum.ingame!!.world.globalLight = GL + (Terrarum.ingame!! as Ingame).world.globalLight = GL } catch (e: NumberFormatException) { Echo("Wrong number input.") diff --git a/src/net/torvald/terrarum/console/SetLocale.kt b/src/net/torvald/terrarum/console/SetLocale.kt index 995dcb67e..7d1bfce2e 100644 --- a/src/net/torvald/terrarum/console/SetLocale.kt +++ b/src/net/torvald/terrarum/console/SetLocale.kt @@ -1,8 +1,7 @@ package net.torvald.terrarum.console import net.torvald.terrarum.langpack.Lang -import net.torvald.terrarum.Terrarum -import net.torvald.terrarum.TerrarumAppLoader +import net.torvald.terrarum.AppLoader import java.io.IOException @@ -12,14 +11,14 @@ import java.io.IOException internal object SetLocale : ConsoleCommand { override fun execute(args: Array) { if (args.size == 2) { - val prevLocale = TerrarumAppLoader.GAME_LOCALE - TerrarumAppLoader.GAME_LOCALE = args[1] + val prevLocale = AppLoader.GAME_LOCALE + AppLoader.GAME_LOCALE = args[1] try { - Echo("Set locale to '" + TerrarumAppLoader.GAME_LOCALE + "'.") + Echo("Set locale to '" + AppLoader.GAME_LOCALE + "'.") } catch (e: IOException) { Echo("could not read lang file.") - TerrarumAppLoader.GAME_LOCALE = prevLocale + AppLoader.GAME_LOCALE = prevLocale } } diff --git a/src/net/torvald/terrarum/console/Version.kt b/src/net/torvald/terrarum/console/Version.kt index fe27c31cf..fd919c964 100644 --- a/src/net/torvald/terrarum/console/Version.kt +++ b/src/net/torvald/terrarum/console/Version.kt @@ -2,7 +2,7 @@ package net.torvald.terrarum.console import com.badlogic.gdx.Gdx import net.torvald.terrarum.Terrarum -import net.torvald.terrarum.TerrarumAppLoader +import net.torvald.terrarum.AppLoader import net.torvald.terrarum.langpack.Lang /** @@ -11,7 +11,7 @@ import net.torvald.terrarum.langpack.Lang internal object Version : ConsoleCommand { override fun execute(args: Array) { - Echo("${Terrarum.NAME} ${TerrarumAppLoader.getVERSION_STRING()}") + Echo("${Terrarum.NAME} ${AppLoader.getVERSION_STRING()}") Echo("Polyglot language pack version ${Lang.POLYGLOT_VERSION}") Echo("GL_VERSION: ${Terrarum.GL_VERSION}") Echo("Renderer: ${Gdx.graphics.glVersion.rendererString}, ${Gdx.graphics.glVersion.vendorString}") diff --git a/src/net/torvald/terrarum/gameactors/Actor.kt b/src/net/torvald/terrarum/gameactors/Actor.kt index 61908939c..9a57c96df 100644 --- a/src/net/torvald/terrarum/gameactors/Actor.kt +++ b/src/net/torvald/terrarum/gameactors/Actor.kt @@ -5,6 +5,7 @@ import net.torvald.terrarum.Terrarum import net.torvald.terrarum.itemproperties.ItemCodex import net.torvald.terrarum.itemproperties.ItemCodex.ACTORID_MIN + typealias ActorID = Int /** @@ -34,48 +35,21 @@ abstract class Actor(val renderOrder: RenderOrder) : Comparable, Runnable * Valid RefID is equal to or greater than 16777216. * @return Reference ID. (16777216-0x7FFF_FFFF) */ - open var referenceID: ActorID = generateUniqueReferenceID() + open var referenceID: ActorID? = null var actorValue = ActorValue(this) @Volatile var flagDespawn = false override fun equals(other: Any?) = referenceID == (other as Actor).referenceID - override fun hashCode() = referenceID + override fun hashCode() = referenceID!! override fun toString() = - if (actorValue.getAsString(AVKey.NAME).isNullOrEmpty()) + if (actorValue.getAsString("name").isNullOrEmpty()) "${hashCode()}" else - "${hashCode()} (${actorValue.getAsString(AVKey.NAME)})" - override fun compareTo(other: Actor): Int = (this.referenceID - other.referenceID).sign() + "${hashCode()} (${actorValue.getAsString("name")})" + override fun compareTo(other: Actor): Int = (this.referenceID!! - other.referenceID!!).sign() fun Int.sign(): Int = if (this > 0) 1 else if (this < 0) -1 else 0 - /** - * Usage: - * - * override var referenceID: Int = generateUniqueReferenceID() - */ - fun generateUniqueReferenceID(): ActorID { - fun hasCollision(value: ActorID) = - try { - Terrarum.ingame!!.theGameHasActor(value) || - value < ItemCodex.ACTORID_MIN || - value !in when (renderOrder) { - RenderOrder.BEHIND -> RANGE_BEHIND - RenderOrder.MIDDLE -> RANGE_MIDDLE - RenderOrder.MIDTOP -> RANGE_MIDTOP - RenderOrder.FRONT -> RANGE_FRONT - } - } - catch (gameNotInitialisedException: KotlinNullPointerException) { - false - } - - var ret: Int - do { - ret = HQRNG().nextInt().and(0x7FFFFFFF) // set new ID - } while (hasCollision(ret)) // check for collision - return ret - } /** * ActorValue change event handler @@ -83,6 +57,7 @@ abstract class Actor(val renderOrder: RenderOrder) : Comparable, Runnable * @param value null if the key is deleted */ abstract @Event fun onActorValueChange(key: String, value: Any?) + } annotation class Event diff --git a/src/net/torvald/terrarum/gameactors/ActorWithBody.kt b/src/net/torvald/terrarum/gameactors/ActorWithBody.kt index d62ad3a7f..8f30610e6 100644 --- a/src/net/torvald/terrarum/gameactors/ActorWithBody.kt +++ b/src/net/torvald/terrarum/gameactors/ActorWithBody.kt @@ -1,6 +1,8 @@ package net.torvald.terrarum.gameactors import com.badlogic.gdx.graphics.g2d.SpriteBatch +import net.torvald.terrarum.gameactors.Actor +import net.torvald.terrarum.gameactors.Hitbox /** * Actor with visible body diff --git a/src/net/torvald/terrarum/gameactors/ai/AILuaAPI.kt b/src/net/torvald/terrarum/gameactors/ai/AILuaAPI.kt index 84ca044cd..fc200364c 100644 --- a/src/net/torvald/terrarum/gameactors/ai/AILuaAPI.kt +++ b/src/net/torvald/terrarum/gameactors/ai/AILuaAPI.kt @@ -1,11 +1,10 @@ package net.torvald.terrarum.gameactors.ai import net.torvald.terrarum.Terrarum -import net.torvald.terrarum.TerrarumAppLoader +import net.torvald.terrarum.AppLoader import net.torvald.terrarum.gameactors.AIControlled -import net.torvald.terrarum.gameactors.AVKey -import net.torvald.terrarum.gameactors.ActorWithPhysics -import net.torvald.terrarum.worlddrawer.LightmapRenderer +import net.torvald.terrarum.modulebasegame.gameactors.AVKey +import net.torvald.terrarum.modulebasegame.gameactors.ActorWithPhysics import net.torvald.terrarum.blockproperties.Block import net.torvald.terrarum.blockproperties.BlockCodex import org.luaj.vm2.* @@ -15,7 +14,7 @@ import org.luaj.vm2.lib.ZeroArgFunction /** * Created by minjaesong on 2016-10-24. */ -internal class AILuaAPI(g: Globals, actor: ActorWithPhysics) { +/*internal class AILuaAPI(g: Globals, actor: ActorWithPhysics) { // FIXME when actor jumps, the actor releases left/right stick @@ -233,7 +232,7 @@ internal class AILuaAPI(g: Globals, actor: ActorWithPhysics) { luatable[y - feetTilePos[1]] = LuaTable() for (x in feetTilePos[0] - radius..feetTilePos[0] + radius) { - val tile = BlockCodex[Terrarum.ingame!!.world.getTileFromTerrain(x, y) ?: Block.NULL] + val tile = BlockCodex[(Terrarum.ingame!! as Ingame).world.getTileFromTerrain(x, y) ?: Block.NULL] val solidity = tile.isSolid.toInt() val liquidity = tile.isFluid.toInt() val gravity = tile.isFallable.toInt() @@ -277,7 +276,7 @@ internal class AILuaAPI(g: Globals, actor: ActorWithPhysics) { // search down var searchDownCounter = 0 while (true) { - val tile = Terrarum.ingame!!.world.getTileFromTerrain(x, feetTilePos[1] + searchDownCounter) ?: Block.STONE + val tile = (Terrarum.ingame!! as Ingame).world.getTileFromTerrain(x, feetTilePos[1] + searchDownCounter) ?: Block.STONE if (BlockCodex[tile].isSolid || searchDownCounter >= searchDownLimit) { luatable[x - feetTilePos[0]] = searchDownCounter break @@ -320,7 +319,7 @@ internal class AILuaAPI(g: Globals, actor: ActorWithPhysics) { // search up var searchUpCounter = 0 while (true) { - val tile = Terrarum.ingame!!.world.getTileFromTerrain(x, feetTilePos[1] - searchUpCounter) ?: Block.STONE + val tile = (Terrarum.ingame!! as Ingame).world.getTileFromTerrain(x, feetTilePos[1] - searchUpCounter) ?: Block.STONE if (BlockCodex[tile].isSolid || searchUpCounter >= searchUpLimit) { luatable[x - feetTilePos[0]] = searchUpCounter break @@ -362,7 +361,7 @@ internal class AILuaAPI(g: Globals, actor: ActorWithPhysics) { // search up var searchUpCounter = 0 while (true) { - val tile = Terrarum.ingame!!.world.getTileFromTerrain(x, feetTilePos[1] - searchUpCounter) ?: Block.STONE + val tile = (Terrarum.ingame!! as Ingame).world.getTileFromTerrain(x, feetTilePos[1] - searchUpCounter) ?: Block.STONE if (!BlockCodex[tile].isSolid || searchUpCounter >= searchUpLimit) { luatable[x - feetTilePos[0]] = searchUpCounter break @@ -381,16 +380,16 @@ internal class AILuaAPI(g: Globals, actor: ActorWithPhysics) { class GameVersion : ZeroArgFunction() { override fun call(): LuaValue { - return TerrarumAppLoader.getVERSION_STRING().toLua() + return AppLoader.getVERSION_STRING().toLua() } } class GameVersionRaw : ZeroArgFunction() { override fun call(): LuaValue { - return TerrarumAppLoader.VERSION_RAW.toLua() + return AppLoader.VERSION_RAW.toLua() } } -} +}*/ fun Double.toLua() = LuaValue.valueOf(this) fun Int.toLua() = LuaValue.valueOf(this) diff --git a/src/net/torvald/terrarum/gameactors/ai/ActorAI.kt b/src/net/torvald/terrarum/gameactors/ai/ActorAI.kt index 78f7e974b..505b7e36d 100644 --- a/src/net/torvald/terrarum/gameactors/ai/ActorAI.kt +++ b/src/net/torvald/terrarum/gameactors/ai/ActorAI.kt @@ -1,10 +1,11 @@ package net.torvald.terrarum.gameactors.ai -import net.torvald.terrarum.gameactors.HumanoidNPC +import net.torvald.terrarum.gameactors.Actor + /** * Created by minjaesong on 2016-03-02. */ interface ActorAI { - fun update(actor: HumanoidNPC, delta: Float) + fun update(actor: Actor, delta: Float) } \ No newline at end of file diff --git a/src/net/torvald/terrarum/gameactors/ai/LuaAIWrapper.kt b/src/net/torvald/terrarum/gameactors/ai/LuaAIWrapper.kt index 6d5c721e0..e82cdd775 100644 --- a/src/net/torvald/terrarum/gameactors/ai/LuaAIWrapper.kt +++ b/src/net/torvald/terrarum/gameactors/ai/LuaAIWrapper.kt @@ -1,9 +1,6 @@ package net.torvald.terrarum.gameactors.ai import net.torvald.terrarum.gameactors.Actor -import net.torvald.terrarum.gameactors.ActorHumanoid -import net.torvald.terrarum.gameactors.ActorWithPhysics -import net.torvald.terrarum.gameactors.HumanoidNPC import org.luaj.vm2.Globals import org.luaj.vm2.LuaError import org.luaj.vm2.LuaInteger @@ -15,7 +12,7 @@ import java.io.Reader /** * Created by minjaesong on 2017-02-04. */ -class LuaAIWrapper(private val scriptPath: String) : ActorAI { +/*class LuaAIWrapper(private val scriptPath: String) : ActorAI { protected val luag: Globals = JsePlatform.standardGlobals() @@ -27,14 +24,14 @@ class LuaAIWrapper(private val scriptPath: String) : ActorAI { private lateinit var aiLuaAPI: AILuaAPI - private lateinit var targetActor: ActorWithPhysics + private lateinit var targetActor: Actor /** * The initialiser * * Use ```(p.ai as LuaAIWrapper).attachActor(p)``` */ - fun attachActor(actor: ActorWithPhysics) { + fun attachActor(actor: Actor) { targetActor = actor luag["io"] = LuaValue.NIL @@ -47,7 +44,7 @@ class LuaAIWrapper(private val scriptPath: String) : ActorAI { luaInstance.call() } - override fun update(actor: HumanoidNPC, delta: Float) { + override fun update(actor: Actor, delta: Float) { // run "update()" function in the script luag.get("update").call(delta.toLua()) } @@ -112,4 +109,4 @@ class LuaAIWrapper(private val scriptPath: String) : ActorAI { } fun Float.toLua(): LuaValue = LuaInteger.valueOf(this.toDouble()) -} \ No newline at end of file +}*/ \ No newline at end of file diff --git a/src/net/torvald/terrarum/gameactors/ai/NullAI.kt b/src/net/torvald/terrarum/gameactors/ai/NullAI.kt new file mode 100644 index 000000000..1b0c06ad6 --- /dev/null +++ b/src/net/torvald/terrarum/gameactors/ai/NullAI.kt @@ -0,0 +1,12 @@ +package net.torvald.terrarum.gameactors.ai + +import net.torvald.terrarum.gameactors.Actor + +/** + * Created by minjaesong on 2018-06-07. + */ +class NullAI : ActorAI { + override fun update(actor: Actor, delta: Float) { + // null AI does nothing + } +} \ No newline at end of file diff --git a/src/net/torvald/terrarum/gamecontroller/IngameController.kt b/src/net/torvald/terrarum/gamecontroller/IngameController.kt index 630f3ff80..65a85cb9e 100644 --- a/src/net/torvald/terrarum/gamecontroller/IngameController.kt +++ b/src/net/torvald/terrarum/gamecontroller/IngameController.kt @@ -3,11 +3,11 @@ package net.torvald.terrarum.gamecontroller import com.badlogic.gdx.Gdx import com.badlogic.gdx.Input import com.badlogic.gdx.InputAdapter -import net.torvald.terrarum.Ingame +import net.torvald.terrarum.modulebasegame.Ingame import net.torvald.terrarum.worlddrawer.FeaturesDrawer import net.torvald.terrarum.Terrarum -import net.torvald.terrarum.gameactors.* import net.torvald.terrarum.itemproperties.GameItem +import net.torvald.terrarum.floorInt import net.torvald.terrarum.worlddrawer.WorldCamera /** diff --git a/src/net/torvald/terrarum/gameworld/GameWorld.kt b/src/net/torvald/terrarum/gameworld/GameWorld.kt index fe1affa8e..c4ba2ef72 100644 --- a/src/net/torvald/terrarum/gameworld/GameWorld.kt +++ b/src/net/torvald/terrarum/gameworld/GameWorld.kt @@ -4,6 +4,8 @@ package net.torvald.terrarum.gameworld import com.badlogic.gdx.graphics.Color import net.torvald.terrarum.realestate.LandUtil import net.torvald.terrarum.blockproperties.BlockCodex +import net.torvald.terrarum.modulebasegame.gameworld.GameEconomy +import net.torvald.terrarum.modulebasegame.gameworld.WorldTime import org.dyn4j.geometry.Vector2 typealias BlockAddress = Long diff --git a/src/net/torvald/terrarum/gameworld/MapLayer.kt b/src/net/torvald/terrarum/gameworld/MapLayer.kt index a6b4fd3ce..6b65e7de3 100644 --- a/src/net/torvald/terrarum/gameworld/MapLayer.kt +++ b/src/net/torvald/terrarum/gameworld/MapLayer.kt @@ -1,6 +1,6 @@ package net.torvald.terrarum.gameworld -import net.torvald.terrarum.virtualcomputer.tvd.ByteArray64 +import net.torvald.terrarum.modulecomputers.virtualcomputer.tvd.ByteArray64 /** * Created by minjaesong on 2016-01-17. diff --git a/src/net/torvald/terrarum/gameworld/MapPoint.kt b/src/net/torvald/terrarum/gameworld/MapPoint.kt index bbd977670..9677c8a76 100644 --- a/src/net/torvald/terrarum/gameworld/MapPoint.kt +++ b/src/net/torvald/terrarum/gameworld/MapPoint.kt @@ -2,8 +2,6 @@ package net.torvald.terrarum.gameworld import net.torvald.point.Point2d -import java.io.Serializable - class MapPoint { var startPoint: Point2d? = null diff --git a/src/net/torvald/terrarum/imagefont/TinyAlphNum.kt b/src/net/torvald/terrarum/imagefont/TinyAlphNum.kt index 8e9008dcc..65a8ee085 100644 --- a/src/net/torvald/terrarum/imagefont/TinyAlphNum.kt +++ b/src/net/torvald/terrarum/imagefont/TinyAlphNum.kt @@ -48,7 +48,7 @@ object TinyAlphNum : BitmapFont() { else if (c in 0.toChar()..255.toChar()) { batch.color = colourHolder.cpy().mul(0.5f, 0.5f, 0.5f, 1f) batch.draw(fontSheet.get(c.toInt() % 16, c.toInt() / 16), x + charsPrinted * W + 1, y) - batch.draw(fontSheet.get(c.toInt() % 16, c.toInt() / 16), x + charsPrinted * W , y + 1) + batch.draw(fontSheet.get(c.toInt() % 16, c.toInt() / 16), x + charsPrinted * W, y + 1) batch.draw(fontSheet.get(c.toInt() % 16, c.toInt() / 16), x + charsPrinted * W + 1, y + 1) diff --git a/src/net/torvald/terrarum/itemproperties/Calculate.kt b/src/net/torvald/terrarum/itemproperties/Calculate.kt index 8acabf114..a15267dc4 100644 --- a/src/net/torvald/terrarum/itemproperties/Calculate.kt +++ b/src/net/torvald/terrarum/itemproperties/Calculate.kt @@ -1,6 +1,7 @@ package net.torvald.terrarum.itemproperties -import net.torvald.terrarum.gameactors.* +import net.torvald.terrarum.modulebasegame.gameactors.ActorHumanoid +import net.torvald.terrarum.sqrt /** * Created by minjaesong on 2017-04-17. diff --git a/src/net/torvald/terrarum/itemproperties/GameItem.kt b/src/net/torvald/terrarum/itemproperties/GameItem.kt index 1460f27d5..fa1c8093e 100644 --- a/src/net/torvald/terrarum/itemproperties/GameItem.kt +++ b/src/net/torvald/terrarum/itemproperties/GameItem.kt @@ -3,8 +3,8 @@ package net.torvald.terrarum.itemproperties import com.badlogic.gdx.graphics.Color import net.torvald.random.HQRNG import net.torvald.terrarum.ItemValue -import net.torvald.terrarum.gameactors.ActorInventory -import net.torvald.terrarum.gameactors.Pocketed +import net.torvald.terrarum.modulebasegame.gameactors.ActorInventory +import net.torvald.terrarum.modulebasegame.gameactors.Pocketed import net.torvald.terrarum.itemproperties.ItemCodex.ITEM_DYNAMIC import net.torvald.terrarum.langpack.Lang @@ -140,7 +140,7 @@ abstract class GameItem : Comparable, Cloneable { * note: DO NOT super() this! * * Consumption function is executed in net.torvald.terrarum.gamecontroller.IngameController, - * in which the function itself is defined in net.torvald.terrarum.gameactors.ActorInventory + * in which the function itself is defined in net.torvald.terrarum.modulebasegame.gameactors.ActorInventory */ open fun primaryUse(delta: Float): Boolean = false diff --git a/src/net/torvald/terrarum/itemproperties/ItemCodex.kt b/src/net/torvald/terrarum/itemproperties/ItemCodex.kt index 9baafbff8..94da20b5c 100644 --- a/src/net/torvald/terrarum/itemproperties/ItemCodex.kt +++ b/src/net/torvald/terrarum/itemproperties/ItemCodex.kt @@ -4,12 +4,13 @@ import com.badlogic.gdx.graphics.Texture import com.badlogic.gdx.graphics.g2d.TextureRegion import net.torvald.point.Point2d import net.torvald.terrarum.KVHashMap -import net.torvald.terrarum.gameactors.CanBeAnItem +import net.torvald.terrarum.modulebasegame.gameactors.CanBeAnItem import net.torvald.terrarum.Terrarum -import net.torvald.terrarum.gameactors.ActorWithPhysics +import net.torvald.terrarum.modulebasegame.gameactors.ActorWithPhysics import net.torvald.terrarum.gameworld.GameWorld import net.torvald.terrarum.worlddrawer.BlocksDrawer import net.torvald.terrarum.blockproperties.BlockCodex +import net.torvald.terrarum.modulebasegame.Ingame import net.torvald.terrarum.worlddrawer.FeaturesDrawer.TILE_SIZE import java.util.* @@ -22,7 +23,7 @@ object ItemCodex { * * Will return corresponding Actor if ID >= ACTORID_MIN */ - private val itemCodex = HashMap() + val itemCodex = HashMap() private val dynamicItemDescription = HashMap() val ITEM_TILES = 0..GameWorld.TILES_SUPPORTED - 1 @@ -34,10 +35,14 @@ object ItemCodex { private val itemImagePlaceholder = TextureRegion(Texture("./assets/item_kari_24.tga")) + //private val ingame = Terrarum.ingame!! as Ingame + + + // TODO: when generalised, there's no guarantee that blocks will be used as an item. Write customised item prop loader and init it on the Ingame init { - println("[ItemCodex] recording item ID ") + /*println("[ItemCodex] recording item ID ") // blocks.csvs are loaded by ModMgr beforehand // block items (blocks and walls are the same thing basically) @@ -69,7 +74,7 @@ object ItemCodex { // check for collision with actors (BLOCK only) if (this.inventoryCategory == Category.BLOCK) { - Terrarum.ingame!!.actorContainer.forEach { + ingame.actorContainer.forEach { if (it is ActorWithPhysics && it.hIntTilewiseHitbox.intersects(mousePoint)) return false } @@ -77,25 +82,25 @@ object ItemCodex { // return false if the tile is already there if (this.inventoryCategory == Category.BLOCK && - this.dynamicID == Terrarum.ingame!!.world.getTileFromTerrain(Terrarum.mouseTileX, Terrarum.mouseTileY) || + this.dynamicID == ingame.world.getTileFromTerrain(Terrarum.mouseTileX, Terrarum.mouseTileY) || this.inventoryCategory == Category.WALL && - this.dynamicID - ITEM_WALLS.start == Terrarum.ingame!!.world.getTileFromWall(Terrarum.mouseTileX, Terrarum.mouseTileY) || + this.dynamicID - ITEM_WALLS.start == ingame.world.getTileFromWall(Terrarum.mouseTileX, Terrarum.mouseTileY) || this.inventoryCategory == Category.WIRE && - this.dynamicID - ITEM_WIRES.start == Terrarum.ingame!!.world.getTileFromWire(Terrarum.mouseTileX, Terrarum.mouseTileY) + this.dynamicID - ITEM_WIRES.start == ingame.world.getTileFromWire(Terrarum.mouseTileX, Terrarum.mouseTileY) ) return false // filter passed, do the job // FIXME this is only useful for Player if (i in ITEM_TILES) { - Terrarum.ingame!!.world.setTileTerrain( + ingame.world.setTileTerrain( Terrarum.mouseTileX, Terrarum.mouseTileY, i ) } else { - Terrarum.ingame!!.world.setTileWall( + ingame.world.setTileWall( Terrarum.mouseTileX, Terrarum.mouseTileY, i @@ -105,7 +110,7 @@ object ItemCodex { return true } } - } + }*/ // test copper pickaxe /*itemCodex[ITEM_STATIC.first] = object : GameItem() { @@ -130,30 +135,30 @@ object ItemCodex { override fun primaryUse(delta: Float): Boolean { val mousePoint = Point2d(Terrarum.mouseTileX.toDouble(), Terrarum.mouseTileY.toDouble()) - val actorvalue = Terrarum.ingame!!.player.actorValue + val actorvalue = ingame.player.actorValue using = true // linear search filter (check for intersection with tilewise mouse point and tilewise hitbox) // return false if hitting actors - Terrarum.ingame!!.actorContainer.forEach { + ingame.actorContainer.forEach { if (it is ActorWithPhysics && it.hIntTilewiseHitbox.intersects(mousePoint)) return false } // return false if there's no tile - if (Block.AIR == Terrarum.ingame!!.world.getTileFromTerrain(Terrarum.mouseTileX, Terrarum.mouseTileY)) + if (Block.AIR == ingame.world.getTileFromTerrain(Terrarum.mouseTileX, Terrarum.mouseTileY)) return false // filter passed, do the job val swingDmgToFrameDmg = delta.toDouble() / actorvalue.getAsDouble(AVKey.ACTION_INTERVAL)!! - Terrarum.ingame!!.world.inflictTerrainDamage( + ingame.world.inflictTerrainDamage( Terrarum.mouseTileX, Terrarum.mouseTileY, - Calculate.pickaxePower(Terrarum.ingame!!.player, material) * swingDmgToFrameDmg + Calculate.pickaxePower(ingame.player, material) * swingDmgToFrameDmg ) return true } @@ -161,7 +166,7 @@ object ItemCodex { override fun endPrimaryUse(delta: Float): Boolean { using = false // reset action timer to zero - Terrarum.ingame!!.player.actorValue[AVKey.__ACTION_TIMER] = 0.0 + ingame.player.actorValue[AVKey.__ACTION_TIMER] = 0.0 return true } }*/ @@ -184,7 +189,7 @@ object ItemCodex { TODO("read from dynamicitem description (JSON)") } else { - val a = Terrarum.ingame!!.getActorByID(code) // actor item + val a = (Terrarum.ingame!! as Ingame).getActorByID(code) // actor item if (a is CanBeAnItem) return a.itemData throw IllegalArgumentException("Attempted to get item data of actor that cannot be an item. ($a)") diff --git a/src/net/torvald/terrarum/itemproperties/ItemEffectsLuaAPI.kt b/src/net/torvald/terrarum/itemproperties/ItemEffectsLuaAPI.kt index 6c355a8c6..9e0df4b1f 100644 --- a/src/net/torvald/terrarum/itemproperties/ItemEffectsLuaAPI.kt +++ b/src/net/torvald/terrarum/itemproperties/ItemEffectsLuaAPI.kt @@ -2,6 +2,7 @@ package net.torvald.terrarum.itemproperties import net.torvald.terrarum.Terrarum import net.torvald.terrarum.gameactors.ai.toLua +import net.torvald.terrarum.modulebasegame.Ingame import org.luaj.vm2.Globals import org.luaj.vm2.LuaTable import org.luaj.vm2.LuaValue @@ -43,13 +44,13 @@ class ItemEffectsLuaAPI(g: Globals) { class StrikeEarth : ThreeArgFunction() { override fun call(x: LuaValue, y: LuaValue, power: LuaValue): LuaValue { - Terrarum.ingame!!.world.inflictTerrainDamage(x.checkint(), y.checkint(), power.checkdouble()) + (Terrarum.ingame!! as Ingame).world.inflictTerrainDamage(x.checkint(), y.checkint(), power.checkdouble()) return LuaValue.NONE } } class StrikeWall : ThreeArgFunction() { override fun call(x: LuaValue, y: LuaValue, power: LuaValue): LuaValue { - Terrarum.ingame!!.world.inflictWallDamage(x.checkint(), y.checkint(), power.checkdouble()) + (Terrarum.ingame!! as Ingame).world.inflictWallDamage(x.checkint(), y.checkint(), power.checkdouble()) return LuaValue.NONE } } diff --git a/src/net/torvald/terrarum/langpack/Lang.kt b/src/net/torvald/terrarum/langpack/Lang.kt index 591cc0351..a08af6793 100644 --- a/src/net/torvald/terrarum/langpack/Lang.kt +++ b/src/net/torvald/terrarum/langpack/Lang.kt @@ -2,7 +2,7 @@ package net.torvald.terrarum.langpack import net.torvald.terrarum.utils.JsonFetcher import net.torvald.terrarum.Terrarum -import net.torvald.terrarum.TerrarumAppLoader +import net.torvald.terrarum.AppLoader import java.io.* import java.util.* @@ -112,7 +112,7 @@ object Lang { fun fallback(): String = langpack["${key}_$FALLBACK_LANG_CODE"] ?: "$$key" - val ret = langpack["${key}_${TerrarumAppLoader.GAME_LOCALE}"] + val ret = langpack["${key}_${AppLoader.GAME_LOCALE}"] val ret2 = if (ret.isNullOrEmpty()) fallback() else ret!! // special treatment @@ -129,7 +129,7 @@ object Lang { fun pluralise(word: String, count: Int): String { if (count < 2) return word - when (TerrarumAppLoader.GAME_LOCALE) { + when (AppLoader.GAME_LOCALE) { "fr" -> { if (Arrays.binarySearch(FRENCH_WORD_NORMAL_PLURAL, word) >= 0) { return word + "s" diff --git a/src/net/torvald/terrarum/modulebasegame/EntryPoint.kt b/src/net/torvald/terrarum/modulebasegame/EntryPoint.kt new file mode 100644 index 000000000..ac4fa94e6 --- /dev/null +++ b/src/net/torvald/terrarum/modulebasegame/EntryPoint.kt @@ -0,0 +1,106 @@ +package net.torvald.terrarum.modulebasegame + +import net.torvald.point.Point2d +import net.torvald.terrarum.ModMgr +import net.torvald.terrarum.ModuleEntryPoint +import net.torvald.terrarum.Terrarum +import net.torvald.terrarum.blockproperties.BlockCodex +import net.torvald.terrarum.itemproperties.GameItem +import net.torvald.terrarum.itemproperties.ItemCodex +import net.torvald.terrarum.itemproperties.Material +import net.torvald.terrarum.modulebasegame.gameactors.ActorWithPhysics + +/** + * Created by minjaesong on 2018-06-21. + */ +class EntryPoint : ModuleEntryPoint() { + + override fun invoke() { + + ModMgr.GameBlockLoader.invoke("basegame") + ModMgr.GameItemLoader.invoke("basegame") + ModMgr.GameLanguageLoader.invoke("basegame") + + + ///////////////////////////////// + // load customised item loader // + ///////////////////////////////// + + println("[ItemCodex] recording item ID ") + + // blocks.csvs are loaded by ModMgr beforehand + // block items (blocks and walls are the same thing basically) + for (i in ItemCodex.ITEM_TILES + ItemCodex.ITEM_WALLS) { + ItemCodex.itemCodex[i] = object : GameItem() { + override val originalID = i + override var dynamicID = i + override val isUnique: Boolean = false + override var baseMass: Double = BlockCodex[i].density / 1000.0 + override var baseToolSize: Double? = null + override var equipPosition = EquipPosition.HAND_GRIP + override val originalName = BlockCodex[i % ItemCodex.ITEM_WALLS.first].nameKey + override var stackable = true + override var inventoryCategory = if (i in ItemCodex.ITEM_TILES) Category.BLOCK else Category.WALL + override var isDynamic = false + override val material = Material(0,0,0,0,0,0,0,0,0,0.0) + + init { + print("$originalID ") + } + + override fun primaryUse(delta: Float): Boolean { + return false + // TODO base punch attack + } + + override fun secondaryUse(delta: Float): Boolean { + val ingame = Terrarum.ingame!! as Ingame + + val mousePoint = Point2d(Terrarum.mouseTileX.toDouble(), Terrarum.mouseTileY.toDouble()) + + // check for collision with actors (BLOCK only) + if (this.inventoryCategory == Category.BLOCK) { + ingame.actorContainer.forEach { + if (it is ActorWithPhysics && it.hIntTilewiseHitbox.intersects(mousePoint)) + return false + } + } + + // return false if the tile is already there + if (this.inventoryCategory == Category.BLOCK && + this.dynamicID == ingame.world.getTileFromTerrain(Terrarum.mouseTileX, Terrarum.mouseTileY) || + this.inventoryCategory == Category.WALL && + this.dynamicID - ItemCodex.ITEM_WALLS.start == ingame.world.getTileFromWall(Terrarum.mouseTileX, Terrarum.mouseTileY) || + this.inventoryCategory == Category.WIRE && + this.dynamicID - ItemCodex.ITEM_WIRES.start == ingame.world.getTileFromWire(Terrarum.mouseTileX, Terrarum.mouseTileY) + ) + return false + + // filter passed, do the job + // FIXME this is only useful for Player + if (i in ItemCodex.ITEM_TILES) { + ingame.world.setTileTerrain( + Terrarum.mouseTileX, + Terrarum.mouseTileY, + i + ) + } + else { + ingame.world.setTileWall( + Terrarum.mouseTileX, + Terrarum.mouseTileY, + i + ) + } + + return true + } + } + } + + + + println("Welcome back!") + } + +} \ No newline at end of file diff --git a/src/net/torvald/terrarum/Ingame.kt b/src/net/torvald/terrarum/modulebasegame/Ingame.kt similarity index 92% rename from src/net/torvald/terrarum/Ingame.kt rename to src/net/torvald/terrarum/modulebasegame/Ingame.kt index 1e9aa988b..9aed0b7f8 100644 --- a/src/net/torvald/terrarum/Ingame.kt +++ b/src/net/torvald/terrarum/modulebasegame/Ingame.kt @@ -1,4 +1,4 @@ -package net.torvald.terrarum +package net.torvald.terrarum.modulebasegame import com.badlogic.gdx.Gdx import com.badlogic.gdx.Input @@ -13,11 +13,11 @@ import net.torvald.terrarum.blockstats.BlockStats import net.torvald.terrarum.concurrent.ThreadParallel import net.torvald.terrarum.console.* import net.torvald.terrarum.gameactors.* -import net.torvald.terrarum.gameactors.physicssolver.CollisionSolver +import net.torvald.terrarum.modulebasegame.gameactors.physicssolver.CollisionSolver import net.torvald.terrarum.gamecontroller.IngameController import net.torvald.terrarum.gamecontroller.KeyToggler import net.torvald.terrarum.gameworld.GameWorld -import net.torvald.terrarum.gameworld.WorldSimulator +import net.torvald.terrarum.modulebasegame.gameworld.WorldSimulator import net.torvald.terrarum.weather.WeatherMixer import net.torvald.terrarum.worlddrawer.BlocksDrawer import net.torvald.terrarum.worlddrawer.FeaturesDrawer @@ -32,17 +32,27 @@ import javax.swing.JOptionPane import com.badlogic.gdx.graphics.OrthographicCamera import net.torvald.random.HQRNG +import net.torvald.terrarum.* import net.torvald.terrarum.gameworld.fmod +import net.torvald.terrarum.modulebasegame.console.AVTracker +import net.torvald.terrarum.modulebasegame.console.ActorsList +import net.torvald.terrarum.console.Authenticator +import net.torvald.terrarum.console.SetGlobalLightOverride +import net.torvald.terrarum.itemproperties.ItemCodex +import net.torvald.terrarum.modulebasegame.gameactors.* +import net.torvald.terrarum.modulebasegame.imagefont.Watch7SegMain +import net.torvald.terrarum.modulebasegame.imagefont.WatchDotAlph +import net.torvald.terrarum.modulebasegame.ui.* import net.torvald.terrarum.ui.* -import net.torvald.terrarum.worldgenerator.RoguelikeRandomiser -import net.torvald.terrarum.worldgenerator.WorldGenerator +import net.torvald.terrarum.modulebasegame.worldgenerator.RoguelikeRandomiser +import net.torvald.terrarum.modulebasegame.worldgenerator.WorldGenerator /** * Created by minjaesong on 2017-06-16. */ -class Ingame(val batch: SpriteBatch) : Screen { +class Ingame(batch: SpriteBatch) : IngameInstance(batch) { private val ACTOR_UPDATE_RANGE = 4096 @@ -53,10 +63,10 @@ class Ingame(val batch: SpriteBatch) : Screen { /** * list of Actors that is sorted by Actors' referenceID */ - val ACTORCONTAINER_INITIAL_SIZE = 64 + //val ACTORCONTAINER_INITIAL_SIZE = 64 val PARTICLES_MAX = Terrarum.getConfigInt("maxparticles") - val actorContainer = ArrayList(ACTORCONTAINER_INITIAL_SIZE) - val actorContainerInactive = ArrayList(ACTORCONTAINER_INITIAL_SIZE) + //val actorContainer = ArrayList(ACTORCONTAINER_INITIAL_SIZE) + //val actorContainerInactive = ArrayList(ACTORCONTAINER_INITIAL_SIZE) val particlesContainer = CircularArray(PARTICLES_MAX) val uiContainer = ArrayList() @@ -70,9 +80,9 @@ class Ingame(val batch: SpriteBatch) : Screen { inline val player: ActorHumanoid // currently POSSESSED actor :) get() = playableActorDelegate.actor - var screenZoom = 1.0f - val ZOOM_MAXIMUM = 4.0f - val ZOOM_MINIMUM = 0.5f + //var screenZoom = 1.0f // definition moved to IngameInstance + //val ZOOM_MAXIMUM = 4.0f // definition moved to IngameInstance + //val ZOOM_MINIMUM = 0.5f // definition moved to IngameInstance companion object { val lightmapDownsample = 4f //2f: still has choppy look when the camera moves but unnoticeable when blurred @@ -84,6 +94,36 @@ class Ingame(val batch: SpriteBatch) : Screen { camera.update() batch.projectionMatrix = camera.combined } + + + + /** + * Usage: + * + * override var referenceID: Int = generateUniqueReferenceID() + */ + fun generateUniqueReferenceID(renderOrder: Actor.RenderOrder): ActorID { + fun hasCollision(value: ActorID) = + try { + Terrarum.ingame!!.theGameHasActor(value) || + value < ItemCodex.ACTORID_MIN || + value !in when (renderOrder) { + Actor.RenderOrder.BEHIND -> Actor.RANGE_BEHIND + Actor.RenderOrder.MIDDLE -> Actor.RANGE_MIDDLE + Actor.RenderOrder.MIDTOP -> Actor.RANGE_MIDTOP + Actor.RenderOrder.FRONT -> Actor.RANGE_FRONT + } + } + catch (gameNotInitialisedException: KotlinNullPointerException) { + false + } + + var ret: Int + do { + ret = HQRNG().nextInt().and(0x7FFFFFFF) // set new ID + } while (hasCollision(ret)) // check for collision + return ret + } } @@ -110,7 +150,6 @@ class Ingame(val batch: SpriteBatch) : Screen { - lateinit var consoleHandler: UICanvas lateinit var debugWindow: UICanvas lateinit var notifier: UICanvas @@ -195,7 +234,7 @@ class Ingame(val batch: SpriteBatch) : Screen { when (gameLoadMode) { GameLoadMode.CREATE_NEW -> enter(gameLoadInfoPayload as NewWorldParameters) - GameLoadMode.LOAD_FROM -> enter(gameLoadInfoPayload as GameSaveData) + GameLoadMode.LOAD_FROM -> enter(gameLoadInfoPayload as GameSaveData) } LightmapRenderer.world = this.world @@ -248,7 +287,7 @@ class Ingame(val batch: SpriteBatch) : Screen { println("[Ingame] loaded successfully.") } else { - LoadScreen.addMessage("${Terrarum.NAME} version ${TerrarumAppLoader.getVERSION_STRING()}") + LoadScreen.addMessage("${Terrarum.NAME} version ${AppLoader.getVERSION_STRING()}") LoadScreen.addMessage("Creating new world") @@ -338,7 +377,7 @@ class Ingame(val batch: SpriteBatch) : Screen { // quick bar uiQuickBar = UIQuickBar() uiQuickBar.isVisible = true - uiQuickBar.setPosition(0, 0) + uiQuickBar.setPosition((Terrarum.WIDTH - uiQuickBar.width) / 2 + 12, -10) // pie menu uiPieMenu = UIPieMenu() @@ -463,7 +502,7 @@ class Ingame(val batch: SpriteBatch) : Screen { - Gdx.graphics.setTitle(TerrarumAppLoader.GAME_NAME + + Gdx.graphics.setTitle(AppLoader.GAME_NAME + " — F: ${Gdx.graphics.framesPerSecond} (${Terrarum.TARGET_INTERNAL_FPS})" + " — M: ${Terrarum.memInUse}M / ${Terrarum.memTotal}M / ${Terrarum.memXmx}M" ) @@ -701,7 +740,7 @@ class Ingame(val batch: SpriteBatch) : Screen { batch.draw(lightTex, xrem, yrem, - lightTex.width * Ingame.lightmapDownsample, lightTex.height * Ingame.lightmapDownsample + lightTex.width * lightmapDownsample, lightTex.height * lightmapDownsample //lightTex.width.toFloat(), lightTex.height.toFloat() // for debugging ) @@ -771,7 +810,7 @@ class Ingame(val batch: SpriteBatch) : Screen { batch.draw(lightTex, xrem, yrem, - lightTex.width * Ingame.lightmapDownsample, lightTex.height * Ingame.lightmapDownsample + lightTex.width * lightmapDownsample, lightTex.height * lightmapDownsample //lightTex.width.toFloat(), lightTex.height.toFloat() // for debugging ) @@ -1190,35 +1229,15 @@ class Ingame(val batch: SpriteBatch) : Screen { private fun ActorWithBody.inScreen() = distToCameraSqr(this) <= (Terrarum.WIDTH.plus(this.hitbox.width.div(2)). - times(1 / Terrarum.ingame!!.screenZoom).sqr() + + times(1 / screenZoom).sqr() + Terrarum.HEIGHT.plus(this.hitbox.height.div(2)). - times(1 / Terrarum.ingame!!.screenZoom).sqr()) + times(1 / screenZoom).sqr()) /** whether the actor is within update range */ private fun ActorWithBody.inUpdateRange() = distToCameraSqr(this) <= ACTOR_UPDATE_RANGE.sqr() - /** - * actorContainer extensions - */ - fun theGameHasActor(actor: Actor?) = if (actor == null) false else theGameHasActor(actor.referenceID) - - fun theGameHasActor(ID: Int): Boolean = - isActive(ID) || isInactive(ID) - - fun isActive(ID: Int): Boolean = - if (actorContainer.size == 0) - false - else - actorContainer.binarySearch(ID) >= 0 - - fun isInactive(ID: Int): Boolean = - if (actorContainerInactive.size == 0) - false - else - actorContainerInactive.binarySearch(ID) >= 0 - - fun removeActor(ID: Int) = removeActor(getActorByID(ID)) + override fun removeActor(ID: Int) = removeActor(getActorByID(ID)) /** * get index of the actor and delete by the index. * we can do this as the list is guaranteed to be sorted @@ -1227,10 +1246,10 @@ class Ingame(val batch: SpriteBatch) : Screen { * Any values behind the index will be automatically pushed to front. * This is how remove function of [java.util.ArrayList] is defined. */ - fun removeActor(actor: Actor) { + override fun removeActor(actor: Actor) { if (actor.referenceID == player.referenceID || actor.referenceID == 0x51621D) // do not delete this magic throw RuntimeException("Attempted to remove player.") - val indexToDelete = actorContainer.binarySearch(actor.referenceID) + val indexToDelete = actorContainer.binarySearch(actor.referenceID!!) if (indexToDelete >= 0) { actorContainer.removeAt(indexToDelete) @@ -1239,19 +1258,19 @@ class Ingame(val batch: SpriteBatch) : Screen { if (actor is ActorWithBody) { when (actor.renderOrder) { Actor.RenderOrder.BEHIND -> { - val i = actorsRenderBehind.binarySearch(actor.referenceID) + val i = actorsRenderBehind.binarySearch(actor.referenceID!!) actorsRenderBehind.removeAt(i) } Actor.RenderOrder.MIDDLE -> { - val i = actorsRenderMiddle.binarySearch(actor.referenceID) + val i = actorsRenderMiddle.binarySearch(actor.referenceID!!) actorsRenderMiddle.removeAt(i) } Actor.RenderOrder.MIDTOP -> { - val i = actorsRenderMidTop.binarySearch(actor.referenceID) + val i = actorsRenderMidTop.binarySearch(actor.referenceID!!) actorsRenderMidTop.removeAt(i) } Actor.RenderOrder.FRONT -> { - val i = actorsRenderFront.binarySearch(actor.referenceID) + val i = actorsRenderFront.binarySearch(actor.referenceID!!) actorsRenderFront.removeAt(i) } } @@ -1262,8 +1281,8 @@ class Ingame(val batch: SpriteBatch) : Screen { /** * Check for duplicates, append actor and sort the list */ - fun addNewActor(actor: Actor) { - if (theGameHasActor(actor.referenceID)) { + override fun addNewActor(actor: Actor) { + if (theGameHasActor(actor.referenceID!!)) { throw Error("The actor $actor already exists in the game") } else { @@ -1290,8 +1309,8 @@ class Ingame(val batch: SpriteBatch) : Screen { } fun activateDormantActor(actor: Actor) { - if (!isInactive(actor.referenceID)) { - if (isActive(actor.referenceID)) + if (!isInactive(actor.referenceID!!)) { + if (isActive(actor.referenceID!!)) throw Error("The actor $actor is already activated") else throw Error("The actor $actor already exists in the game") @@ -1335,40 +1354,6 @@ class Ingame(val batch: SpriteBatch) : Screen { uiContainer.add(ui) } - fun getActorByID(ID: Int): Actor { - if (actorContainer.size == 0 && actorContainerInactive.size == 0) - throw IllegalArgumentException("Actor with ID $ID does not exist.") - - var index = actorContainer.binarySearch(ID) - if (index < 0) { - index = actorContainerInactive.binarySearch(ID) - - if (index < 0) { - JOptionPane.showMessageDialog( - null, - "Actor with ID $ID does not exist.", - null, JOptionPane.ERROR_MESSAGE - ) - throw IllegalArgumentException("Actor with ID $ID does not exist.") - } - else - return actorContainerInactive[index] - } - else - return actorContainer[index] - } - - private fun insertionSortLastElem(arr: ArrayList) { - lock(ReentrantLock()) { - var j = arr.lastIndex - 1 - val x = arr.last() - while (j >= 0 && arr[j] > x) { - arr[j + 1] = arr[j] - j -= 1 - } - arr[j + 1] = x - } - } private fun insertionSortLastElemAV(arr: ArrayList) { // out-projection doesn't work, duh lock(ReentrantLock()) { var j = arr.lastIndex - 1 @@ -1381,38 +1366,6 @@ class Ingame(val batch: SpriteBatch) : Screen { } } - private fun ArrayList<*>.binarySearch(actor: Actor) = this.binarySearch(actor.referenceID) - - private fun ArrayList<*>.binarySearch(ID: Int): Int { - // code from collections/Collections.kt - var low = 0 - var high = this.size - 1 - - while (low <= high) { - val mid = (low + high).ushr(1) // safe from overflows - - val midVal = get(mid)!! - - if (ID > midVal.hashCode()) - low = mid + 1 - else if (ID < midVal.hashCode()) - high = mid - 1 - else - return mid // key found - } - return -(low + 1) // key not found - } - - inline fun lock(lock: Lock, body: () -> Unit) { - lock.lock() - try { - body() - } - finally { - lock.unlock() - } - } - fun setTooltipMessage(message: String?) { if (message == null) { uiTooltip.setAsClose() @@ -1525,6 +1478,16 @@ class Ingame(val batch: SpriteBatch) : Screen { uiAliases.forEach { it.dispose() } uiAlasesPausing.forEach { it.dispose() } + + + WatchDotAlph.dispose() + Watch7SegMain.dispose() + WatchDotAlph.dispose() + + ItemSlotImageBuilder.dispose() + + MessageWindow.SEGMENT_BLACK.dispose() + MessageWindow.SEGMENT_WHITE.dispose() } @@ -1534,6 +1497,8 @@ class Ingame(val batch: SpriteBatch) : Screen { * Camera will be moved so that (newX, newY) would be sit on the top-left edge. */ fun setCameraPosition(newX: Float, newY: Float) { - Ingame.setCameraPosition(batch, camera, newX, newY) + setCameraPosition(batch, camera, newX, newY) } + + } diff --git a/src/net/torvald/terrarum/console/AVTracker.kt b/src/net/torvald/terrarum/modulebasegame/console/AVTracker.kt similarity index 74% rename from src/net/torvald/terrarum/console/AVTracker.kt rename to src/net/torvald/terrarum/modulebasegame/console/AVTracker.kt index a7dd2bc03..6c7c79f01 100644 --- a/src/net/torvald/terrarum/console/AVTracker.kt +++ b/src/net/torvald/terrarum/modulebasegame/console/AVTracker.kt @@ -1,7 +1,11 @@ -package net.torvald.terrarum.console +package net.torvald.terrarum.modulebasegame.console import net.torvald.terrarum.Terrarum -import net.torvald.terrarum.debuggerapp.ActorValueTracker +import net.torvald.terrarum.console.ConsoleCommand +import net.torvald.terrarum.console.Echo +import net.torvald.terrarum.console.EchoError +import net.torvald.terrarum.modulebasegame.Ingame +import net.torvald.terrarum.modulebasegame.debuggerapp.ActorValueTracker import java.util.* /** @@ -12,7 +16,7 @@ internal object AVTracker : ConsoleCommand { override fun execute(args: Array) { if (args.size < 2) { - jPanelInstances.add(ActorValueTracker(Terrarum.ingame!!.player)) + jPanelInstances.add(ActorValueTracker((Terrarum.ingame!! as Ingame).player)) } else { try { diff --git a/src/net/torvald/terrarum/console/ActorsList.kt b/src/net/torvald/terrarum/modulebasegame/console/ActorsList.kt similarity index 63% rename from src/net/torvald/terrarum/console/ActorsList.kt rename to src/net/torvald/terrarum/modulebasegame/console/ActorsList.kt index 4bc4630dd..30cded045 100644 --- a/src/net/torvald/terrarum/console/ActorsList.kt +++ b/src/net/torvald/terrarum/modulebasegame/console/ActorsList.kt @@ -1,7 +1,10 @@ -package net.torvald.terrarum.console +package net.torvald.terrarum.modulebasegame.console import net.torvald.terrarum.Terrarum +import net.torvald.terrarum.console.ConsoleCommand +import net.torvald.terrarum.console.Echo import net.torvald.terrarum.debuggerapp.ActorsLister +import net.torvald.terrarum.modulebasegame.Ingame import java.util.* /** @@ -12,8 +15,8 @@ internal object ActorsList : ConsoleCommand { override fun execute(args: Array) { jPanelInstances.add(ActorsLister( - Terrarum.ingame!!.actorContainer, - Terrarum.ingame!!.actorContainerInactive) + (Terrarum.ingame!! as Ingame).actorContainer, + (Terrarum.ingame!! as Ingame).actorContainerInactive) ) } diff --git a/src/net/torvald/terrarum/console/CatStdout.kt b/src/net/torvald/terrarum/modulebasegame/console/CatStdout.kt similarity index 81% rename from src/net/torvald/terrarum/console/CatStdout.kt rename to src/net/torvald/terrarum/modulebasegame/console/CatStdout.kt index 2e6d1a353..395c4962c 100644 --- a/src/net/torvald/terrarum/console/CatStdout.kt +++ b/src/net/torvald/terrarum/modulebasegame/console/CatStdout.kt @@ -1,5 +1,7 @@ -package net.torvald.terrarum.console +package net.torvald.terrarum.modulebasegame.console +import net.torvald.terrarum.console.ConsoleCommand +import net.torvald.terrarum.console.Echo import java.io.IOException import java.nio.file.FileSystems import java.nio.file.Files diff --git a/src/net/torvald/terrarum/modulebasegame/console/CheatWarnTest.kt b/src/net/torvald/terrarum/modulebasegame/console/CheatWarnTest.kt new file mode 100644 index 000000000..deb611823 --- /dev/null +++ b/src/net/torvald/terrarum/modulebasegame/console/CheatWarnTest.kt @@ -0,0 +1,15 @@ +package net.torvald.terrarum.modulebasegame.console + +import net.torvald.terrarum.Terrarum +import net.torvald.terrarum.console.ConsoleCommand +import net.torvald.terrarum.modulebasegame.Ingame + +object CheatWarnTest : ConsoleCommand { + + override fun execute(args: Array) { + (Terrarum.ingame as? Ingame)?.uiCheatMotherfuckerNootNoot?.setAsOpen() + } + + override fun printUsage() { + } +} \ No newline at end of file diff --git a/src/net/torvald/terrarum/console/CodexEdictis.kt b/src/net/torvald/terrarum/modulebasegame/console/CodexEdictis.kt similarity index 85% rename from src/net/torvald/terrarum/console/CodexEdictis.kt rename to src/net/torvald/terrarum/modulebasegame/console/CodexEdictis.kt index 1191821a3..4f98a5895 100644 --- a/src/net/torvald/terrarum/console/CodexEdictis.kt +++ b/src/net/torvald/terrarum/modulebasegame/console/CodexEdictis.kt @@ -1,7 +1,9 @@ -package net.torvald.terrarum.console +package net.torvald.terrarum.modulebasegame.console import net.torvald.terrarum.ccO -import net.torvald.terrarum.ccW +import net.torvald.terrarum.console.CommandDict +import net.torvald.terrarum.console.ConsoleCommand +import net.torvald.terrarum.console.Echo import net.torvald.terrarum.langpack.Lang import java.util.Formatter diff --git a/src/net/torvald/terrarum/console/ExportAV.kt b/src/net/torvald/terrarum/modulebasegame/console/ExportAV.kt similarity index 77% rename from src/net/torvald/terrarum/console/ExportAV.kt rename to src/net/torvald/terrarum/modulebasegame/console/ExportAV.kt index aaf0ae504..36291bdc8 100644 --- a/src/net/torvald/terrarum/console/ExportAV.kt +++ b/src/net/torvald/terrarum/modulebasegame/console/ExportAV.kt @@ -1,7 +1,10 @@ -package net.torvald.terrarum.console +package net.torvald.terrarum.modulebasegame.console import net.torvald.terrarum.utils.JsonWriter import net.torvald.terrarum.Terrarum +import net.torvald.terrarum.console.ConsoleCommand +import net.torvald.terrarum.console.Echo +import net.torvald.terrarum.modulebasegame.Ingame import java.io.IOException @@ -13,7 +16,7 @@ internal object ExportAV : ConsoleCommand { if (args.size == 2) { try { JsonWriter.writeToFile( - Terrarum.ingame!!.player.actorValue, + (Terrarum.ingame!! as Ingame).player.actorValue, Terrarum.defaultDir + "/Exports/" + args[1] + ".json") Echo("ExportAV: exported to " + args[1] + ".json") diff --git a/src/net/torvald/terrarum/console/ExportLayerData.kt b/src/net/torvald/terrarum/modulebasegame/console/ExportLayerData.kt similarity index 78% rename from src/net/torvald/terrarum/console/ExportLayerData.kt rename to src/net/torvald/terrarum/modulebasegame/console/ExportLayerData.kt index d377543b6..279fcc91f 100644 --- a/src/net/torvald/terrarum/console/ExportLayerData.kt +++ b/src/net/torvald/terrarum/modulebasegame/console/ExportLayerData.kt @@ -1,7 +1,8 @@ -package net.torvald.terrarum.console +package net.torvald.terrarum.modulebasegame.console +import net.torvald.terrarum.console.ConsoleCommand +import net.torvald.terrarum.console.Echo import net.torvald.terrarum.serialise.WriteLayerData -import net.torvald.terrarum.serialise.WriteMeta /** * Created by minjaesong on 2017-07-18. diff --git a/src/net/torvald/terrarum/console/ExportMap.kt b/src/net/torvald/terrarum/modulebasegame/console/ExportMap.kt similarity index 87% rename from src/net/torvald/terrarum/console/ExportMap.kt rename to src/net/torvald/terrarum/modulebasegame/console/ExportMap.kt index 5a3acfa05..ef937b4dc 100644 --- a/src/net/torvald/terrarum/console/ExportMap.kt +++ b/src/net/torvald/terrarum/modulebasegame/console/ExportMap.kt @@ -1,9 +1,13 @@ -package net.torvald.terrarum.console +package net.torvald.terrarum.modulebasegame.console import net.torvald.colourutil.Col4096 import net.torvald.terrarum.utils.RasterWriter import net.torvald.terrarum.Terrarum import net.torvald.terrarum.blockproperties.Block +import net.torvald.terrarum.console.ConsoleCommand +import net.torvald.terrarum.console.Echo +import net.torvald.terrarum.console.EchoError +import net.torvald.terrarum.modulebasegame.Ingame import java.io.* import java.util.HashMap @@ -58,12 +62,14 @@ internal object ExportMap : ConsoleCommand { } override fun execute(args: Array) { + val world = (Terrarum.ingame!! as Ingame).world + if (args.size == 2) { - var mapData = ByteArray(Terrarum.ingame!!.world.width * Terrarum.ingame!!.world.height * 3) + var mapData = ByteArray(world.width * world.height * 3) var mapDataPointer = 0 - for (tile in Terrarum.ingame!!.world.terrainIterator()) { + for (tile in world.terrainIterator()) { val colArray = (colorTable as Map) .getOrElse(tile, { Col4096(0xFFF) }).toByteArray() @@ -82,7 +88,7 @@ internal object ExportMap : ConsoleCommand { try { RasterWriter.writePNG_RGB( - Terrarum.ingame!!.world.width, Terrarum.ingame!!.world.height, mapData, dir + args[1] + ".png") + world.width, world.height, mapData, dir + args[1] + ".png") Echo("ExportMap: exported to " + args[1] + ".png") } diff --git a/src/net/torvald/terrarum/console/ForceGC.kt b/src/net/torvald/terrarum/modulebasegame/console/ForceGC.kt similarity index 66% rename from src/net/torvald/terrarum/console/ForceGC.kt rename to src/net/torvald/terrarum/modulebasegame/console/ForceGC.kt index 5bb714aab..112ed372e 100644 --- a/src/net/torvald/terrarum/console/ForceGC.kt +++ b/src/net/torvald/terrarum/modulebasegame/console/ForceGC.kt @@ -1,4 +1,7 @@ -package net.torvald.terrarum.console +package net.torvald.terrarum.modulebasegame.console + +import net.torvald.terrarum.console.ConsoleCommand +import net.torvald.terrarum.console.Echo /** * Created by minjaesong on 2016-01-18. diff --git a/src/net/torvald/terrarum/console/GetAV.kt b/src/net/torvald/terrarum/modulebasegame/console/GetAV.kt similarity index 70% rename from src/net/torvald/terrarum/console/GetAV.kt rename to src/net/torvald/terrarum/modulebasegame/console/GetAV.kt index f47e52d5d..54c3cde70 100644 --- a/src/net/torvald/terrarum/console/GetAV.kt +++ b/src/net/torvald/terrarum/modulebasegame/console/GetAV.kt @@ -1,7 +1,11 @@ -package net.torvald.terrarum.console +package net.torvald.terrarum.modulebasegame.console import net.torvald.terrarum.* import net.torvald.terrarum.Terrarum +import net.torvald.terrarum.console.ConsoleCommand +import net.torvald.terrarum.console.Echo +import net.torvald.terrarum.console.EchoError +import net.torvald.terrarum.modulebasegame.Ingame /** * Created by minjaesong on 2016-01-19. @@ -10,9 +14,12 @@ internal object GetAV : ConsoleCommand { override fun execute(args: Array) { try { - if (args.size == 1 && Terrarum.ingame!!.player != null) { + val ingame = Terrarum.ingame!! as Ingame + + + if (args.size == 1 && ingame.player != null) { // print all actorvalue of player - val av = Terrarum.ingame!!.player.actorValue + val av = ingame.player.actorValue val keyset = av.keySet Echo("$ccW== ActorValue list for ${ccY}player $ccW==") @@ -29,20 +36,20 @@ internal object GetAV : ConsoleCommand { // check if args[1] is number or not if (!args[1].isNum()) { // args[1] is ActorValue name Echo("${ccW}player.$ccM${args[1]} $ccW= " + - ccG + - Terrarum.ingame!!.player.actorValue[args[1]] + - " $ccO" + - Terrarum.ingame!!.player.actorValue[args[1]]!!.javaClass.simpleName + ccG + + ingame.player.actorValue[args[1]] + + " $ccO" + + ingame.player.actorValue[args[1]]!!.javaClass.simpleName ) println("[GetAV] player.${args[1]} = " + - Terrarum.ingame!!.player.actorValue[args[1]] + + ingame.player.actorValue[args[1]] + " " + - Terrarum.ingame!!.player.actorValue[args[1]]!!.javaClass.simpleName + ingame.player.actorValue[args[1]]!!.javaClass.simpleName ) } else { // args[1] is actor ID - val actor = Terrarum.ingame!!.getActorByID(args[1].toInt()) + val actor = ingame.getActorByID(args[1].toInt()) val av = actor.actorValue val keyset = av.keySet @@ -64,14 +71,14 @@ internal object GetAV : ConsoleCommand { val id = args[1].toInt() val av = args[2] Echo("$ccW$id.$ccM$av $ccW= $ccG" + - Terrarum.ingame!!.getActorByID(id).actorValue[av] + - " $ccO" + - Terrarum.ingame!!.getActorByID(id).actorValue[av]!!.javaClass.simpleName + ingame.getActorByID(id).actorValue[av] + + " $ccO" + + ingame.getActorByID(id).actorValue[av]!!.javaClass.simpleName ) println("$id.$av = " + - Terrarum.ingame!!.getActorByID(id).actorValue[av] + + ingame.getActorByID(id).actorValue[av] + " " + - Terrarum.ingame!!.getActorByID(id).actorValue[av]!!.javaClass.simpleName + ingame.getActorByID(id).actorValue[av]!!.javaClass.simpleName ) } } diff --git a/src/net/torvald/terrarum/console/GetFactioning.kt b/src/net/torvald/terrarum/modulebasegame/console/GetFactioning.kt similarity index 93% rename from src/net/torvald/terrarum/console/GetFactioning.kt rename to src/net/torvald/terrarum/modulebasegame/console/GetFactioning.kt index e820dbb4f..930df3154 100644 --- a/src/net/torvald/terrarum/console/GetFactioning.kt +++ b/src/net/torvald/terrarum/modulebasegame/console/GetFactioning.kt @@ -1,9 +1,13 @@ -package net.torvald.terrarum.console +package net.torvald.terrarum.modulebasegame.console import net.torvald.terrarum.langpack.Lang import net.torvald.terrarum.Terrarum +import net.torvald.terrarum.console.ConsoleCommand +import net.torvald.terrarum.console.Echo +import net.torvald.terrarum.console.EchoError import net.torvald.terrarum.gameactors.Factionable -import net.torvald.terrarum.gameactors.Player +import net.torvald.terrarum.modulebasegame.Ingame +import net.torvald.terrarum.modulebasegame.gameactors.Player import net.torvald.terrarumsansbitmap.gdx.GameFontBase /** diff --git a/src/net/torvald/terrarum/console/GetLocale.kt b/src/net/torvald/terrarum/modulebasegame/console/GetLocale.kt similarity index 77% rename from src/net/torvald/terrarum/console/GetLocale.kt rename to src/net/torvald/terrarum/modulebasegame/console/GetLocale.kt index 795cdf6a3..0958fc0ce 100644 --- a/src/net/torvald/terrarum/console/GetLocale.kt +++ b/src/net/torvald/terrarum/modulebasegame/console/GetLocale.kt @@ -1,5 +1,7 @@ -package net.torvald.terrarum.console +package net.torvald.terrarum.modulebasegame.console +import net.torvald.terrarum.console.ConsoleCommand +import net.torvald.terrarum.console.Echo import net.torvald.terrarum.langpack.Lang /** diff --git a/src/net/torvald/terrarum/console/GetTime.kt b/src/net/torvald/terrarum/modulebasegame/console/GetTime.kt similarity index 55% rename from src/net/torvald/terrarum/console/GetTime.kt rename to src/net/torvald/terrarum/modulebasegame/console/GetTime.kt index 63ae14b34..7556e42d6 100644 --- a/src/net/torvald/terrarum/console/GetTime.kt +++ b/src/net/torvald/terrarum/modulebasegame/console/GetTime.kt @@ -1,6 +1,9 @@ -package net.torvald.terrarum.console +package net.torvald.terrarum.modulebasegame.console import net.torvald.terrarum.Terrarum +import net.torvald.terrarum.console.ConsoleCommand +import net.torvald.terrarum.console.Echo +import net.torvald.terrarum.modulebasegame.Ingame /** * Created by minjaesong on 2016-03-20. @@ -8,7 +11,7 @@ import net.torvald.terrarum.Terrarum internal object GetTime : ConsoleCommand { override fun execute(args: Array) { - val worldTime = Terrarum.ingame!!.world.time + val worldTime = (Terrarum.ingame!! as Ingame).world.time Echo(worldTime.getFormattedTime()) } diff --git a/src/net/torvald/terrarum/console/GsonTest.kt b/src/net/torvald/terrarum/modulebasegame/console/GsonTest.kt similarity index 79% rename from src/net/torvald/terrarum/console/GsonTest.kt rename to src/net/torvald/terrarum/modulebasegame/console/GsonTest.kt index 2b5a663b7..81efd1a2f 100644 --- a/src/net/torvald/terrarum/console/GsonTest.kt +++ b/src/net/torvald/terrarum/modulebasegame/console/GsonTest.kt @@ -1,7 +1,10 @@ -package net.torvald.terrarum.console +package net.torvald.terrarum.modulebasegame.console import net.torvald.terrarum.Terrarum import com.google.gson.Gson +import net.torvald.terrarum.console.ConsoleCommand +import net.torvald.terrarum.console.Echo +import net.torvald.terrarum.modulebasegame.Ingame import java.io.BufferedWriter import java.io.FileWriter @@ -13,7 +16,7 @@ import java.io.IOException internal object GsonTest : ConsoleCommand { override fun execute(args: Array) { if (args.size == 2) { - val avelem = Gson().toJsonTree(Terrarum.ingame!!.player) + val avelem = Gson().toJsonTree((Terrarum.ingame!! as Ingame).player) val jsonString = avelem.toString() diff --git a/src/net/torvald/terrarum/console/Help.kt b/src/net/torvald/terrarum/modulebasegame/console/Help.kt similarity index 81% rename from src/net/torvald/terrarum/console/Help.kt rename to src/net/torvald/terrarum/modulebasegame/console/Help.kt index 705818fb7..f22fd1a6d 100644 --- a/src/net/torvald/terrarum/console/Help.kt +++ b/src/net/torvald/terrarum/modulebasegame/console/Help.kt @@ -1,5 +1,7 @@ -package net.torvald.terrarum.console +package net.torvald.terrarum.modulebasegame.console +import net.torvald.terrarum.console.ConsoleCommand +import net.torvald.terrarum.console.Echo import net.torvald.terrarum.langpack.Lang /** diff --git a/src/net/torvald/terrarum/console/ImportLayerData.kt b/src/net/torvald/terrarum/modulebasegame/console/ImportLayerData.kt similarity index 58% rename from src/net/torvald/terrarum/console/ImportLayerData.kt rename to src/net/torvald/terrarum/modulebasegame/console/ImportLayerData.kt index 27e856f22..841274ae4 100644 --- a/src/net/torvald/terrarum/console/ImportLayerData.kt +++ b/src/net/torvald/terrarum/modulebasegame/console/ImportLayerData.kt @@ -1,10 +1,12 @@ -package net.torvald.terrarum.console +package net.torvald.terrarum.modulebasegame.console import net.torvald.terrarum.Terrarum +import net.torvald.terrarum.console.ConsoleCommand +import net.torvald.terrarum.console.Echo +import net.torvald.terrarum.modulebasegame.Ingame import net.torvald.terrarum.serialise.ReadLayerData import net.torvald.terrarum.worlddrawer.FeaturesDrawer import java.io.FileInputStream -import java.util.zip.GZIPInputStream /** * Created by minjaesong on 2017-07-18. @@ -18,10 +20,10 @@ object ImportLayerData : ConsoleCommand { //val fis = GZIPInputStream(FileInputStream(args[1])) // this gzip is kaput val fis = FileInputStream(args[1]) - Terrarum.ingame!!.world = ReadLayerData(fis) - Terrarum.ingame!!.player.setPosition( - Terrarum.ingame!!.world.spawnY * FeaturesDrawer.TILE_SIZE.toDouble(), - Terrarum.ingame!!.world.spawnX * FeaturesDrawer.TILE_SIZE.toDouble() + (Terrarum.ingame!! as Ingame).world = ReadLayerData(fis) + (Terrarum.ingame!! as Ingame).player.setPosition( + (Terrarum.ingame!! as Ingame).world.spawnY * FeaturesDrawer.TILE_SIZE.toDouble(), + (Terrarum.ingame!! as Ingame).world.spawnX * FeaturesDrawer.TILE_SIZE.toDouble() ) fis.close() Echo("Successfully loaded ${args[1]}") diff --git a/src/net/torvald/terrarum/console/Inventory.kt b/src/net/torvald/terrarum/modulebasegame/console/Inventory.kt similarity index 80% rename from src/net/torvald/terrarum/console/Inventory.kt rename to src/net/torvald/terrarum/modulebasegame/console/Inventory.kt index 056912a1b..ee3d2affd 100644 --- a/src/net/torvald/terrarum/console/Inventory.kt +++ b/src/net/torvald/terrarum/modulebasegame/console/Inventory.kt @@ -1,16 +1,20 @@ -package net.torvald.terrarum.console +package net.torvald.terrarum.modulebasegame.console import net.torvald.terrarum.Terrarum -import net.torvald.terrarum.gameactors.Player -import net.torvald.terrarum.gameactors.Pocketed +import net.torvald.terrarum.console.ConsoleCommand +import net.torvald.terrarum.console.Echo +import net.torvald.terrarum.console.EchoError +import net.torvald.terrarum.modulebasegame.gameactors.Player +import net.torvald.terrarum.modulebasegame.gameactors.Pocketed import net.torvald.terrarum.itemproperties.ItemCodex +import net.torvald.terrarum.modulebasegame.Ingame /** * Created by minjaesong on 2016-12-12. */ internal object Inventory : ConsoleCommand { - private var target: Pocketed? = Terrarum.ingame!!.player + private var target: Pocketed? = (Terrarum.ingame!! as Ingame).player override fun execute(args: Array) { if (args.size == 1) { @@ -20,7 +24,7 @@ internal object Inventory : ConsoleCommand { when (args[1]) { "list" -> listInventory() "add" -> if (args.size > 3) addItem(args[2].toInt(), args[3].toInt()) - else addItem(args[2].toInt()) + else addItem(args[2].toInt()) "target" -> setTarget(args[2].toInt()) "equip" -> equipItem(args[2].toInt()) else -> printUsage() diff --git a/src/net/torvald/terrarum/console/JavaIMTest.kt b/src/net/torvald/terrarum/modulebasegame/console/JavaIMTest.kt similarity index 76% rename from src/net/torvald/terrarum/console/JavaIMTest.kt rename to src/net/torvald/terrarum/modulebasegame/console/JavaIMTest.kt index 1275c146e..7e58b4744 100644 --- a/src/net/torvald/terrarum/console/JavaIMTest.kt +++ b/src/net/torvald/terrarum/modulebasegame/console/JavaIMTest.kt @@ -1,5 +1,7 @@ -package net.torvald.terrarum.console +package net.torvald.terrarum.modulebasegame.console +import net.torvald.terrarum.console.ConsoleCommand +import net.torvald.terrarum.console.Echo import net.torvald.terrarum.swingapp.IMStringReader /** diff --git a/src/net/torvald/terrarum/console/KillActor.kt b/src/net/torvald/terrarum/modulebasegame/console/KillActor.kt similarity index 80% rename from src/net/torvald/terrarum/console/KillActor.kt rename to src/net/torvald/terrarum/modulebasegame/console/KillActor.kt index e04d96e4c..525dd58e5 100644 --- a/src/net/torvald/terrarum/console/KillActor.kt +++ b/src/net/torvald/terrarum/modulebasegame/console/KillActor.kt @@ -1,6 +1,9 @@ -package net.torvald.terrarum.console +package net.torvald.terrarum.modulebasegame.console import net.torvald.terrarum.Terrarum +import net.torvald.terrarum.console.ConsoleCommand +import net.torvald.terrarum.console.Echo +import net.torvald.terrarum.console.EchoError import net.torvald.terrarum.langpack.Lang /** diff --git a/src/net/torvald/terrarum/console/LangTest.kt b/src/net/torvald/terrarum/modulebasegame/console/LangTest.kt similarity index 74% rename from src/net/torvald/terrarum/console/LangTest.kt rename to src/net/torvald/terrarum/modulebasegame/console/LangTest.kt index a7ade7512..f9cd2dc2a 100644 --- a/src/net/torvald/terrarum/console/LangTest.kt +++ b/src/net/torvald/terrarum/modulebasegame/console/LangTest.kt @@ -1,5 +1,7 @@ -package net.torvald.terrarum.console +package net.torvald.terrarum.modulebasegame.console +import net.torvald.terrarum.console.ConsoleCommand +import net.torvald.terrarum.console.Echo import net.torvald.terrarum.langpack.Lang /** diff --git a/src/net/torvald/terrarum/console/MoneyDisp.kt b/src/net/torvald/terrarum/modulebasegame/console/MoneyDisp.kt similarity index 74% rename from src/net/torvald/terrarum/console/MoneyDisp.kt rename to src/net/torvald/terrarum/modulebasegame/console/MoneyDisp.kt index 35254878f..fc004c1f5 100644 --- a/src/net/torvald/terrarum/console/MoneyDisp.kt +++ b/src/net/torvald/terrarum/modulebasegame/console/MoneyDisp.kt @@ -1,6 +1,8 @@ -package net.torvald.terrarum.console +package net.torvald.terrarum.modulebasegame.console import net.torvald.random.HQRNG +import net.torvald.terrarum.console.ConsoleCommand +import net.torvald.terrarum.console.Echo object MoneyDisp : ConsoleCommand { override fun execute(args: Array) { diff --git a/src/net/torvald/terrarum/console/MusicTest.kt b/src/net/torvald/terrarum/modulebasegame/console/MusicTest.kt similarity index 88% rename from src/net/torvald/terrarum/console/MusicTest.kt rename to src/net/torvald/terrarum/modulebasegame/console/MusicTest.kt index 71d66c01b..76d13433e 100644 --- a/src/net/torvald/terrarum/console/MusicTest.kt +++ b/src/net/torvald/terrarum/modulebasegame/console/MusicTest.kt @@ -1,7 +1,9 @@ -package net.torvald.terrarum.console +package net.torvald.terrarum.modulebasegame.console import com.badlogic.gdx.Gdx import com.badlogic.gdx.audio.Music +import net.torvald.terrarum.console.ConsoleCommand +import net.torvald.terrarum.console.Echo /** * Created by minjaesong on 2016-08-02. diff --git a/src/net/torvald/terrarum/console/PrintRandomTips.kt b/src/net/torvald/terrarum/modulebasegame/console/PrintRandomTips.kt similarity index 70% rename from src/net/torvald/terrarum/console/PrintRandomTips.kt rename to src/net/torvald/terrarum/modulebasegame/console/PrintRandomTips.kt index c383c3210..234dbbf78 100644 --- a/src/net/torvald/terrarum/console/PrintRandomTips.kt +++ b/src/net/torvald/terrarum/modulebasegame/console/PrintRandomTips.kt @@ -1,7 +1,7 @@ -package net.torvald.terrarum.console +package net.torvald.terrarum.modulebasegame.console -import net.torvald.terrarum.langpack.Lang -import java.util.* +import net.torvald.terrarum.console.ConsoleCommand +import net.torvald.terrarum.console.Echo /** * Created by minjaesong on 2016-07-04. diff --git a/src/net/torvald/terrarum/modulebasegame/console/Seed.kt b/src/net/torvald/terrarum/modulebasegame/console/Seed.kt new file mode 100644 index 000000000..c9a32dcfd --- /dev/null +++ b/src/net/torvald/terrarum/modulebasegame/console/Seed.kt @@ -0,0 +1,23 @@ +package net.torvald.terrarum.modulebasegame.console + +import net.torvald.terrarum.* +import net.torvald.terrarum.Terrarum +import net.torvald.terrarum.console.ConsoleCommand +import net.torvald.terrarum.console.Echo +import net.torvald.terrarum.modulebasegame.Ingame + +/** + * Created by minjaesong on 2016-06-16. + */ +internal object Seed : ConsoleCommand { + + override fun execute(args: Array) { + Echo("Map$ccW: $ccG${(Terrarum.ingame!! as Ingame).world.generatorSeed}") + println("[seed] Map$ccW: $ccG${(Terrarum.ingame!! as Ingame).world.generatorSeed}") + // TODO display randomiser seed + } + + override fun printUsage() { + Echo("prints out the generator seed of the current game.") + } +} \ No newline at end of file diff --git a/src/net/torvald/terrarum/console/SetAV.kt b/src/net/torvald/terrarum/modulebasegame/console/SetAV.kt similarity index 91% rename from src/net/torvald/terrarum/console/SetAV.kt rename to src/net/torvald/terrarum/modulebasegame/console/SetAV.kt index 6c5bd9820..55647a94a 100644 --- a/src/net/torvald/terrarum/console/SetAV.kt +++ b/src/net/torvald/terrarum/modulebasegame/console/SetAV.kt @@ -1,7 +1,11 @@ -package net.torvald.terrarum.console +package net.torvald.terrarum.modulebasegame.console import net.torvald.terrarum.* import net.torvald.terrarum.Terrarum +import net.torvald.terrarum.console.ConsoleCommand +import net.torvald.terrarum.console.Echo +import net.torvald.terrarum.console.EchoError +import net.torvald.terrarum.modulebasegame.Ingame /** * Created by minjaesong on 2016-01-15. @@ -59,7 +63,7 @@ internal object SetAV : ConsoleCommand { return } - Terrarum.ingame!!.player.actorValue[args[1]] = newValue + (Terrarum.ingame!! as Ingame).player.actorValue[args[1]] = newValue Echo("${ccW}Set $ccM${args[1]} ${ccW}for ${ccY}player ${ccW}to $ccG$newValue") println("[SetAV] set ActorValue '${args[1]}' for player to '$newValue'.") } diff --git a/src/net/torvald/terrarum/console/SetBulletin.kt b/src/net/torvald/terrarum/modulebasegame/console/SetBulletin.kt similarity index 73% rename from src/net/torvald/terrarum/console/SetBulletin.kt rename to src/net/torvald/terrarum/modulebasegame/console/SetBulletin.kt index 23dca7d9f..c289de1bc 100644 --- a/src/net/torvald/terrarum/console/SetBulletin.kt +++ b/src/net/torvald/terrarum/modulebasegame/console/SetBulletin.kt @@ -1,7 +1,9 @@ -package net.torvald.terrarum.console +package net.torvald.terrarum.modulebasegame.console import net.torvald.terrarum.langpack.Lang import net.torvald.terrarum.Terrarum +import net.torvald.terrarum.console.ConsoleCommand +import net.torvald.terrarum.modulebasegame.Ingame /** * Created by minjaesong on 2016-01-23. @@ -24,7 +26,7 @@ internal object SetBulletin : ConsoleCommand { * @param message real message */ fun send(message: Array) { - Terrarum.ingame!!.sendNotification(message) + (Terrarum.ingame!! as Ingame).sendNotification(message) println("sent notifinator") } } diff --git a/src/net/torvald/terrarum/console/SetScale.kt b/src/net/torvald/terrarum/modulebasegame/console/SetScale.kt similarity index 71% rename from src/net/torvald/terrarum/console/SetScale.kt rename to src/net/torvald/terrarum/modulebasegame/console/SetScale.kt index 03dde766f..1f941f984 100644 --- a/src/net/torvald/terrarum/console/SetScale.kt +++ b/src/net/torvald/terrarum/modulebasegame/console/SetScale.kt @@ -1,7 +1,11 @@ -package net.torvald.terrarum.console +package net.torvald.terrarum.modulebasegame.console import net.torvald.terrarum.Terrarum -import net.torvald.terrarum.gameactors.ActorWithPhysics +import net.torvald.terrarum.console.ConsoleCommand +import net.torvald.terrarum.console.Echo +import net.torvald.terrarum.console.EchoError +import net.torvald.terrarum.modulebasegame.Ingame +import net.torvald.terrarum.modulebasegame.gameactors.ActorWithPhysics /** * Created by minjaesong on 2017-01-20. @@ -10,10 +14,10 @@ internal object SetScale : ConsoleCommand { override fun execute(args: Array) { if (args.size == 2 || args.size == 3) { try { - val targetID = if (args.size == 3) args[1].toInt() else Terrarum.ingame!!.player.referenceID + val targetID = if (args.size == 3) args[1].toInt() else (Terrarum.ingame!! as Ingame).player.referenceID val scale = args[if (args.size == 3) 2 else 1].toDouble() - val target = Terrarum.ingame!!.getActorByID(targetID) + val target = Terrarum.ingame!!.getActorByID(targetID!!) if (target !is ActorWithPhysics) { EchoError("Target is not ActorWithPhysics") diff --git a/src/net/torvald/terrarum/console/SetTime.kt b/src/net/torvald/terrarum/modulebasegame/console/SetTime.kt similarity index 50% rename from src/net/torvald/terrarum/console/SetTime.kt rename to src/net/torvald/terrarum/modulebasegame/console/SetTime.kt index c928a6eb5..aa2e83ac6 100644 --- a/src/net/torvald/terrarum/console/SetTime.kt +++ b/src/net/torvald/terrarum/modulebasegame/console/SetTime.kt @@ -1,20 +1,26 @@ -package net.torvald.terrarum.console +package net.torvald.terrarum.modulebasegame.console -import net.torvald.terrarum.gameworld.WorldTime +import net.torvald.terrarum.modulebasegame.gameworld.WorldTime import net.torvald.terrarum.Terrarum +import net.torvald.terrarum.console.ConsoleCommand +import net.torvald.terrarum.console.Echo +import net.torvald.terrarum.modulebasegame.Ingame /** * Created by minjaesong on 2016-03-20. */ internal object SetTime : ConsoleCommand { override fun execute(args: Array) { + val world = (Terrarum.ingame!! as Ingame).world + + if (args.size == 2) { val timeToSet = WorldTime.parseTime(args[1]) - Terrarum.ingame!!.world.time.setTimeOfToday(timeToSet) + world.time.setTimeOfToday(timeToSet) - Echo("Set time to ${Terrarum.ingame!!.world.time.todaySeconds} " + - "(${Terrarum.ingame!!.world.time.hours}h${formatMin(Terrarum.ingame!!.world.time.minutes)})") + Echo("Set time to ${world.time.todaySeconds} " + + "(${world.time.hours}h${formatMin(world.time.minutes)})") } else { printUsage() diff --git a/src/net/torvald/terrarum/console/SetTimeDelta.kt b/src/net/torvald/terrarum/modulebasegame/console/SetTimeDelta.kt similarity index 52% rename from src/net/torvald/terrarum/console/SetTimeDelta.kt rename to src/net/torvald/terrarum/modulebasegame/console/SetTimeDelta.kt index 4c2441532..19e068118 100644 --- a/src/net/torvald/terrarum/console/SetTimeDelta.kt +++ b/src/net/torvald/terrarum/modulebasegame/console/SetTimeDelta.kt @@ -1,6 +1,9 @@ -package net.torvald.terrarum.console +package net.torvald.terrarum.modulebasegame.console import net.torvald.terrarum.Terrarum +import net.torvald.terrarum.console.ConsoleCommand +import net.torvald.terrarum.console.Echo +import net.torvald.terrarum.modulebasegame.Ingame /** * Created by minjaesong on 2016-03-20. @@ -10,12 +13,15 @@ internal object SetTimeDelta : ConsoleCommand { val HARD_LIMIT = 60 override fun execute(args: Array) { + val world = (Terrarum.ingame!! as Ingame).world + + if (args.size == 2) { - Terrarum.ingame!!.world.time.timeDelta = args[1].toInt() - if (Terrarum.ingame!!.world.time.timeDelta == 0) + world.time.timeDelta = args[1].toInt() + if (world.time.timeDelta == 0) Echo("時間よ止まれ!ザ・ワルド!!") else - Echo("Set time delta to ${Terrarum.ingame!!.world.time.timeDelta}") + Echo("Set time delta to ${world.time.timeDelta}") } else { printUsage() diff --git a/src/net/torvald/terrarum/console/SpawnPhysTestBall.kt b/src/net/torvald/terrarum/modulebasegame/console/SpawnPhysTestBall.kt similarity index 73% rename from src/net/torvald/terrarum/console/SpawnPhysTestBall.kt rename to src/net/torvald/terrarum/modulebasegame/console/SpawnPhysTestBall.kt index 9df630d79..d4082ef72 100644 --- a/src/net/torvald/terrarum/console/SpawnPhysTestBall.kt +++ b/src/net/torvald/terrarum/modulebasegame/console/SpawnPhysTestBall.kt @@ -1,8 +1,10 @@ -package net.torvald.terrarum.console +package net.torvald.terrarum.modulebasegame.console -import net.torvald.terrarum.gameactors.PhysTestBall +import net.torvald.terrarum.modulebasegame.gameactors.PhysTestBall import net.torvald.terrarum.Terrarum -import net.torvald.terrarum.worlddrawer.WorldCamera +import net.torvald.terrarum.console.ConsoleCommand +import net.torvald.terrarum.console.Echo +import net.torvald.terrarum.modulebasegame.Ingame import org.dyn4j.geometry.Vector2 /** @@ -11,6 +13,9 @@ import org.dyn4j.geometry.Vector2 internal object SpawnPhysTestBall : ConsoleCommand { @Throws(Exception::class) override fun execute(args: Array) { + val world = (Terrarum.ingame!! as Ingame).world + + val mouseX = Terrarum.mouseX val mouseY = Terrarum.mouseY @@ -20,7 +25,7 @@ internal object SpawnPhysTestBall : ConsoleCommand { val xvel = args[2].toDouble() val yvel = if (args.size >= 4) args[3].toDouble() else 0.0 - val ball = PhysTestBall(Terrarum.ingame!!.world) + val ball = PhysTestBall(world) ball.setPosition(mouseX, mouseY) ball.elasticity = elasticity ball.applyForce(Vector2(xvel, yvel)) @@ -30,7 +35,7 @@ internal object SpawnPhysTestBall : ConsoleCommand { else if (args.size == 2) { val elasticity = args[1].toDouble() - val ball = PhysTestBall(Terrarum.ingame!!.world) + val ball = PhysTestBall(world) ball.setPosition(mouseX, mouseY) ball.elasticity = elasticity diff --git a/src/net/torvald/terrarum/console/SpawnPhysTestLunarLander.kt b/src/net/torvald/terrarum/modulebasegame/console/SpawnPhysTestLunarLander.kt similarity index 56% rename from src/net/torvald/terrarum/console/SpawnPhysTestLunarLander.kt rename to src/net/torvald/terrarum/modulebasegame/console/SpawnPhysTestLunarLander.kt index 6af77b71d..3176fb261 100644 --- a/src/net/torvald/terrarum/console/SpawnPhysTestLunarLander.kt +++ b/src/net/torvald/terrarum/modulebasegame/console/SpawnPhysTestLunarLander.kt @@ -1,8 +1,10 @@ -package net.torvald.terrarum.console +package net.torvald.terrarum.modulebasegame.console import net.torvald.terrarum.Terrarum -import net.torvald.terrarum.gameactors.PhysTestLuarLander -import net.torvald.terrarum.worlddrawer.WorldCamera +import net.torvald.terrarum.console.ConsoleCommand +import net.torvald.terrarum.console.Echo +import net.torvald.terrarum.modulebasegame.Ingame +import net.torvald.terrarum.modulebasegame.gameactors.PhysTestLuarLander /** * Created by minjaesong on 2018-01-18. @@ -11,7 +13,7 @@ internal object SpawnPhysTestLunarLander : ConsoleCommand { override fun execute(args: Array) { val mouseX = Terrarum.mouseX val mouseY = Terrarum.mouseY - val lander = PhysTestLuarLander(Terrarum.ingame!!.world) + val lander = PhysTestLuarLander((Terrarum.ingame!! as Ingame).world) lander.setPosition(mouseX, mouseY) diff --git a/src/net/torvald/terrarum/console/SpawnTapestry.kt b/src/net/torvald/terrarum/modulebasegame/console/SpawnTapestry.kt similarity index 69% rename from src/net/torvald/terrarum/console/SpawnTapestry.kt rename to src/net/torvald/terrarum/modulebasegame/console/SpawnTapestry.kt index 880207608..adb1f20cd 100644 --- a/src/net/torvald/terrarum/console/SpawnTapestry.kt +++ b/src/net/torvald/terrarum/modulebasegame/console/SpawnTapestry.kt @@ -1,7 +1,9 @@ -package net.torvald.terrarum.console +package net.torvald.terrarum.modulebasegame.console import net.torvald.terrarum.Terrarum -import net.torvald.terrarum.gameactors.DecodeTapestry +import net.torvald.terrarum.console.ConsoleCommand +import net.torvald.terrarum.console.Echo +import net.torvald.terrarum.modulebasegame.gameactors.DecodeTapestry import java.io.File /** diff --git a/src/net/torvald/terrarum/console/SpawnTikiTorch.kt b/src/net/torvald/terrarum/modulebasegame/console/SpawnTikiTorch.kt similarity index 52% rename from src/net/torvald/terrarum/console/SpawnTikiTorch.kt rename to src/net/torvald/terrarum/modulebasegame/console/SpawnTikiTorch.kt index cc61419e6..b57ca627a 100644 --- a/src/net/torvald/terrarum/console/SpawnTikiTorch.kt +++ b/src/net/torvald/terrarum/modulebasegame/console/SpawnTikiTorch.kt @@ -1,14 +1,17 @@ -package net.torvald.terrarum.console +package net.torvald.terrarum.modulebasegame.console import net.torvald.terrarum.Terrarum -import net.torvald.terrarum.gameactors.FixtureTikiTorch +import net.torvald.terrarum.console.ConsoleCommand +import net.torvald.terrarum.console.Echo +import net.torvald.terrarum.modulebasegame.Ingame +import net.torvald.terrarum.modulebasegame.gameactors.FixtureTikiTorch /** * Created by minjaesong on 2016-12-17. */ internal object SpawnTikiTorch : ConsoleCommand { override fun execute(args: Array) { - val torch = FixtureTikiTorch(Terrarum.ingame!!.world) + val torch = FixtureTikiTorch((Terrarum.ingame!! as Ingame).world) torch.setPosition(Terrarum.mouseX, Terrarum.mouseY) Terrarum.ingame!!.addNewActor(torch) diff --git a/src/net/torvald/terrarum/console/Teleport.kt b/src/net/torvald/terrarum/modulebasegame/console/Teleport.kt similarity index 88% rename from src/net/torvald/terrarum/console/Teleport.kt rename to src/net/torvald/terrarum/modulebasegame/console/Teleport.kt index 198db2952..9de9a4686 100644 --- a/src/net/torvald/terrarum/console/Teleport.kt +++ b/src/net/torvald/terrarum/modulebasegame/console/Teleport.kt @@ -1,8 +1,12 @@ -package net.torvald.terrarum.console +package net.torvald.terrarum.modulebasegame.console import net.torvald.terrarum.worlddrawer.FeaturesDrawer import net.torvald.terrarum.Terrarum -import net.torvald.terrarum.gameactors.ActorWithPhysics +import net.torvald.terrarum.console.ConsoleCommand +import net.torvald.terrarum.console.Echo +import net.torvald.terrarum.console.EchoError +import net.torvald.terrarum.modulebasegame.Ingame +import net.torvald.terrarum.modulebasegame.gameactors.ActorWithPhysics /** * Created by minjaesong on 2016-01-24. @@ -23,7 +27,7 @@ internal object Teleport : ConsoleCommand { return } - Terrarum.ingame!!.player.setPosition(x.toDouble(), y.toDouble()) + (Terrarum.ingame!! as Ingame).player.setPosition(x.toDouble(), y.toDouble()) } else if (args.size == 4) { if (args[2].toLowerCase() != "to") { @@ -35,7 +39,7 @@ internal object Teleport : ConsoleCommand { try { val fromActorID = args[1].toInt() val targetActorID = if (args[3].toLowerCase() == "player") - Terrarum.ingame!!.player.referenceID + (Terrarum.ingame!! as Ingame).player.referenceID!! else args[3].toInt() diff --git a/src/net/torvald/terrarum/console/ToggleNoClip.kt b/src/net/torvald/terrarum/modulebasegame/console/ToggleNoClip.kt similarity index 51% rename from src/net/torvald/terrarum/console/ToggleNoClip.kt rename to src/net/torvald/terrarum/modulebasegame/console/ToggleNoClip.kt index 1f7b5bc58..05ae44b44 100644 --- a/src/net/torvald/terrarum/console/ToggleNoClip.kt +++ b/src/net/torvald/terrarum/modulebasegame/console/ToggleNoClip.kt @@ -1,15 +1,18 @@ -package net.torvald.terrarum.console +package net.torvald.terrarum.modulebasegame.console import net.torvald.terrarum.Terrarum +import net.torvald.terrarum.console.ConsoleCommand +import net.torvald.terrarum.console.Echo +import net.torvald.terrarum.modulebasegame.Ingame /** * Created by minjaesong on 2016-01-19. */ internal object ToggleNoClip : ConsoleCommand { override fun execute(args: Array) { - val status = Terrarum.ingame!!.player.isNoClip() + val status = (Terrarum.ingame!! as Ingame).player.isNoClip() - Terrarum.ingame!!.player.setNoClip(!status) + (Terrarum.ingame!! as Ingame).player.setNoClip(!status) Echo("Set no-clip status to " + (!status).toString()) } diff --git a/src/net/torvald/terrarum/console/Zoom.kt b/src/net/torvald/terrarum/modulebasegame/console/Zoom.kt similarity index 87% rename from src/net/torvald/terrarum/console/Zoom.kt rename to src/net/torvald/terrarum/modulebasegame/console/Zoom.kt index e4a8c0b55..85665d33c 100644 --- a/src/net/torvald/terrarum/console/Zoom.kt +++ b/src/net/torvald/terrarum/modulebasegame/console/Zoom.kt @@ -1,6 +1,8 @@ -package net.torvald.terrarum.console +package net.torvald.terrarum.modulebasegame.console import net.torvald.terrarum.Terrarum +import net.torvald.terrarum.console.ConsoleCommand +import net.torvald.terrarum.console.Echo /** * Created by minjaesong on 2016-01-25. diff --git a/src/net/torvald/terrarum/debuggerapp/ActorValueTracker.kt b/src/net/torvald/terrarum/modulebasegame/debuggerapp/ActorValueTracker.kt similarity index 94% rename from src/net/torvald/terrarum/debuggerapp/ActorValueTracker.kt rename to src/net/torvald/terrarum/modulebasegame/debuggerapp/ActorValueTracker.kt index 7c67c484b..d7f0e7eff 100644 --- a/src/net/torvald/terrarum/debuggerapp/ActorValueTracker.kt +++ b/src/net/torvald/terrarum/modulebasegame/debuggerapp/ActorValueTracker.kt @@ -1,12 +1,13 @@ -package net.torvald.terrarum.debuggerapp +package net.torvald.terrarum.modulebasegame.debuggerapp import net.torvald.terrarum.* import net.torvald.terrarum.gameactors.ActorValue import net.torvald.terrarum.Terrarum import net.torvald.terrarum.console.Echo -import net.torvald.terrarum.console.SetAV +import net.torvald.terrarum.modulebasegame.console.SetAV import net.torvald.terrarum.gameactors.Actor -import net.torvald.terrarum.gameactors.ActorWithPhysics +import net.torvald.terrarum.modulebasegame.Ingame +import net.torvald.terrarum.modulebasegame.gameactors.ActorWithPhysics import net.torvald.terrarum.worlddrawer.FeaturesDrawer import java.awt.BorderLayout import java.awt.GridLayout @@ -67,7 +68,7 @@ class ActorValueTracker constructor() : JFrame() { "${actor!!.referenceID};" + "${modavInputKey.text};" + "${modavInputValue.text}" - ).split(';').toTypedArray()) + ).split(';').toTypedArray()) } } }) @@ -83,7 +84,7 @@ class ActorValueTracker constructor() : JFrame() { buttonChangeActor.addMouseListener(object : MouseAdapter() { override fun mousePressed(e: MouseEvent?) { if (actorIDField.text.toLowerCase() == "player") { - actor = Terrarum.ingame!!.player + actor = (Terrarum.ingame!! as Ingame).player actorValue = actor!!.actorValue } else if (actorIDField.text.isNotBlank()) { diff --git a/src/net/torvald/terrarum/gameactors/AVKey.kt b/src/net/torvald/terrarum/modulebasegame/gameactors/AVKey.kt similarity index 95% rename from src/net/torvald/terrarum/gameactors/AVKey.kt rename to src/net/torvald/terrarum/modulebasegame/gameactors/AVKey.kt index 77128e799..98b0527ff 100644 --- a/src/net/torvald/terrarum/gameactors/AVKey.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameactors/AVKey.kt @@ -1,4 +1,4 @@ -package net.torvald.terrarum.gameactors +package net.torvald.terrarum.modulebasegame.gameactors /** * See [res/raw/Creature_raw_doc.md] for information about raw. @@ -103,4 +103,9 @@ object AVKey { * Or for NPCs, how long it has been waiting for next move */ const val __ACTION_TIMER = "__actiontimer" + + + + const val HEALTH = "health" + const val MAGIC = "magic" } \ No newline at end of file diff --git a/src/net/torvald/terrarum/gameactors/ActorHumanoid.kt b/src/net/torvald/terrarum/modulebasegame/gameactors/ActorHumanoid.kt similarity index 96% rename from src/net/torvald/terrarum/gameactors/ActorHumanoid.kt rename to src/net/torvald/terrarum/modulebasegame/gameactors/ActorHumanoid.kt index 74f9cc077..a4ea1cbc3 100644 --- a/src/net/torvald/terrarum/gameactors/ActorHumanoid.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameactors/ActorHumanoid.kt @@ -1,15 +1,21 @@ -package net.torvald.terrarum.gameactors +package net.torvald.terrarum.modulebasegame.gameactors import com.badlogic.gdx.Gdx import com.badlogic.gdx.graphics.Color import com.jme3.math.FastMath import net.torvald.terrarum.Terrarum +import net.torvald.terrarum.bipolarClamp +import net.torvald.terrarum.gameactors.Controllable +import net.torvald.terrarum.gameactors.Factionable +import net.torvald.terrarum.gameactors.Hitbox +import net.torvald.terrarum.gameactors.Luminous import net.torvald.terrarum.gameactors.faction.Faction import net.torvald.terrarum.gameworld.GameWorld import net.torvald.terrarum.itemproperties.GameItem import net.torvald.terrarum.itemproperties.Material +import net.torvald.terrarum.modulebasegame.Ingame import net.torvald.terrarum.realestate.LandUtil -import net.torvald.terrarum.ui.UIInventoryFull +import net.torvald.terrarum.modulebasegame.ui.UIInventoryFull import net.torvald.terrarum.worlddrawer.LightmapRenderer import org.dyn4j.geometry.Vector2 import java.util.* @@ -143,7 +149,7 @@ open class ActorHumanoid( protected var isRightDown = false protected var isJumpDown = false protected inline val isGamer: Boolean - get() = if (Terrarum.ingame == null) false else this == Terrarum.ingame!!.player + get() = if (Terrarum.ingame == null) false else this == (Terrarum.ingame!! as Ingame).player private val nullItem = object : GameItem() { @@ -487,10 +493,10 @@ open class ActorHumanoid( get() { // compare all the affecting variables if (oldMAX_JUMP_LENGTH == MAX_JUMP_LENGTH && - oldJUMPPOWER == actorValue.getAsDouble(AVKey.JUMPPOWER)!! && - oldJUMPPOWERBUFF == actorValue.getAsDouble(AVKey.JUMPPOWERBUFF) ?: 1.0 && - oldScale == scale && - oldDragCoefficient == dragCoefficient) { + oldJUMPPOWER == actorValue.getAsDouble(AVKey.JUMPPOWER)!! && + oldJUMPPOWERBUFF == actorValue.getAsDouble(AVKey.JUMPPOWERBUFF) ?: 1.0 && + oldScale == scale && + oldDragCoefficient == dragCoefficient) { return field } // if variables are changed, get new value, store it and return it @@ -590,7 +596,7 @@ open class ActorHumanoid( // force update inventory UI try { - (Terrarum.ingame!!.uiInventoryPlayer as UIInventoryFull).rebuildList() + ((Terrarum.ingame!! as Ingame).uiInventoryPlayer as UIInventoryFull).rebuildList() } catch (LateInitMyArse: kotlin.UninitializedPropertyAccessException) { } } diff --git a/src/net/torvald/terrarum/gameactors/ActorInventory.kt b/src/net/torvald/terrarum/modulebasegame/gameactors/ActorInventory.kt similarity index 96% rename from src/net/torvald/terrarum/gameactors/ActorInventory.kt rename to src/net/torvald/terrarum/modulebasegame/gameactors/ActorInventory.kt index 3101fbdc1..da2fd15ae 100644 --- a/src/net/torvald/terrarum/gameactors/ActorInventory.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameactors/ActorInventory.kt @@ -1,13 +1,14 @@ -package net.torvald.terrarum.gameactors +package net.torvald.terrarum.modulebasegame.gameactors -import com.badlogic.gdx.Gdx import net.torvald.terrarum.Terrarum import net.torvald.terrarum.blockproperties.BlockCodex +import net.torvald.terrarum.gameactors.Actor import net.torvald.terrarum.itemproperties.GameItem import net.torvald.terrarum.itemproperties.ItemCodex import net.torvald.terrarum.itemproperties.ItemCodex.ITEM_DYNAMIC import net.torvald.terrarum.itemproperties.ItemCodex.ITEM_WALLS import net.torvald.terrarum.itemproperties.ItemID +import net.torvald.terrarum.modulebasegame.Ingame import java.util.* import java.util.concurrent.locks.Lock import java.util.concurrent.locks.ReentrantLock @@ -61,8 +62,8 @@ class ActorInventory(val actor: Pocketed, var maxCapacity: Int, var capacityMode "These commands are NOT INTERCHANGEABLE; they handle things differently according to the context.") if (item.originalID == Player.PLAYER_REF_ID || item.originalID == 0x51621D) // do not delete this magic throw IllegalArgumentException("Attempted to put human player into the inventory.") - if ((Terrarum.ingame?.gameFullyLoaded ?: false) && - (item.originalID == Terrarum.ingame?.player?.referenceID)) + if (((Terrarum.ingame as? Ingame)?.gameFullyLoaded ?: false) && + (item.originalID == (Terrarum.ingame as? Ingame)?.player?.referenceID)) throw IllegalArgumentException("Attempted to put active player into the inventory.") if ((!item.stackable || item.dynamicID in ITEM_DYNAMIC) && count > 1) throw IllegalArgumentException("Attempting to adding stack of item but the item is not stackable; item: $item, count: $count") diff --git a/src/net/torvald/terrarum/gameactors/ActorWithPhysics.kt b/src/net/torvald/terrarum/modulebasegame/gameactors/ActorWithPhysics.kt similarity index 94% rename from src/net/torvald/terrarum/gameactors/ActorWithPhysics.kt rename to src/net/torvald/terrarum/modulebasegame/gameactors/ActorWithPhysics.kt index 7da1bf9e2..bb597fd7e 100644 --- a/src/net/torvald/terrarum/gameactors/ActorWithPhysics.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameactors/ActorWithPhysics.kt @@ -1,9 +1,8 @@ -package net.torvald.terrarum.gameactors +package net.torvald.terrarum.modulebasegame.gameactors import com.badlogic.gdx.Input import com.badlogic.gdx.graphics.Color import com.badlogic.gdx.graphics.g2d.SpriteBatch -import com.jme3.math.FastMath import net.torvald.point.Point2d import net.torvald.terrarum.* import net.torvald.terrarum.gameworld.GameWorld @@ -13,16 +12,18 @@ import net.torvald.spriteanimation.SpriteAnimation import net.torvald.terrarum.worlddrawer.WorldCamera import net.torvald.terrarum.blockproperties.Block import net.torvald.terrarum.blockproperties.BlockProp +import net.torvald.terrarum.gameactors.ActorWithBody +import net.torvald.terrarum.gameactors.Controllable +import net.torvald.terrarum.gameactors.Hitbox import net.torvald.terrarum.gamecontroller.KeyToggler import net.torvald.terrarum.gameworld.BlockAddress +import net.torvald.terrarum.modulebasegame.Ingame import net.torvald.terrarum.realestate.LandUtil import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack import org.dyn4j.geometry.Vector2 import java.util.* -typealias Second = Float - /** * Base class for every actor that has animated sprites. This includes furnishings, paintings, gadgets, etc. * Also has all the usePhysics @@ -105,7 +106,7 @@ open class ActorWithPhysics(val world: GameWorld, renderOrder: RenderOrder, val /** Apparent scale. Use "avBaseScale" for base scale */ var scale: Double inline get() = (actorValue.getAsDouble(AVKey.SCALE) ?: 1.0) * - (actorValue.getAsDouble(AVKey.SCALEBUFF) ?: 1.0) + (actorValue.getAsDouble(AVKey.SCALEBUFF) ?: 1.0) set(value) { val scaleDelta = value - scale actorValue[AVKey.SCALE] = value / (actorValue.getAsDouble(AVKey.SCALEBUFF) ?: 1.0) @@ -675,15 +676,15 @@ open class ActorWithPhysics(val world: GameWorld, renderOrder: RenderOrder, val // points to the EDGE of the tile in world dimension (don't use this directly to get tilewise coord!!) val offendingTileWorldX = if (selfCollisionStatus in listOf(6, 12)) - newHitbox.endX.div(TILE_SIZE).floor() * TILE_SIZE - 0.00001 + newHitbox.endX.div(TILE_SIZE).floor() * TILE_SIZE - 0.00001 else - newHitbox.startX.div(TILE_SIZE).ceil() * TILE_SIZE + newHitbox.startX.div(TILE_SIZE).ceil() * TILE_SIZE // points to the EDGE of the tile in world dimension (don't use this directly to get tilewise coord!!) val offendingTileWorldY = if (selfCollisionStatus in listOf(3, 6)) - newHitbox.endY.div(TILE_SIZE).floor() * TILE_SIZE - 0.00001 + newHitbox.endY.div(TILE_SIZE).floor() * TILE_SIZE - 0.00001 else - newHitbox.startY.div(TILE_SIZE).ceil() * TILE_SIZE + newHitbox.startY.div(TILE_SIZE).ceil() * TILE_SIZE val offendingHitboxPointX = if (selfCollisionStatus in listOf(6, 12)) newHitbox.endX @@ -912,23 +913,23 @@ open class ActorWithPhysics(val world: GameWorld, renderOrder: RenderOrder, val val tileY: Int if (side == COLLIDING_LEFT) { tileX = div16TruncateToMapWidth(hitbox.hitboxStart.x.roundInt() - + i + translateX) + + i + translateX) tileY = div16TruncateToMapHeight(hitbox.hitboxEnd.y.roundInt() + translateY) } else if (side == COLLIDING_TOP) { tileX = div16TruncateToMapWidth(hitbox.hitboxStart.x.roundInt() - + i + translateX) + + i + translateX) tileY = div16TruncateToMapHeight(hitbox.hitboxStart.y.roundInt() + translateY) } else if (side == COLLIDING_RIGHT) { tileX = div16TruncateToMapWidth(hitbox.hitboxEnd.x.roundInt() + translateX) tileY = div16TruncateToMapHeight(hitbox.hitboxStart.y.roundInt() - + i + translateY) + + i + translateY) } else if (side == COLLIDING_LEFT) { tileX = div16TruncateToMapWidth(hitbox.hitboxStart.x.roundInt() + translateX) tileY = div16TruncateToMapHeight(hitbox.hitboxStart.y.roundInt() - + i + translateY) + + i + translateY) } else { throw IllegalArgumentException(side.toString() + ": Wrong side input") @@ -1324,7 +1325,7 @@ open class ActorWithPhysics(val world: GameWorld, renderOrder: RenderOrder, val } private fun forEachOccupyingTilePos(hitbox: Hitbox, consumer: (BlockAddress) -> Unit) { - val newTilewiseHitbox = Hitbox.fromTwoPoints( + val newTilewiseHitbox = Hitbox.fromTwoPoints( hitbox.startX.div(TILE_SIZE).floor(), hitbox.startY.div(TILE_SIZE).floor(), hitbox.endX.minus(0.00001).div(TILE_SIZE).floor(), @@ -1410,8 +1411,8 @@ open class ActorWithPhysics(val world: GameWorld, renderOrder: RenderOrder, val private fun div16TruncateToMapWidth(x: Int): Int { if (x < 0) return 0 - else if (x >= Terrarum.ingame!!.world.width shl 4) - return Terrarum.ingame!!.world.width - 1 + else if (x >= (Terrarum.ingame!! as Ingame).world.width shl 4) + return (Terrarum.ingame!! as Ingame).world.width - 1 else return x and 0x7FFFFFFF shr 4 } @@ -1419,8 +1420,8 @@ open class ActorWithPhysics(val world: GameWorld, renderOrder: RenderOrder, val private fun div16TruncateToMapHeight(y: Int): Int { if (y < 0) return 0 - else if (y >= Terrarum.ingame!!.world.height shl 4) - return Terrarum.ingame!!.world.height - 1 + else if (y >= (Terrarum.ingame!! as Ingame).world.height shl 4) + return (Terrarum.ingame!! as Ingame).world.height - 1 else return y and 0x7FFFFFFF shr 4 } @@ -1478,55 +1479,3 @@ open class ActorWithPhysics(val world: GameWorld, renderOrder: RenderOrder, val } } -inline fun Int.sqr(): Int = this * this -inline fun Double.floorInt() = Math.floor(this).toInt() -inline fun Float.floorInt() = FastMath.floor(this) -inline fun Float.floor() = FastMath.floor(this).toFloat() -inline fun Double.ceilInt() = Math.ceil(this).toInt() -inline fun Float.ceil(): Float = FastMath.ceil(this).toFloat() -inline fun Float.ceilInt() = FastMath.ceil(this) -inline fun Double.round() = Math.round(this).toDouble() -inline fun Double.floor() = Math.floor(this) -inline fun Double.ceil() = this.floor() + 1.0 -inline fun Double.roundInt(): Int = Math.round(this).toInt() -inline fun Float.roundInt(): Int = Math.round(this) -inline fun Double.abs() = Math.abs(this) -inline fun Double.sqr() = this * this -inline fun Double.sqrt() = Math.sqrt(this) -inline fun Float.sqrt() = FastMath.sqrt(this) -inline fun Int.abs() = if (this < 0) -this else this -fun Double.bipolarClamp(limit: Double) = - if (this > 0 && this > limit) limit - else if (this < 0 && this < -limit) -limit - else this - -fun absMax(left: Double, right: Double): Double { - if (left > 0 && right > 0) - if (left > right) return left - else return right - else if (left < 0 && right < 0) - if (left < right) return left - else return right - else { - val absL = left.abs() - val absR = right.abs() - if (absL > absR) return left - else return right - } -} - -fun Double.magnSqr() = if (this >= 0.0) this.sqr() else -this.sqr() -fun Double.sign() = if (this > 0.0) 1.0 else if (this < 0.0) -1.0 else 0.0 - -fun interpolateLinear(scale: Double, startValue: Double, endValue: Double): Double { - if (startValue == endValue) { - return startValue - } - if (scale <= 0.0) { - return startValue - } - if (scale >= 1.0) { - return endValue - } - return (1.0 - scale) * startValue + scale * endValue -} \ No newline at end of file diff --git a/src/net/torvald/terrarum/gameactors/CanBeAnItem.kt b/src/net/torvald/terrarum/modulebasegame/gameactors/CanBeAnItem.kt similarity index 81% rename from src/net/torvald/terrarum/gameactors/CanBeAnItem.kt rename to src/net/torvald/terrarum/modulebasegame/gameactors/CanBeAnItem.kt index 6f5c2d2be..510df1300 100644 --- a/src/net/torvald/terrarum/gameactors/CanBeAnItem.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameactors/CanBeAnItem.kt @@ -1,4 +1,4 @@ -package net.torvald.terrarum.gameactors +package net.torvald.terrarum.modulebasegame.gameactors import net.torvald.terrarum.itemproperties.GameItem diff --git a/src/net/torvald/terrarum/gameactors/CreatureBuilder.kt b/src/net/torvald/terrarum/modulebasegame/gameactors/CreatureBuilder.kt similarity index 83% rename from src/net/torvald/terrarum/gameactors/CreatureBuilder.kt rename to src/net/torvald/terrarum/modulebasegame/gameactors/CreatureBuilder.kt index 37a04d428..592f5a230 100644 --- a/src/net/torvald/terrarum/gameactors/CreatureBuilder.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameactors/CreatureBuilder.kt @@ -1,5 +1,6 @@ -package net.torvald.terrarum.gameactors +package net.torvald.terrarum.modulebasegame.gameactors +import net.torvald.terrarum.gameactors.Actor import net.torvald.terrarum.gameworld.GameWorld diff --git a/src/net/torvald/terrarum/gameactors/DecodeTapestry.kt b/src/net/torvald/terrarum/modulebasegame/gameactors/DecodeTapestry.kt similarity index 96% rename from src/net/torvald/terrarum/gameactors/DecodeTapestry.kt rename to src/net/torvald/terrarum/modulebasegame/gameactors/DecodeTapestry.kt index b51e2554a..287d96cdc 100644 --- a/src/net/torvald/terrarum/gameactors/DecodeTapestry.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameactors/DecodeTapestry.kt @@ -1,9 +1,10 @@ -package net.torvald.terrarum.gameactors +package net.torvald.terrarum.modulebasegame.gameactors import com.badlogic.gdx.graphics.Color import com.badlogic.gdx.graphics.Pixmap import net.torvald.terrarum.Terrarum import net.torvald.terrarum.gameworld.toUint +import net.torvald.terrarum.modulebasegame.Ingame import java.io.File import java.nio.charset.Charset import java.util.* @@ -172,6 +173,6 @@ object DecodeTapestry { readCounter++ } - return TapestryObject(Terrarum.ingame!!.world, outImageData, artName, authorName) + return TapestryObject((Terrarum.ingame!! as Ingame).world, outImageData, artName, authorName) } } \ No newline at end of file diff --git a/src/net/torvald/terrarum/gameactors/DroppedItem.kt b/src/net/torvald/terrarum/modulebasegame/gameactors/DroppedItem.kt similarity index 90% rename from src/net/torvald/terrarum/gameactors/DroppedItem.kt rename to src/net/torvald/terrarum/modulebasegame/gameactors/DroppedItem.kt index 6069bfb54..68917604f 100644 --- a/src/net/torvald/terrarum/gameactors/DroppedItem.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameactors/DroppedItem.kt @@ -1,4 +1,4 @@ -package net.torvald.terrarum.gameactors +package net.torvald.terrarum.modulebasegame.gameactors import com.badlogic.gdx.graphics.g2d.SpriteBatch import net.torvald.terrarum.itemproperties.GameItem @@ -9,7 +9,7 @@ import net.torvald.terrarum.gameworld.GameWorld /** * Created by minjaesong on 2016-03-15. */ -open class DroppedItem(world: GameWorld, private val item: GameItem) : ActorWithPhysics(world, Actor.RenderOrder.MIDTOP) { +open class DroppedItem(world: GameWorld, private val item: GameItem) : ActorWithPhysics(world, RenderOrder.MIDTOP) { init { if (item.dynamicID >= ItemCodex.ACTORID_MIN) diff --git a/src/net/torvald/terrarum/gameactors/FixtureBase.kt b/src/net/torvald/terrarum/modulebasegame/gameactors/FixtureBase.kt similarity index 85% rename from src/net/torvald/terrarum/gameactors/FixtureBase.kt rename to src/net/torvald/terrarum/modulebasegame/gameactors/FixtureBase.kt index 611713db2..23771b74e 100644 --- a/src/net/torvald/terrarum/gameactors/FixtureBase.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameactors/FixtureBase.kt @@ -1,4 +1,4 @@ -package net.torvald.terrarum.gameactors +package net.torvald.terrarum.modulebasegame.gameactors import net.torvald.terrarum.gameworld.GameWorld @@ -6,7 +6,7 @@ import net.torvald.terrarum.gameworld.GameWorld * Created by minjaesong on 2016-06-17. */ open class FixtureBase(world: GameWorld, physics: Boolean = true) : - ActorWithPhysics(world, Actor.RenderOrder.BEHIND, immobileBody = true, usePhysics = physics) { + ActorWithPhysics(world, RenderOrder.BEHIND, immobileBody = true, usePhysics = physics) { /** * 0: Open * 1: Blocked diff --git a/src/net/torvald/terrarum/gameactors/FixtureTikiTorch.kt b/src/net/torvald/terrarum/modulebasegame/gameactors/FixtureTikiTorch.kt similarity index 87% rename from src/net/torvald/terrarum/gameactors/FixtureTikiTorch.kt rename to src/net/torvald/terrarum/modulebasegame/gameactors/FixtureTikiTorch.kt index c83676502..93d7f607b 100644 --- a/src/net/torvald/terrarum/gameactors/FixtureTikiTorch.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameactors/FixtureTikiTorch.kt @@ -1,9 +1,11 @@ -package net.torvald.terrarum.gameactors +package net.torvald.terrarum.modulebasegame.gameactors import com.badlogic.gdx.graphics.Color import net.torvald.terrarum.ModMgr import net.torvald.terrarum.blockproperties.Block import net.torvald.terrarum.blockproperties.BlockCodex +import net.torvald.terrarum.gameactors.Hitbox +import net.torvald.terrarum.gameactors.Luminous import net.torvald.terrarum.gameworld.GameWorld import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack import java.util.* diff --git a/src/net/torvald/terrarum/gameactors/HistoricalFigure.kt b/src/net/torvald/terrarum/modulebasegame/gameactors/HistoricalFigure.kt similarity index 85% rename from src/net/torvald/terrarum/gameactors/HistoricalFigure.kt rename to src/net/torvald/terrarum/modulebasegame/gameactors/HistoricalFigure.kt index e8f08aea7..455039c12 100644 --- a/src/net/torvald/terrarum/gameactors/HistoricalFigure.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameactors/HistoricalFigure.kt @@ -1,9 +1,10 @@ -package net.torvald.terrarum.gameactors +package net.torvald.terrarum.modulebasegame.gameactors import net.torvald.random.HQRNG import net.torvald.terrarum.Terrarum import net.torvald.terrarum.gameworld.GameWorld -import net.torvald.terrarum.gameworld.WorldTime +import net.torvald.terrarum.modulebasegame.Ingame +import net.torvald.terrarum.modulebasegame.gameworld.WorldTime typealias AnyPlayer = HistoricalFigure @@ -21,7 +22,7 @@ open class HistoricalFigure( val dead: GameDate? = null, realAirFriction: Boolean = false, usePhysics: Boolean = true -) : ActorWithPhysics(world, Actor.RenderOrder.MIDDLE, realAirFriction, usePhysics) { +) : ActorWithPhysics(world, RenderOrder.MIDDLE, realAirFriction, usePhysics) { var historicalFigureIdentifier: Int = generateHistoricalFigureIdentifier() internal set @@ -29,7 +30,7 @@ open class HistoricalFigure( private fun generateHistoricalFigureIdentifier(): Int { fun hasCollision(value: Int) = try { - Terrarum.ingame!!.historicalFigureIDBucket.contains(value) + (Terrarum.ingame!! as Ingame).historicalFigureIDBucket.contains(value) } catch (gameNotInitialisedException: KotlinNullPointerException) { false diff --git a/src/net/torvald/terrarum/gameactors/HumanoidNPC.kt b/src/net/torvald/terrarum/modulebasegame/gameactors/HumanoidNPC.kt similarity index 89% rename from src/net/torvald/terrarum/gameactors/HumanoidNPC.kt rename to src/net/torvald/terrarum/modulebasegame/gameactors/HumanoidNPC.kt index 04599fa31..058ecdaee 100644 --- a/src/net/torvald/terrarum/gameactors/HumanoidNPC.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameactors/HumanoidNPC.kt @@ -1,8 +1,8 @@ -package net.torvald.terrarum.gameactors +package net.torvald.terrarum.modulebasegame.gameactors import net.torvald.terrarum.Terrarum +import net.torvald.terrarum.gameactors.AIControlled import net.torvald.terrarum.gameactors.ai.ActorAI -import net.torvald.terrarum.gameactors.ai.LuaAIWrapper import net.torvald.terrarum.gameworld.GameWorld import net.torvald.terrarum.itemproperties.GameItem import net.torvald.terrarum.itemproperties.Material @@ -16,15 +16,12 @@ open class HumanoidNPC( world: GameWorld, override val ai: ActorAI, // it's there for written-in-Kotlin, "hard-wired" AIs born: GameDate, - usePhysics: Boolean = true + usePhysics: Boolean = true, + forceAssignRefID: Int? = null ) : ActorHumanoid(world, born, usePhysics = usePhysics), AIControlled, CanBeAnItem { - constructor(world: GameWorld, luaAi: LuaAIWrapper, born: GameDate) : this(world, luaAi as ActorAI, born) { - luaAi.attachActor(this) - } - companion object { - val DEFAULT_COLLISION_TYPE = ActorWithPhysics.COLLISION_DYNAMIC + val DEFAULT_COLLISION_TYPE = COLLISION_DYNAMIC } init { @@ -33,7 +30,7 @@ open class HumanoidNPC( // we're having GameItem data so that this class could be somewhat universal override var itemData: GameItem = object : GameItem() { - override var dynamicID = referenceID + override var dynamicID = referenceID ?: forceAssignRefID!! override val originalID = dynamicID override val isUnique = true override var baseMass: Double diff --git a/src/net/torvald/terrarum/gameactors/InjectCreatureRaw.kt b/src/net/torvald/terrarum/modulebasegame/gameactors/InjectCreatureRaw.kt similarity index 97% rename from src/net/torvald/terrarum/gameactors/InjectCreatureRaw.kt rename to src/net/torvald/terrarum/modulebasegame/gameactors/InjectCreatureRaw.kt index 3ce108754..f5df73b6d 100644 --- a/src/net/torvald/terrarum/gameactors/InjectCreatureRaw.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameactors/InjectCreatureRaw.kt @@ -1,10 +1,11 @@ -package net.torvald.terrarum.gameactors +package net.torvald.terrarum.modulebasegame.gameactors import net.torvald.terrarum.utils.JsonFetcher import net.torvald.random.Fudge3 import net.torvald.terrarum.langpack.Lang import com.google.gson.JsonObject import net.torvald.terrarum.ModMgr +import net.torvald.terrarum.gameactors.ActorValue import java.security.SecureRandom /** diff --git a/src/net/torvald/terrarum/gameactors/LandHolder.kt b/src/net/torvald/terrarum/modulebasegame/gameactors/LandHolder.kt similarity index 87% rename from src/net/torvald/terrarum/gameactors/LandHolder.kt rename to src/net/torvald/terrarum/modulebasegame/gameactors/LandHolder.kt index 14bf3898a..47fbce046 100644 --- a/src/net/torvald/terrarum/gameactors/LandHolder.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameactors/LandHolder.kt @@ -1,4 +1,4 @@ -package net.torvald.terrarum.gameactors +package net.torvald.terrarum.modulebasegame.gameactors import java.util.* diff --git a/src/net/torvald/terrarum/gameactors/ParticleBase.kt b/src/net/torvald/terrarum/modulebasegame/gameactors/ParticleBase.kt similarity index 80% rename from src/net/torvald/terrarum/gameactors/ParticleBase.kt rename to src/net/torvald/terrarum/modulebasegame/gameactors/ParticleBase.kt index d5cfec8da..206bfb465 100644 --- a/src/net/torvald/terrarum/gameactors/ParticleBase.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameactors/ParticleBase.kt @@ -1,13 +1,17 @@ -package net.torvald.terrarum.gameactors +package net.torvald.terrarum.modulebasegame.gameactors -import com.badlogic.gdx.Gdx import com.badlogic.gdx.graphics.g2d.SpriteBatch import com.badlogic.gdx.graphics.g2d.TextureRegion +import net.torvald.terrarum.Second import net.torvald.terrarum.Terrarum -import net.torvald.terrarum.gameactors.ActorWithPhysics.Companion.SI_TO_GAME_ACC +import net.torvald.terrarum.modulebasegame.gameactors.ActorWithPhysics.Companion.SI_TO_GAME_ACC import net.torvald.terrarum.worlddrawer.FeaturesDrawer.TILE_SIZE import net.torvald.terrarum.blockproperties.Block import net.torvald.terrarum.blockproperties.BlockCodex +import net.torvald.terrarum.floorInt +import net.torvald.terrarum.gameactors.Actor +import net.torvald.terrarum.gameactors.Hitbox +import net.torvald.terrarum.modulebasegame.Ingame import org.dyn4j.geometry.Vector2 /** @@ -44,7 +48,7 @@ open class ParticleBase(renderOrder: Actor.RenderOrder, val despawnUponCollision if (despawnUponCollision) { if (velocity.isZero || // simple stuck check - BlockCodex[Terrarum.ingame!!.world.getTileFromTerrain( + BlockCodex[(Terrarum.ingame!! as Ingame).world.getTileFromTerrain( hitbox.canonicalX.div(TILE_SIZE).floorInt(), hitbox.canonicalY.div(TILE_SIZE).floorInt() ) ?: Block.STONE].isSolid) { @@ -58,7 +62,7 @@ open class ParticleBase(renderOrder: Actor.RenderOrder, val despawnUponCollision // gravity, winds, etc. (external forces) if (!isNoSubjectToGrav) { - velocity += Terrarum.ingame!!.world.gravitation / dragCoefficient * SI_TO_GAME_ACC + velocity += (Terrarum.ingame!! as Ingame).world.gravitation / dragCoefficient * SI_TO_GAME_ACC } diff --git a/src/net/torvald/terrarum/gameactors/ParticleMegaRain.kt b/src/net/torvald/terrarum/modulebasegame/gameactors/ParticleMegaRain.kt similarity index 95% rename from src/net/torvald/terrarum/gameactors/ParticleMegaRain.kt rename to src/net/torvald/terrarum/modulebasegame/gameactors/ParticleMegaRain.kt index 9d72aabcb..c0884abc9 100644 --- a/src/net/torvald/terrarum/gameactors/ParticleMegaRain.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameactors/ParticleMegaRain.kt @@ -1,11 +1,12 @@ -package net.torvald.terrarum.gameactors +package net.torvald.terrarum.modulebasegame.gameactors import com.badlogic.gdx.graphics.Pixmap import com.badlogic.gdx.graphics.Texture import com.badlogic.gdx.graphics.g2d.TextureRegion import net.torvald.random.HQRNG import net.torvald.terrarum.ModMgr -import net.torvald.terrarum.Terrarum +import net.torvald.terrarum.Second +import net.torvald.terrarum.gameactors.Actor /** * Created by minjaesong on 2017-12-18. diff --git a/src/net/torvald/terrarum/gameactors/ParticleTestRain.kt b/src/net/torvald/terrarum/modulebasegame/gameactors/ParticleTestRain.kt similarity index 86% rename from src/net/torvald/terrarum/gameactors/ParticleTestRain.kt rename to src/net/torvald/terrarum/modulebasegame/gameactors/ParticleTestRain.kt index 8145f04b1..a7f594e81 100644 --- a/src/net/torvald/terrarum/gameactors/ParticleTestRain.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameactors/ParticleTestRain.kt @@ -1,8 +1,9 @@ -package net.torvald.terrarum.gameactors +package net.torvald.terrarum.modulebasegame.gameactors import com.badlogic.gdx.graphics.Texture import com.badlogic.gdx.graphics.g2d.TextureRegion import net.torvald.terrarum.ModMgr +import net.torvald.terrarum.gameactors.Actor /** * Created by minjaesong on 2017-01-20. diff --git a/src/net/torvald/terrarum/gameactors/PhysTestBall.kt b/src/net/torvald/terrarum/modulebasegame/gameactors/PhysTestBall.kt similarity index 68% rename from src/net/torvald/terrarum/gameactors/PhysTestBall.kt rename to src/net/torvald/terrarum/modulebasegame/gameactors/PhysTestBall.kt index 9522c2c3e..e74ddb1c3 100644 --- a/src/net/torvald/terrarum/gameactors/PhysTestBall.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameactors/PhysTestBall.kt @@ -1,15 +1,16 @@ -package net.torvald.terrarum.gameactors +package net.torvald.terrarum.modulebasegame.gameactors import com.badlogic.gdx.graphics.Color import com.badlogic.gdx.graphics.g2d.SpriteBatch import net.torvald.terrarum.Terrarum import net.torvald.terrarum.gameworld.GameWorld -import net.torvald.terrarum.worldgenerator.RoguelikeRandomiser +import net.torvald.terrarum.modulebasegame.Ingame +import net.torvald.terrarum.modulebasegame.worldgenerator.RoguelikeRandomiser /** * Created by minjaesong on 2016-03-05. */ -class PhysTestBall(world: GameWorld) : ActorWithPhysics(world, Actor.RenderOrder.MIDDLE, immobileBody = true) { +class PhysTestBall(world: GameWorld) : ActorWithPhysics(world, RenderOrder.MIDDLE, immobileBody = true) { private var color = Color.GOLD @@ -31,13 +32,13 @@ class PhysTestBall(world: GameWorld) : ActorWithPhysics(world, Actor.RenderOrder ) it.circle( - hitbox.startX.toFloat() + Terrarum.ingame!!.world.width * TILE_SIZE - 1f, + hitbox.startX.toFloat() + (Terrarum.ingame!! as Ingame).world.width * TILE_SIZE - 1f, hitbox.startY.toFloat() - 1f, hitbox.width.toFloat() ) it.circle( - hitbox.startX.toFloat() - Terrarum.ingame!!.world.width * TILE_SIZE - 1f, + hitbox.startX.toFloat() - (Terrarum.ingame!! as Ingame).world.width * TILE_SIZE - 1f, hitbox.startY.toFloat() - 1f, hitbox.width.toFloat() ) diff --git a/src/net/torvald/terrarum/gameactors/PhysTestLuarLander.kt b/src/net/torvald/terrarum/modulebasegame/gameactors/PhysTestLuarLander.kt similarity index 90% rename from src/net/torvald/terrarum/gameactors/PhysTestLuarLander.kt rename to src/net/torvald/terrarum/modulebasegame/gameactors/PhysTestLuarLander.kt index a5d4a538e..c4837123e 100644 --- a/src/net/torvald/terrarum/gameactors/PhysTestLuarLander.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameactors/PhysTestLuarLander.kt @@ -1,4 +1,4 @@ -package net.torvald.terrarum.gameactors +package net.torvald.terrarum.modulebasegame.gameactors import com.badlogic.gdx.Gdx import com.badlogic.gdx.Input @@ -6,6 +6,8 @@ import com.badlogic.gdx.graphics.Color import com.badlogic.gdx.graphics.Texture import com.badlogic.gdx.graphics.g2d.SpriteBatch import net.torvald.terrarum.ModMgr +import net.torvald.terrarum.gameactors.Controllable +import net.torvald.terrarum.gameactors.Hitbox import net.torvald.terrarum.gameworld.GameWorld /** diff --git a/src/net/torvald/terrarum/gameactors/PlayableActorDelegate.kt b/src/net/torvald/terrarum/modulebasegame/gameactors/PlayableActorDelegate.kt similarity index 88% rename from src/net/torvald/terrarum/gameactors/PlayableActorDelegate.kt rename to src/net/torvald/terrarum/modulebasegame/gameactors/PlayableActorDelegate.kt index da6a64031..38f138bce 100644 --- a/src/net/torvald/terrarum/gameactors/PlayableActorDelegate.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameactors/PlayableActorDelegate.kt @@ -1,6 +1,6 @@ -package net.torvald.terrarum.gameactors +package net.torvald.terrarum.modulebasegame.gameactors -import net.torvald.terrarum.worlddrawer.LightmapRenderer +import net.torvald.terrarum.gameactors.Controllable /** * A wrapper to support instant player changing (or possessing other NPCs maybe) diff --git a/src/net/torvald/terrarum/gameactors/Player.kt b/src/net/torvald/terrarum/modulebasegame/gameactors/Player.kt similarity index 92% rename from src/net/torvald/terrarum/gameactors/Player.kt rename to src/net/torvald/terrarum/modulebasegame/gameactors/Player.kt index 6f1f0f2a7..913b3085f 100644 --- a/src/net/torvald/terrarum/gameactors/Player.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameactors/Player.kt @@ -1,4 +1,4 @@ -package net.torvald.terrarum.gameactors +package net.torvald.terrarum.modulebasegame.gameactors import net.torvald.terrarum.gameworld.GameWorld diff --git a/src/net/torvald/terrarum/gameactors/PlayerBuilder.kt b/src/net/torvald/terrarum/modulebasegame/gameactors/PlayerBuilder.kt similarity index 62% rename from src/net/torvald/terrarum/gameactors/PlayerBuilder.kt rename to src/net/torvald/terrarum/modulebasegame/gameactors/PlayerBuilder.kt index 0f637c31f..4cf72ae74 100644 --- a/src/net/torvald/terrarum/gameactors/PlayerBuilder.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameactors/PlayerBuilder.kt @@ -1,6 +1,8 @@ -package net.torvald.terrarum.gameactors +package net.torvald.terrarum.modulebasegame.gameactors import net.torvald.terrarum.Terrarum +import net.torvald.terrarum.gameactors.Actor +import net.torvald.terrarum.modulebasegame.Ingame /** * Created by minjaesong on 2016-02-03. @@ -8,7 +10,7 @@ import net.torvald.terrarum.Terrarum object PlayerBuilder { operator fun invoke(): Actor { - val p: Actor = Player(Terrarum.ingame!!.world, Terrarum.ingame!!.world.time.currentTimeAsGameDate) + val p: Actor = Player((Terrarum.ingame!! as Ingame).world, (Terrarum.ingame!! as Ingame).world.time.currentTimeAsGameDate) InjectCreatureRaw(p.actorValue, "basegame", "CreatureHuman.json") // attach sprite diff --git a/src/net/torvald/terrarum/gameactors/PlayerBuilderCynthia.kt b/src/net/torvald/terrarum/modulebasegame/gameactors/PlayerBuilderCynthia.kt similarity index 84% rename from src/net/torvald/terrarum/gameactors/PlayerBuilderCynthia.kt rename to src/net/torvald/terrarum/modulebasegame/gameactors/PlayerBuilderCynthia.kt index 41106023d..38be22f0b 100644 --- a/src/net/torvald/terrarum/gameactors/PlayerBuilderCynthia.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameactors/PlayerBuilderCynthia.kt @@ -1,8 +1,9 @@ -package net.torvald.terrarum.gameactors +package net.torvald.terrarum.modulebasegame.gameactors import net.torvald.terrarum.ModMgr import net.torvald.terrarum.Terrarum -import net.torvald.terrarum.gameactors.ai.LuaAIWrapper +import net.torvald.terrarum.gameactors.ai.NullAI +import net.torvald.terrarum.modulebasegame.Ingame import net.torvald.terrarum.worlddrawer.FeaturesDrawer import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack @@ -14,8 +15,8 @@ object PlayerBuilderCynthia { operator fun invoke(): ActorWithPhysics { //val p: Player = Player(GameDate(100, 143)) // random value thrown val p: HumanoidNPC = HumanoidNPC( - Terrarum.ingame!!.world, - LuaAIWrapper("/net/torvald/terrarum/gameactors/ai/scripts/PokemonNPCAI.lua"), + (Terrarum.ingame!! as Ingame).world, + NullAI(), GameDate(100, 143)) // random value thrown InjectCreatureRaw(p.actorValue, "basegame", "CreatureHuman.json") diff --git a/src/net/torvald/terrarum/gameactors/PlayerBuilderSigrid.kt b/src/net/torvald/terrarum/modulebasegame/gameactors/PlayerBuilderSigrid.kt similarity index 95% rename from src/net/torvald/terrarum/gameactors/PlayerBuilderSigrid.kt rename to src/net/torvald/terrarum/modulebasegame/gameactors/PlayerBuilderSigrid.kt index 26eda5b47..bc134cecd 100644 --- a/src/net/torvald/terrarum/gameactors/PlayerBuilderSigrid.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameactors/PlayerBuilderSigrid.kt @@ -1,11 +1,11 @@ -package net.torvald.terrarum.gameactors +package net.torvald.terrarum.modulebasegame.gameactors import net.torvald.terrarum.ModMgr import net.torvald.terrarum.Terrarum import net.torvald.terrarum.gameactors.faction.FactionFactory import net.torvald.terrarum.itemproperties.ItemCodex -import net.torvald.terrarum.worlddrawer.FeaturesDrawer import net.torvald.terrarum.blockproperties.Block +import net.torvald.terrarum.modulebasegame.Ingame import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack /** @@ -15,7 +15,7 @@ import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack object PlayerBuilderSigrid { operator fun invoke(): Player { - val p = Player(Terrarum.ingame!!.world, GameDate(-2147483648, 0)) // XD + val p = Player((Terrarum.ingame!! as Ingame).world, GameDate(-2147483648, 0)) // XD p.referenceID = 0x51621D // the only constant of this procedural universe p.historicalFigureIdentifier = 0x51621D // the only constant of this procedural universe diff --git a/src/net/torvald/terrarum/gameactors/PlayerBuilderTestSubject1.kt b/src/net/torvald/terrarum/modulebasegame/gameactors/PlayerBuilderTestSubject1.kt similarity index 82% rename from src/net/torvald/terrarum/gameactors/PlayerBuilderTestSubject1.kt rename to src/net/torvald/terrarum/modulebasegame/gameactors/PlayerBuilderTestSubject1.kt index fab02f739..f9815c565 100644 --- a/src/net/torvald/terrarum/gameactors/PlayerBuilderTestSubject1.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameactors/PlayerBuilderTestSubject1.kt @@ -1,7 +1,8 @@ -package net.torvald.terrarum.gameactors +package net.torvald.terrarum.modulebasegame.gameactors import net.torvald.terrarum.ModMgr import net.torvald.terrarum.Terrarum +import net.torvald.terrarum.modulebasegame.Ingame import net.torvald.terrarum.worlddrawer.FeaturesDrawer import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack @@ -10,7 +11,7 @@ import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack */ object PlayerBuilderTestSubject1 { operator fun invoke(): Player { - val p: Player = Player(Terrarum.ingame!!.world, GameDate(100, 143)) // random value thrown + val p: Player = Player((Terrarum.ingame!! as Ingame).world, GameDate(100, 143)) // random value thrown InjectCreatureRaw(p.actorValue, "basegame", "CreatureHuman.json") diff --git a/src/net/torvald/terrarum/gameactors/Pocketed.kt b/src/net/torvald/terrarum/modulebasegame/gameactors/Pocketed.kt similarity index 96% rename from src/net/torvald/terrarum/gameactors/Pocketed.kt rename to src/net/torvald/terrarum/modulebasegame/gameactors/Pocketed.kt index 415f19a2c..666a2d4c1 100644 --- a/src/net/torvald/terrarum/gameactors/Pocketed.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameactors/Pocketed.kt @@ -1,7 +1,7 @@ -package net.torvald.terrarum.gameactors +package net.torvald.terrarum.modulebasegame.gameactors -import com.badlogic.gdx.Gdx import net.torvald.terrarum.Terrarum +import net.torvald.terrarum.gameactors.Actor import net.torvald.terrarum.itemproperties.GameItem import net.torvald.terrarum.itemproperties.ItemCodex diff --git a/src/net/torvald/terrarum/gameactors/Projectile.kt b/src/net/torvald/terrarum/modulebasegame/gameactors/Projectile.kt similarity index 77% rename from src/net/torvald/terrarum/gameactors/Projectile.kt rename to src/net/torvald/terrarum/modulebasegame/gameactors/Projectile.kt index 7553a927b..66984eae4 100644 --- a/src/net/torvald/terrarum/gameactors/Projectile.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameactors/Projectile.kt @@ -1,4 +1,4 @@ -package net.torvald.terrarum.gameactors +package net.torvald.terrarum.modulebasegame.gameactors /** * Projectile marker. Used to kill them when they're far away from the player, instead of making them sleep. diff --git a/src/net/torvald/terrarum/gameactors/ProjectileHoming.kt b/src/net/torvald/terrarum/modulebasegame/gameactors/ProjectileHoming.kt similarity index 86% rename from src/net/torvald/terrarum/gameactors/ProjectileHoming.kt rename to src/net/torvald/terrarum/modulebasegame/gameactors/ProjectileHoming.kt index 0f6194d79..720b980c2 100644 --- a/src/net/torvald/terrarum/gameactors/ProjectileHoming.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameactors/ProjectileHoming.kt @@ -1,4 +1,4 @@ -package net.torvald.terrarum.gameactors +package net.torvald.terrarum.modulebasegame.gameactors import net.torvald.terrarum.gameworld.GameWorld import org.dyn4j.geometry.Vector2 diff --git a/src/net/torvald/terrarum/gameactors/ProjectileSimple.kt b/src/net/torvald/terrarum/modulebasegame/gameactors/ProjectileSimple.kt similarity index 90% rename from src/net/torvald/terrarum/gameactors/ProjectileSimple.kt rename to src/net/torvald/terrarum/modulebasegame/gameactors/ProjectileSimple.kt index ed95045a7..03028fb06 100644 --- a/src/net/torvald/terrarum/gameactors/ProjectileSimple.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameactors/ProjectileSimple.kt @@ -1,4 +1,4 @@ -package net.torvald.terrarum.gameactors +package net.torvald.terrarum.modulebasegame.gameactors import com.badlogic.gdx.graphics.Color import com.badlogic.gdx.graphics.g2d.SpriteBatch @@ -6,7 +6,10 @@ import net.torvald.point.Point2d import net.torvald.terrarum.Terrarum import net.torvald.terrarum.blockproperties.Block import net.torvald.terrarum.blockproperties.BlockCodex +import net.torvald.terrarum.gameactors.Hitbox +import net.torvald.terrarum.gameactors.Luminous import net.torvald.terrarum.gameworld.GameWorld +import net.torvald.terrarum.modulebasegame.Ingame import org.dyn4j.geometry.Vector2 import java.util.* @@ -22,7 +25,7 @@ open class ProjectileSimple( private val type: Int, fromPoint: Vector2, // projected coord toPoint: Vector2 // arriving coord -) : ActorWithPhysics(world, Actor.RenderOrder.MIDTOP), Luminous, Projectile { +) : ActorWithPhysics(world, RenderOrder.MIDTOP), Luminous, Projectile { val damage: Int val displayColour: Color @@ -74,7 +77,7 @@ open class ProjectileSimple( lifetimeCounter += delta if (walledTop || walledBottom || walledRight || walledLeft || lifetimeCounter >= lifetimeMax || // stuck check - BlockCodex[Terrarum.ingame!!.world.getTileFromTerrain(feetPosTile[0], feetPosTile[1]) ?: Block.STONE].isSolid + BlockCodex[(Terrarum.ingame!! as Ingame).world.getTileFromTerrain(feetPosTile[0], feetPosTile[1]) ?: Block.STONE].isSolid ) { flagDespawn() } diff --git a/src/net/torvald/terrarum/gameactors/TapestryObject.kt b/src/net/torvald/terrarum/modulebasegame/gameactors/TapestryObject.kt similarity index 95% rename from src/net/torvald/terrarum/gameactors/TapestryObject.kt rename to src/net/torvald/terrarum/modulebasegame/gameactors/TapestryObject.kt index c8e5c389a..667ae1d96 100644 --- a/src/net/torvald/terrarum/gameactors/TapestryObject.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameactors/TapestryObject.kt @@ -1,4 +1,4 @@ -package net.torvald.terrarum.gameactors +package net.torvald.terrarum.modulebasegame.gameactors import com.badlogic.gdx.graphics.Pixmap import com.badlogic.gdx.graphics.Texture diff --git a/src/net/torvald/terrarum/gameactors/ThreadActorUpdate.kt b/src/net/torvald/terrarum/modulebasegame/gameactors/ThreadActorUpdate.kt similarity index 91% rename from src/net/torvald/terrarum/gameactors/ThreadActorUpdate.kt rename to src/net/torvald/terrarum/modulebasegame/gameactors/ThreadActorUpdate.kt index 411a18da9..665b0f860 100644 --- a/src/net/torvald/terrarum/gameactors/ThreadActorUpdate.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameactors/ThreadActorUpdate.kt @@ -1,6 +1,5 @@ -package net.torvald.terrarum.gameactors +package net.torvald.terrarum.modulebasegame.gameactors -import com.badlogic.gdx.Gdx import net.torvald.terrarum.Terrarum /** diff --git a/src/net/torvald/terrarum/gameactors/WeaponSwung.kt b/src/net/torvald/terrarum/modulebasegame/gameactors/WeaponSwung.kt similarity index 81% rename from src/net/torvald/terrarum/gameactors/WeaponSwung.kt rename to src/net/torvald/terrarum/modulebasegame/gameactors/WeaponSwung.kt index 7a5c56021..9019fa536 100644 --- a/src/net/torvald/terrarum/gameactors/WeaponSwung.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameactors/WeaponSwung.kt @@ -1,12 +1,14 @@ -package net.torvald.terrarum.gameactors +package net.torvald.terrarum.modulebasegame.gameactors import com.badlogic.gdx.graphics.Color +import net.torvald.terrarum.gameactors.Hitbox +import net.torvald.terrarum.gameactors.Luminous import net.torvald.terrarum.gameworld.GameWorld /** * Created by minjaesong on 2016-04-26. */ -class WeaponSwung(world: GameWorld, val itemID: Int) : ActorWithPhysics(world, Actor.RenderOrder.MIDTOP), Luminous { +class WeaponSwung(world: GameWorld, val itemID: Int) : ActorWithPhysics(world, RenderOrder.MIDTOP), Luminous { // just let the solver use AABB; it's cheap but works just enough /** diff --git a/src/net/torvald/terrarum/gameactors/ai/SmarterSlimes.kt b/src/net/torvald/terrarum/modulebasegame/gameactors/ai/SmarterSlimes.kt similarity index 70% rename from src/net/torvald/terrarum/gameactors/ai/SmarterSlimes.kt rename to src/net/torvald/terrarum/modulebasegame/gameactors/ai/SmarterSlimes.kt index b469b2b36..455784afe 100644 --- a/src/net/torvald/terrarum/gameactors/ai/SmarterSlimes.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameactors/ai/SmarterSlimes.kt @@ -1,8 +1,11 @@ -package net.torvald.terrarum.gameactors.ai +package net.torvald.terrarum.modulebasegame.gameactors.ai import net.torvald.terrarum.Terrarum -import net.torvald.terrarum.gameactors.HumanoidNPC -import net.torvald.terrarum.gameactors.Second +import net.torvald.terrarum.modulebasegame.gameactors.HumanoidNPC +import net.torvald.terrarum.Second +import net.torvald.terrarum.gameactors.Actor +import net.torvald.terrarum.gameactors.ai.ActorAI +import net.torvald.terrarum.modulebasegame.Ingame /** * Slime's stupid AI but can adjust his jump power to smack you as fast as possible @@ -22,14 +25,17 @@ class SmarterSlimes : ActorAI { var cooltime: Second = 5f - override fun update(actor: HumanoidNPC, delta: Float) { + override fun update(actor: Actor, delta: Float) { + val actor = actor as HumanoidNPC + + // sensor: compare(my X pos, nearest enemy's X pos) maxJumpDist = actor.avSpeedCap * actor.jumpAirTime // speed * air_time // (to be precise, we need simulation just like jumpAirTime, but oh well; we like it LINEAR) // TEST: just target player - val playerXPos = Terrarum.ingame!!.player.centrePosPoint.x + val playerXPos = (Terrarum.ingame!! as Ingame).player.centrePosPoint.x val thisXPos = actor.centrePosPoint.x val xDiff = thisXPos - playerXPos @@ -46,6 +52,4 @@ class SmarterSlimes : ActorAI { } - - } \ No newline at end of file diff --git a/src/net/torvald/terrarum/gameactors/physicssolver/CollisionSolver.kt b/src/net/torvald/terrarum/modulebasegame/gameactors/physicssolver/CollisionSolver.kt similarity index 96% rename from src/net/torvald/terrarum/gameactors/physicssolver/CollisionSolver.kt rename to src/net/torvald/terrarum/modulebasegame/gameactors/physicssolver/CollisionSolver.kt index 5b24b9670..378a23dd3 100644 --- a/src/net/torvald/terrarum/gameactors/physicssolver/CollisionSolver.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameactors/physicssolver/CollisionSolver.kt @@ -1,7 +1,8 @@ -package net.torvald.terrarum.gameactors.physicssolver +package net.torvald.terrarum.modulebasegame.gameactors.physicssolver import net.torvald.terrarum.Terrarum -import net.torvald.terrarum.gameactors.ActorWithPhysics +import net.torvald.terrarum.modulebasegame.Ingame +import net.torvald.terrarum.modulebasegame.gameactors.ActorWithPhysics import java.util.* /** @@ -38,7 +39,7 @@ object CollisionSolver { collCandidateY.clear() // mark list x - Terrarum.ingame!!.actorContainer.forEach { it -> + (Terrarum.ingame!! as Ingame).actorContainer.forEach { it -> if (it is ActorWithPhysics) { collListX.add(CollisionMarkings(it.hitbox.hitboxStart.x, STARTPOINT, it)) collListX.add(CollisionMarkings(it.hitbox.hitboxEnd.x, ENDPOINT, it)) @@ -71,7 +72,7 @@ object CollisionSolver { collCandidateStack.clear() // mark list y - Terrarum.ingame!!.actorContainer.forEach { it -> + (Terrarum.ingame!! as Ingame).actorContainer.forEach { it -> if (it is ActorWithPhysics) { collListY.add(CollisionMarkings(it.hitbox.hitboxStart.y, STARTPOINT, it)) collListY.add(CollisionMarkings(it.hitbox.hitboxEnd.y, ENDPOINT, it)) diff --git a/src/net/torvald/terrarum/gameactors/physicssolver/SolveByUnit.kt b/src/net/torvald/terrarum/modulebasegame/gameactors/physicssolver/SolveByUnit.kt similarity index 76% rename from src/net/torvald/terrarum/gameactors/physicssolver/SolveByUnit.kt rename to src/net/torvald/terrarum/modulebasegame/gameactors/physicssolver/SolveByUnit.kt index f95d252b3..8faa9c3ed 100644 --- a/src/net/torvald/terrarum/gameactors/physicssolver/SolveByUnit.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameactors/physicssolver/SolveByUnit.kt @@ -1,4 +1,4 @@ -package net.torvald.terrarum.gameactors.physicssolver +package net.torvald.terrarum.modulebasegame.gameactors.physicssolver /** * multithreaded version of CollisionSolver#solveCollision diff --git a/src/net/torvald/terrarum/gameactors/physicssolver/VelocitySolver.kt b/src/net/torvald/terrarum/modulebasegame/gameactors/physicssolver/VelocitySolver.kt similarity index 54% rename from src/net/torvald/terrarum/gameactors/physicssolver/VelocitySolver.kt rename to src/net/torvald/terrarum/modulebasegame/gameactors/physicssolver/VelocitySolver.kt index 85b9260cd..f6193fb4b 100644 --- a/src/net/torvald/terrarum/gameactors/physicssolver/VelocitySolver.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameactors/physicssolver/VelocitySolver.kt @@ -1,6 +1,6 @@ -package net.torvald.terrarum.gameactors.physicssolver +package net.torvald.terrarum.modulebasegame.gameactors.physicssolver -import net.torvald.terrarum.gameactors.ActorWithPhysics +import net.torvald.terrarum.modulebasegame.gameactors.ActorWithPhysics /** * Created by minjaesong on 2016-05-01. diff --git a/src/net/torvald/terrarum/gameworld/GameEconomy.kt b/src/net/torvald/terrarum/modulebasegame/gameworld/GameEconomy.kt similarity index 94% rename from src/net/torvald/terrarum/gameworld/GameEconomy.kt rename to src/net/torvald/terrarum/modulebasegame/gameworld/GameEconomy.kt index 5a0ba1716..0abc4549a 100644 --- a/src/net/torvald/terrarum/gameworld/GameEconomy.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameworld/GameEconomy.kt @@ -1,4 +1,4 @@ -package net.torvald.terrarum.gameworld +package net.torvald.terrarum.modulebasegame.gameworld import net.torvald.terrarum.gameactors.ActorID diff --git a/src/net/torvald/terrarum/gameworld/WorldSimulator.kt b/src/net/torvald/terrarum/modulebasegame/gameworld/WorldSimulator.kt similarity index 96% rename from src/net/torvald/terrarum/gameworld/WorldSimulator.kt rename to src/net/torvald/terrarum/modulebasegame/gameworld/WorldSimulator.kt index 0dd9eb9f7..90b67ac2d 100644 --- a/src/net/torvald/terrarum/gameworld/WorldSimulator.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameworld/WorldSimulator.kt @@ -1,14 +1,17 @@ -package net.torvald.terrarum.gameworld +package net.torvald.terrarum.modulebasegame.gameworld import com.badlogic.gdx.graphics.Color import com.badlogic.gdx.graphics.g2d.SpriteBatch import net.torvald.terrarum.Terrarum -import net.torvald.terrarum.gameactors.AnyPlayer -import net.torvald.terrarum.gameactors.roundInt +import net.torvald.terrarum.modulebasegame.gameactors.AnyPlayer +import net.torvald.terrarum.roundInt import net.torvald.terrarum.worlddrawer.BlocksDrawer import net.torvald.terrarum.worlddrawer.FeaturesDrawer import net.torvald.terrarum.blockproperties.Block import net.torvald.terrarum.blockproperties.BlockCodex +import net.torvald.terrarum.gameworld.FluidCodex +import net.torvald.terrarum.gameworld.GameWorld +import net.torvald.terrarum.modulebasegame.Ingame /** * Created by minjaesong on 2016-08-03. @@ -35,7 +38,7 @@ object WorldSimulator { val colourNone = Color(0x808080FF.toInt()) val colourWater = Color(0x66BBFFFF.toInt()) - private val world = Terrarum.ingame!!.world + private val world = (Terrarum.ingame!! as Ingame).world operator fun invoke(p: AnyPlayer?, delta: Float) { if (p != null) { diff --git a/src/net/torvald/terrarum/gameworld/WorldTime.kt b/src/net/torvald/terrarum/modulebasegame/gameworld/WorldTime.kt similarity index 97% rename from src/net/torvald/terrarum/gameworld/WorldTime.kt rename to src/net/torvald/terrarum/modulebasegame/gameworld/WorldTime.kt index 4f6232492..14b428f5a 100644 --- a/src/net/torvald/terrarum/gameworld/WorldTime.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameworld/WorldTime.kt @@ -1,6 +1,6 @@ -package net.torvald.terrarum.gameworld +package net.torvald.terrarum.modulebasegame.gameworld -import net.torvald.terrarum.gameactors.GameDate +import net.torvald.terrarum.modulebasegame.gameactors.GameDate /** * The World Calendar implementation of Dwarven Calendar, except: @@ -128,11 +128,11 @@ class WorldTime(initTime: Long = 0L) { fun parseTime(s: String): Int = if (s.length >= 4 && s.contains('h')) { - s.toLowerCase().substringBefore('h').toInt() * WorldTime.HOUR_SEC + - s.toLowerCase().substringAfter('h').toInt() * WorldTime.MINUTE_SEC + s.toLowerCase().substringBefore('h').toInt() * HOUR_SEC + + s.toLowerCase().substringAfter('h').toInt() * MINUTE_SEC } else if (s.endsWith("h", true)) { - s.toLowerCase().substring(0, s.length - 1).toInt() * WorldTime.HOUR_SEC + s.toLowerCase().substring(0, s.length - 1).toInt() * HOUR_SEC } else { s.toInt() diff --git a/src/net/torvald/terrarum/gameworld/WorldTime_old.kt b/src/net/torvald/terrarum/modulebasegame/gameworld/WorldTime_old.kt similarity index 98% rename from src/net/torvald/terrarum/gameworld/WorldTime_old.kt rename to src/net/torvald/terrarum/modulebasegame/gameworld/WorldTime_old.kt index c996bc58b..ad0f406d9 100644 --- a/src/net/torvald/terrarum/gameworld/WorldTime_old.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameworld/WorldTime_old.kt @@ -1,6 +1,6 @@ -package net.torvald.terrarum.gameworld +package net.torvald.terrarum.modulebasegame.gameworld -import net.torvald.terrarum.gameactors.GameDate +import net.torvald.terrarum.modulebasegame.gameactors.GameDate /** * The World Calendar implementation of Dwarven Calendar (we're talking about DF!) diff --git a/src/net/torvald/terrarum/imagefont/NewRunes.kt b/src/net/torvald/terrarum/modulebasegame/imagefont/NewRunes.kt similarity index 97% rename from src/net/torvald/terrarum/imagefont/NewRunes.kt rename to src/net/torvald/terrarum/modulebasegame/imagefont/NewRunes.kt index 3d20b01ca..cc00a81f6 100644 --- a/src/net/torvald/terrarum/imagefont/NewRunes.kt +++ b/src/net/torvald/terrarum/modulebasegame/imagefont/NewRunes.kt @@ -1,4 +1,4 @@ -package net.torvald.terrarum.imagefont +package net.torvald.terrarum.modulebasegame.imagefont import com.badlogic.gdx.graphics.g2d.Batch import com.badlogic.gdx.graphics.g2d.BitmapFont diff --git a/src/net/torvald/terrarum/imagefont/Watch7SegMain.kt b/src/net/torvald/terrarum/modulebasegame/imagefont/Watch7SegMain.kt similarity index 95% rename from src/net/torvald/terrarum/imagefont/Watch7SegMain.kt rename to src/net/torvald/terrarum/modulebasegame/imagefont/Watch7SegMain.kt index 28a9d5938..1a69bad37 100644 --- a/src/net/torvald/terrarum/imagefont/Watch7SegMain.kt +++ b/src/net/torvald/terrarum/modulebasegame/imagefont/Watch7SegMain.kt @@ -1,4 +1,4 @@ -package net.torvald.terrarum.imagefont +package net.torvald.terrarum.modulebasegame.imagefont import com.badlogic.gdx.graphics.g2d.Batch import com.badlogic.gdx.graphics.g2d.BitmapFont diff --git a/src/net/torvald/terrarum/imagefont/Watch7SegSmall.kt b/src/net/torvald/terrarum/modulebasegame/imagefont/Watch7SegSmall.kt similarity index 95% rename from src/net/torvald/terrarum/imagefont/Watch7SegSmall.kt rename to src/net/torvald/terrarum/modulebasegame/imagefont/Watch7SegSmall.kt index cbae2aa52..cd2e2b25b 100644 --- a/src/net/torvald/terrarum/imagefont/Watch7SegSmall.kt +++ b/src/net/torvald/terrarum/modulebasegame/imagefont/Watch7SegSmall.kt @@ -1,4 +1,4 @@ -package net.torvald.terrarum.imagefont +package net.torvald.terrarum.modulebasegame.imagefont import com.badlogic.gdx.graphics.g2d.Batch import com.badlogic.gdx.graphics.g2d.BitmapFont diff --git a/src/net/torvald/terrarum/imagefont/WatchDotAlph.kt b/src/net/torvald/terrarum/modulebasegame/imagefont/WatchDotAlph.kt similarity index 95% rename from src/net/torvald/terrarum/imagefont/WatchDotAlph.kt rename to src/net/torvald/terrarum/modulebasegame/imagefont/WatchDotAlph.kt index 04bd7797e..5794b10c4 100644 --- a/src/net/torvald/terrarum/imagefont/WatchDotAlph.kt +++ b/src/net/torvald/terrarum/modulebasegame/imagefont/WatchDotAlph.kt @@ -1,4 +1,4 @@ -package net.torvald.terrarum.imagefont +package net.torvald.terrarum.modulebasegame.imagefont import com.badlogic.gdx.graphics.g2d.Batch import com.badlogic.gdx.graphics.g2d.BitmapFont diff --git a/src/net/torvald/terrarum/modulebasegame/items/PickaxeGeneric.kt b/src/net/torvald/terrarum/modulebasegame/items/PickaxeGeneric.kt index 665eb9b7b..6d6ce28de 100644 --- a/src/net/torvald/terrarum/modulebasegame/items/PickaxeGeneric.kt +++ b/src/net/torvald/terrarum/modulebasegame/items/PickaxeGeneric.kt @@ -3,12 +3,13 @@ package net.torvald.terrarum.modulebasegame.items import net.torvald.point.Point2d import net.torvald.terrarum.Terrarum import net.torvald.terrarum.blockproperties.Block -import net.torvald.terrarum.gameactors.AVKey -import net.torvald.terrarum.gameactors.ActorWithPhysics +import net.torvald.terrarum.modulebasegame.gameactors.AVKey +import net.torvald.terrarum.modulebasegame.gameactors.ActorWithPhysics import net.torvald.terrarum.itemproperties.Calculate import net.torvald.terrarum.itemproperties.GameItem import net.torvald.terrarum.itemproperties.ItemID import net.torvald.terrarum.itemproperties.Material +import net.torvald.terrarum.modulebasegame.Ingame /** * Created by minjaesong on 2017-07-17. @@ -37,7 +38,7 @@ class PickaxeGeneric(override val originalID: ItemID) : GameItem() { val mouseTileY = Terrarum.mouseTileY val mousePoint = Point2d(mouseTileX.toDouble(), mouseTileY.toDouble()) - val actorvalue = Terrarum.ingame!!.player.actorValue + val actorvalue = (Terrarum.ingame!! as Ingame).player.actorValue using = true @@ -49,15 +50,15 @@ class PickaxeGeneric(override val originalID: ItemID) : GameItem() { }) // return false if here's no tile - if (Block.AIR == Terrarum.ingame!!.world.getTileFromTerrain(mouseTileX, mouseTileY)) + if (Block.AIR == (Terrarum.ingame!! as Ingame).world.getTileFromTerrain(mouseTileX, mouseTileY)) return false // filter passed, do the job val swingDmgToFrameDmg = delta.toDouble() / actorvalue.getAsDouble(AVKey.ACTION_INTERVAL)!! - Terrarum.ingame!!.world.inflictTerrainDamage( + (Terrarum.ingame!! as Ingame).world.inflictTerrainDamage( mouseTileX, mouseTileY, - Calculate.pickaxePower(Terrarum.ingame!!.player, material) * swingDmgToFrameDmg + Calculate.pickaxePower((Terrarum.ingame!! as Ingame).player, material) * swingDmgToFrameDmg ) return true @@ -66,7 +67,7 @@ class PickaxeGeneric(override val originalID: ItemID) : GameItem() { override fun endPrimaryUse(delta: Float): Boolean { using = false // reset action timer to zero - Terrarum.ingame!!.player.actorValue.set(AVKey.__ACTION_TIMER, 0.0) + (Terrarum.ingame!! as Ingame).player.actorValue.set(AVKey.__ACTION_TIMER, 0.0) return true } } \ No newline at end of file diff --git a/src/net/torvald/terrarum/gameactors/MDLInterpreterState.kt b/src/net/torvald/terrarum/modulebasegame/magiccontroller/MDLInterpreterState.kt similarity index 97% rename from src/net/torvald/terrarum/gameactors/MDLInterpreterState.kt rename to src/net/torvald/terrarum/modulebasegame/magiccontroller/MDLInterpreterState.kt index 48b0ebd1e..d3f03e209 100644 --- a/src/net/torvald/terrarum/gameactors/MDLInterpreterState.kt +++ b/src/net/torvald/terrarum/modulebasegame/magiccontroller/MDLInterpreterState.kt @@ -1,8 +1,10 @@ -package net.torvald.terrarum.gameactors +package net.torvald.terrarum.modulebasegame.magiccontroller import java.util.* /** + * YE OLDE MAGIC IDEA No.0 + * * Provides MDL interpretation, pre-compilation and stores state of the interpreter * * Created by minjaesong on 2016-07-30. diff --git a/src/net/torvald/terrarum/modulebasegame/magiccontroller/TheMagicLanguage.kt b/src/net/torvald/terrarum/modulebasegame/magiccontroller/TheMagicLanguage.kt new file mode 100644 index 000000000..3b405b75b --- /dev/null +++ b/src/net/torvald/terrarum/modulebasegame/magiccontroller/TheMagicLanguage.kt @@ -0,0 +1,109 @@ +package net.torvald.terrarum.modulebasegame.magiccontroller + +import net.torvald.terrarum.modulebasegame.gameactors.AVKey +import net.torvald.terrarum.gameactors.Actor + +/** + * "Data Type" describing magical force + * + * Created by minjaesong on 2018-06-03. + */ +class TheMagicLanguage(vm: TheMagicMachine) { + + open class MagicException : Exception() + class MagicPortReadError : MagicException() + class MagicPortWriteError : MagicException() + + + /** + * A vessel contains magical power to be process. + * + * Negative numbers are tsraoatrsed as if it's negative power (still has >0 amount) + */ + class MagicAccumulator { + private var power = 0.0 + + fun pourIn(value: Double) { + power += value // positive powers and negative powers will cancel eath other + } + fun pourOut(value: Double) { + power -= value + } + fun pourOutInto(other: MagicAccumulator, value: Double) { + if (power >= 0) { + // pour out positive power without inversion; result is positive power + if (value >= 0) { + val value = minOf(power, value) + other.pourIn(value) + power -= value + } + // pour out positive power with inversion; result is negative power + else { + val value = minOf(-power, value) + other.pourIn(value) + power += value + } + } + else { + // pour out negative power without inversion; result is negative power + if (value < 0) { + val value = minOf(power, value) + other.pourIn(-value) + } + // pour out negative power with inversion; result is positive power + else { + val value = minOf(-power, value) + other.pourIn(-value) + } + } + } + fun dumpAllInto(other: MagicAccumulator) { + pourOutInto(other, this.power) + } + fun empty() { + // release residual power as heat or something + + power = 0.0 + } + fun readForPortWrite(): Double { + val r = power + power = 0.0 + return r + } + } + + interface MagicOutputPort { + fun read(a: MagicAccumulator): Double? + fun write(a: MagicAccumulator) + } + + class HealthPort(val output1: Actor) : MagicOutputPort { + + override fun read(a: MagicAccumulator): Double { + val value = output1.actorValue.getAsDouble(AVKey.HEALTH) ?: throw MagicPortReadError() + a.pourIn(value) + return value + } + + override fun write(a: MagicAccumulator) { + val value = output1.actorValue.getAsDouble(AVKey.HEALTH) ?: throw MagicPortReadError() + output1.actorValue[AVKey.HEALTH] = value + a.readForPortWrite() + } + } + + + + fun opCombine(a: MagicAccumulator, b: MagicAccumulator, c: MagicAccumulator) { + b.dumpAllInto(a) + c.dumpAllInto(a) + } + + fun opRelease(akku: MagicAccumulator, port: MagicOutputPort) { + port.write(akku) + } + + fun opSiphon(akku: MagicAccumulator, port: MagicOutputPort) { + port.read(akku) + } + +} \ No newline at end of file diff --git a/src/net/torvald/terrarum/modulebasegame/magiccontroller/TheMagicMachine.kt b/src/net/torvald/terrarum/modulebasegame/magiccontroller/TheMagicMachine.kt new file mode 100644 index 000000000..935737e3e --- /dev/null +++ b/src/net/torvald/terrarum/modulebasegame/magiccontroller/TheMagicMachine.kt @@ -0,0 +1,18 @@ +package net.torvald.terrarum.modulebasegame.magiccontroller + +/** + * Created by minjaesong on 2018-06-03. + */ +class TheMagicMachine(skill: MagicianSkillDefinition) { + + val akkuPack = Array(skill.numberOfAccumulator, { TheMagicLanguage.MagicAccumulator() }) + + + +} + +data class MagicianSkillDefinition( + var numberOfAccumulator: Int, + var useableMagicPower: Double, + var runeComprehensionLevel: Int +) \ No newline at end of file diff --git a/src/net/torvald/terrarum/ui/AmmoMeterProxy.kt b/src/net/torvald/terrarum/modulebasegame/ui/AmmoMeterProxy.kt similarity index 88% rename from src/net/torvald/terrarum/ui/AmmoMeterProxy.kt rename to src/net/torvald/terrarum/modulebasegame/ui/AmmoMeterProxy.kt index afd970ec9..8419b7211 100644 --- a/src/net/torvald/terrarum/ui/AmmoMeterProxy.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/AmmoMeterProxy.kt @@ -1,8 +1,7 @@ -package net.torvald.terrarum.ui +package net.torvald.terrarum.modulebasegame.ui -import net.torvald.terrarum.gameactors.ActorHumanoid +import net.torvald.terrarum.modulebasegame.gameactors.ActorHumanoid import net.torvald.terrarum.itemproperties.GameItem -import net.torvald.terrarum.ui.UIVitalMetre /** * Created by minjaesong on 2017-04-21. diff --git a/src/net/torvald/terrarum/ui/ItemSlotImageBuilder.kt b/src/net/torvald/terrarum/modulebasegame/ui/ItemSlotImageBuilder.kt similarity index 89% rename from src/net/torvald/terrarum/ui/ItemSlotImageBuilder.kt rename to src/net/torvald/terrarum/modulebasegame/ui/ItemSlotImageBuilder.kt index e8da7bbb4..3211cf874 100644 --- a/src/net/torvald/terrarum/ui/ItemSlotImageBuilder.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/ItemSlotImageBuilder.kt @@ -1,11 +1,9 @@ -package net.torvald.terrarum.ui +package net.torvald.terrarum.modulebasegame.ui import com.badlogic.gdx.Gdx import com.badlogic.gdx.graphics.Color -import com.badlogic.gdx.graphics.Pixmap import com.badlogic.gdx.graphics.Texture import com.badlogic.gdx.graphics.g2d.TextureRegion -import com.badlogic.gdx.graphics.glutils.FrameBuffer import net.torvald.terrarum.gameactors.ai.toInt import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack diff --git a/src/net/torvald/terrarum/ui/MessageWindow.kt b/src/net/torvald/terrarum/modulebasegame/ui/MessageWindow.kt similarity index 94% rename from src/net/torvald/terrarum/ui/MessageWindow.kt rename to src/net/torvald/terrarum/modulebasegame/ui/MessageWindow.kt index f7039c102..c33ae152c 100644 --- a/src/net/torvald/terrarum/ui/MessageWindow.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/MessageWindow.kt @@ -1,11 +1,12 @@ -package net.torvald.terrarum.ui +package net.torvald.terrarum.modulebasegame.ui import com.badlogic.gdx.graphics.Camera import com.badlogic.gdx.graphics.Color import com.badlogic.gdx.graphics.g2d.SpriteBatch import net.torvald.terrarum.Terrarum import net.torvald.terrarum.blendNormal -import net.torvald.terrarum.gameactors.Second +import net.torvald.terrarum.Second +import net.torvald.terrarum.ui.UICanvas import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack diff --git a/src/net/torvald/terrarum/ui/Notification.kt b/src/net/torvald/terrarum/modulebasegame/ui/Notification.kt similarity index 85% rename from src/net/torvald/terrarum/ui/Notification.kt rename to src/net/torvald/terrarum/modulebasegame/ui/Notification.kt index ef7138195..032e303df 100644 --- a/src/net/torvald/terrarum/ui/Notification.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/Notification.kt @@ -1,9 +1,10 @@ -package net.torvald.terrarum.ui +package net.torvald.terrarum.modulebasegame.ui import com.badlogic.gdx.graphics.Camera import com.badlogic.gdx.graphics.g2d.SpriteBatch import net.torvald.terrarum.Terrarum -import net.torvald.terrarum.gameactors.Second +import net.torvald.terrarum.Second +import net.torvald.terrarum.ui.UICanvas /** * Created by minjaesong on 2016-01-23. @@ -42,19 +43,19 @@ class Notification : UICanvas() { } override fun doOpening(delta: Float) { - UICanvas.doOpeningFade(this, openCloseTime) + doOpeningFade(this, openCloseTime) } override fun doClosing(delta: Float) { - UICanvas.doClosingFade(this, openCloseTime) + doClosingFade(this, openCloseTime) } override fun endOpening(delta: Float) { - UICanvas.endOpeningFade(this) + endOpeningFade(this) } override fun endClosing(delta: Float) { - UICanvas.endClosingFade(this) + endClosingFade(this) } fun sendNotification(message: Array) { diff --git a/src/net/torvald/terrarum/ui/NullUI.kt b/src/net/torvald/terrarum/modulebasegame/ui/NullUI.kt similarity index 87% rename from src/net/torvald/terrarum/ui/NullUI.kt rename to src/net/torvald/terrarum/modulebasegame/ui/NullUI.kt index 96fc34014..68d4a892f 100644 --- a/src/net/torvald/terrarum/ui/NullUI.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/NullUI.kt @@ -1,7 +1,8 @@ -package net.torvald.terrarum.ui +package net.torvald.terrarum.modulebasegame.ui import com.badlogic.gdx.graphics.Camera import com.badlogic.gdx.graphics.g2d.SpriteBatch +import net.torvald.terrarum.ui.UICanvas /** * Created by minjaesong on 2017-03-13. diff --git a/src/net/torvald/terrarum/ui/UIBasicNotifier.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIBasicNotifier.kt similarity index 83% rename from src/net/torvald/terrarum/ui/UIBasicNotifier.kt rename to src/net/torvald/terrarum/modulebasegame/ui/UIBasicNotifier.kt index 6d772ca3c..cfa2af29e 100644 --- a/src/net/torvald/terrarum/ui/UIBasicNotifier.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIBasicNotifier.kt @@ -1,15 +1,17 @@ -package net.torvald.terrarum.ui +package net.torvald.terrarum.modulebasegame.ui import com.badlogic.gdx.Gdx import com.badlogic.gdx.graphics.Camera import com.badlogic.gdx.graphics.Color import com.badlogic.gdx.graphics.g2d.SpriteBatch import net.torvald.terrarum.* -import net.torvald.terrarum.gameactors.ActorHumanoid -import net.torvald.terrarum.gameactors.Second -import net.torvald.terrarum.gameactors.abs -import net.torvald.terrarum.gameactors.roundInt -import net.torvald.terrarum.imagefont.Watch7SegSmall +import net.torvald.terrarum.modulebasegame.gameactors.ActorHumanoid +import net.torvald.terrarum.Second +import net.torvald.terrarum.abs +import net.torvald.terrarum.modulebasegame.Ingame +import net.torvald.terrarum.roundInt +import net.torvald.terrarum.modulebasegame.imagefont.Watch7SegSmall +import net.torvald.terrarum.ui.UICanvas import net.torvald.terrarum.worlddrawer.LightmapRenderer import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack @@ -48,7 +50,7 @@ class UIBasicNotifier(private val player: ActorHumanoid?) : UICanvas() { get() { if (player != null) { val playerTilePos = player.hIntTilewiseHitbox - val tempCelsius = -273f + (Terrarum.ingame?.world?.getTemperature(playerTilePos.centeredX.toInt(), playerTilePos.centeredY.toInt()) ?: 288f) + val tempCelsius = -273f + ((Terrarum.ingame as? Ingame)?.world?.getTemperature(playerTilePos.centeredX.toInt(), playerTilePos.centeredY.toInt()) ?: 288f) return if (Terrarum.getConfigBoolean("useamericanunit")) { tempCelsius.times(1.8f).plus(32f).roundInt() } @@ -113,11 +115,11 @@ class UIBasicNotifier(private val player: ActorHumanoid?) : UICanvas() { if (player != null) { val playerPos = player.hIntTilewiseHitbox lightLevel = (LightmapRenderer.getLight(playerPos.centeredX.toInt(), playerPos.centeredY.toInt()) ?: - Terrarum.ingame!!.world.globalLight + (Terrarum.ingame!! as Ingame).world.globalLight ) } else { - lightLevel = Terrarum.ingame!!.world.globalLight + lightLevel = (Terrarum.ingame!! as Ingame).world.globalLight } diff --git a/src/net/torvald/terrarum/ui/UICheatDetected.kt b/src/net/torvald/terrarum/modulebasegame/ui/UICheatDetected.kt similarity index 92% rename from src/net/torvald/terrarum/ui/UICheatDetected.kt rename to src/net/torvald/terrarum/modulebasegame/ui/UICheatDetected.kt index 7ef0cb123..c30cfe83b 100644 --- a/src/net/torvald/terrarum/ui/UICheatDetected.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UICheatDetected.kt @@ -1,12 +1,13 @@ -package net.torvald.terrarum.ui +package net.torvald.terrarum.modulebasegame.ui import com.badlogic.gdx.graphics.Camera import com.badlogic.gdx.graphics.Color import com.badlogic.gdx.graphics.g2d.SpriteBatch import net.torvald.terrarum.Terrarum import net.torvald.terrarum.fillRect -import net.torvald.terrarum.gameactors.Second +import net.torvald.terrarum.Second import net.torvald.terrarum.langpack.Lang +import net.torvald.terrarum.ui.UICanvas /** * Created by minjaesong on 2017-12-06. diff --git a/src/net/torvald/terrarum/ui/UIInventory.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIInventory.kt similarity index 95% rename from src/net/torvald/terrarum/ui/UIInventory.kt rename to src/net/torvald/terrarum/modulebasegame/ui/UIInventory.kt index 03fe794c3..260efc7bb 100644 --- a/src/net/torvald/terrarum/ui/UIInventory.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIInventory.kt @@ -1,21 +1,4 @@ -package net.torvald.terrarum.ui - -import com.badlogic.gdx.Gdx -import com.badlogic.gdx.Input -import com.badlogic.gdx.graphics.Camera -import com.badlogic.gdx.graphics.Color -import com.badlogic.gdx.graphics.g2d.SpriteBatch -import net.torvald.terrarum.* -import net.torvald.terrarum.Terrarum.joypadLabelNinA -import net.torvald.terrarum.Terrarum.joypadLabelNinY -import net.torvald.terrarum.gameactors.* -import net.torvald.terrarum.gameactors.ActorInventory.Companion.CAPACITY_MODE_NO_ENCUMBER -import net.torvald.terrarum.gameworld.fmod -import net.torvald.terrarum.itemproperties.GameItem -import net.torvald.terrarum.itemproperties.ItemCodex -import net.torvald.terrarum.langpack.Lang -import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack -import java.util.* +package net.torvald.terrarum.modulebasegame.ui /** * Created by minjaesong on 2017-03-13. diff --git a/src/net/torvald/terrarum/ui/UIInventoryFull.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIInventoryFull.kt similarity index 93% rename from src/net/torvald/terrarum/ui/UIInventoryFull.kt rename to src/net/torvald/terrarum/modulebasegame/ui/UIInventoryFull.kt index ca88cc55a..2c6807199 100644 --- a/src/net/torvald/terrarum/ui/UIInventoryFull.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIInventoryFull.kt @@ -1,4 +1,4 @@ -package net.torvald.terrarum.ui +package net.torvald.terrarum.modulebasegame.ui import com.badlogic.gdx.Gdx import com.badlogic.gdx.graphics.Camera @@ -7,11 +7,13 @@ import com.badlogic.gdx.graphics.GL20 import com.badlogic.gdx.graphics.g2d.SpriteBatch import com.badlogic.gdx.graphics.glutils.ShapeRenderer import net.torvald.terrarum.* -import net.torvald.terrarum.gameactors.ActorWithPhysics -import net.torvald.terrarum.gameactors.ActorInventory.Companion.CAPACITY_MODE_NO_ENCUMBER -import net.torvald.terrarum.gameactors.Pocketed -import net.torvald.terrarum.gameactors.Second +import net.torvald.terrarum.modulebasegame.gameactors.ActorWithPhysics +import net.torvald.terrarum.modulebasegame.gameactors.ActorInventory.Companion.CAPACITY_MODE_NO_ENCUMBER +import net.torvald.terrarum.modulebasegame.gameactors.Pocketed +import net.torvald.terrarum.Second import net.torvald.terrarum.langpack.Lang +import net.torvald.terrarum.modulebasegame.Ingame +import net.torvald.terrarum.ui.UICanvas import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack /** @@ -227,18 +229,18 @@ class UIInventoryFull( override fun doOpening(delta: Float) { - Terrarum.ingame?.setTooltipMessage(null) + (Terrarum.ingame as? Ingame)?.setTooltipMessage(null) } override fun doClosing(delta: Float) { - Terrarum.ingame?.setTooltipMessage(null) + (Terrarum.ingame as? Ingame)?.setTooltipMessage(null) } override fun endOpening(delta: Float) { } override fun endClosing(delta: Float) { - Terrarum.ingame?.setTooltipMessage(null) // required!! + (Terrarum.ingame as? Ingame)?.setTooltipMessage(null) // required!! } diff --git a/src/net/torvald/terrarum/ui/UIItemInventoryCellBase.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIItemInventoryCellBase.kt similarity index 89% rename from src/net/torvald/terrarum/ui/UIItemInventoryCellBase.kt rename to src/net/torvald/terrarum/modulebasegame/ui/UIItemInventoryCellBase.kt index 33ec47230..25a48afcd 100644 --- a/src/net/torvald/terrarum/ui/UIItemInventoryCellBase.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIItemInventoryCellBase.kt @@ -1,9 +1,10 @@ -package net.torvald.terrarum.ui +package net.torvald.terrarum.modulebasegame.ui import com.badlogic.gdx.graphics.Camera import com.badlogic.gdx.graphics.g2d.SpriteBatch import com.badlogic.gdx.graphics.g2d.TextureRegion import net.torvald.terrarum.itemproperties.GameItem +import net.torvald.terrarum.ui.UIItem /** * Cross section of two inventory cell types diff --git a/src/net/torvald/terrarum/ui/UIItemInventoryDynamicList.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIItemInventoryDynamicList.kt similarity index 94% rename from src/net/torvald/terrarum/ui/UIItemInventoryDynamicList.kt rename to src/net/torvald/terrarum/modulebasegame/ui/UIItemInventoryDynamicList.kt index 69c706705..caca10827 100644 --- a/src/net/torvald/terrarum/ui/UIItemInventoryDynamicList.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIItemInventoryDynamicList.kt @@ -1,4 +1,4 @@ -package net.torvald.terrarum.ui +package net.torvald.terrarum.modulebasegame.ui import com.badlogic.gdx.graphics.Camera import com.badlogic.gdx.graphics.Color @@ -7,11 +7,15 @@ import net.torvald.terrarum.BlendMode import net.torvald.terrarum.Terrarum import net.torvald.terrarum.UIItemInventoryElem import net.torvald.terrarum.UIItemInventoryElemSimple -import net.torvald.terrarum.gameactors.ActorInventory -import net.torvald.terrarum.gameactors.InventoryPair -import net.torvald.terrarum.gameactors.ceilInt +import net.torvald.terrarum.modulebasegame.gameactors.ActorInventory +import net.torvald.terrarum.modulebasegame.gameactors.InventoryPair +import net.torvald.terrarum.ceilInt +import net.torvald.terrarum.gameworld.fmod import net.torvald.terrarum.itemproperties.GameItem import net.torvald.terrarum.itemproperties.ItemCodex +import net.torvald.terrarum.modulebasegame.Ingame +import net.torvald.terrarum.ui.UIItem +import net.torvald.terrarum.ui.UIItemImageButton import java.util.ArrayList /** @@ -179,12 +183,12 @@ class UIItemInventoryDynamicList( } scrollUpButton.clickOnceListener = { _, _, _ -> - if (itemPage > 0) itemPage-- + itemPage = (itemPage - 1).fmod(itemPageCount) scrollUpButton.highlighted = false rebuild() } scrollDownButton.clickOnceListener = { _, _, _ -> - if (itemPage < itemPageCount - 1) itemPage++ + itemPage = (itemPage + 1).fmod(itemPageCount) scrollDownButton.highlighted = false rebuild() } @@ -237,13 +241,13 @@ class UIItemInventoryDynamicList( // set tooltip accordingly if (isCompactMode && it.mouseUp && !tooltipSet) { - Terrarum.ingame?.setTooltipMessage(it.item?.name) + (Terrarum.ingame as? Ingame)?.setTooltipMessage(it.item?.name) tooltipSet = true } } if (!tooltipSet) { - Terrarum.ingame?.setTooltipMessage(null) + (Terrarum.ingame as? Ingame)?.setTooltipMessage(null) } diff --git a/src/net/torvald/terrarum/ui/UIItemInventoryEquippedView.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIItemInventoryEquippedView.kt similarity index 95% rename from src/net/torvald/terrarum/ui/UIItemInventoryEquippedView.kt rename to src/net/torvald/terrarum/modulebasegame/ui/UIItemInventoryEquippedView.kt index ae731ad87..47ca7a7b1 100644 --- a/src/net/torvald/terrarum/ui/UIItemInventoryEquippedView.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIItemInventoryEquippedView.kt @@ -1,15 +1,14 @@ -package net.torvald.terrarum.ui +package net.torvald.terrarum.modulebasegame.ui import com.badlogic.gdx.graphics.Camera import com.badlogic.gdx.graphics.Color import com.badlogic.gdx.graphics.g2d.SpriteBatch import net.torvald.terrarum.* -import net.torvald.terrarum.gameactors.ActorInventory -import net.torvald.terrarum.gameactors.ActorWithPhysics -import net.torvald.terrarum.gameactors.InventoryPair +import net.torvald.terrarum.modulebasegame.gameactors.ActorInventory +import net.torvald.terrarum.modulebasegame.gameactors.ActorWithPhysics import net.torvald.terrarum.itemproperties.GameItem import net.torvald.terrarum.itemproperties.ItemCodex -import java.util.ArrayList +import net.torvald.terrarum.ui.UIItem /** * Created by minjaesong on 2017-10-28. diff --git a/src/net/torvald/terrarum/ui/UIItemModuleInfoCell.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIItemModuleInfoCell.kt similarity index 94% rename from src/net/torvald/terrarum/ui/UIItemModuleInfoCell.kt rename to src/net/torvald/terrarum/modulebasegame/ui/UIItemModuleInfoCell.kt index 752a141a8..d88ff0001 100644 --- a/src/net/torvald/terrarum/ui/UIItemModuleInfoCell.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIItemModuleInfoCell.kt @@ -1,4 +1,4 @@ -package net.torvald.terrarum.ui +package net.torvald.terrarum.modulebasegame.ui import com.badlogic.gdx.graphics.Camera import com.badlogic.gdx.graphics.Color @@ -6,7 +6,9 @@ import com.badlogic.gdx.graphics.g2d.SpriteBatch import net.torvald.terrarum.ModMgr import net.torvald.terrarum.Terrarum import net.torvald.terrarum.blendNormal -import net.torvald.terrarum.gameactors.floor +import net.torvald.terrarum.floor +import net.torvald.terrarum.ui.UICanvas +import net.torvald.terrarum.ui.UIItem class UIItemModuleInfoCell( parent: UICanvas, diff --git a/src/net/torvald/terrarum/ui/UIPieMenu.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIPieMenu.kt similarity index 82% rename from src/net/torvald/terrarum/ui/UIPieMenu.kt rename to src/net/torvald/terrarum/modulebasegame/ui/UIPieMenu.kt index ceb6a6354..02fb69844 100644 --- a/src/net/torvald/terrarum/ui/UIPieMenu.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIPieMenu.kt @@ -1,15 +1,17 @@ -package net.torvald.terrarum.ui +package net.torvald.terrarum.modulebasegame.ui import com.badlogic.gdx.graphics.Camera import com.badlogic.gdx.graphics.Color import com.badlogic.gdx.graphics.g2d.SpriteBatch import com.jme3.math.FastMath import net.torvald.terrarum.Terrarum -import net.torvald.terrarum.gameactors.AVKey -import net.torvald.terrarum.gameactors.Second +import net.torvald.terrarum.modulebasegame.gameactors.AVKey +import net.torvald.terrarum.Second import net.torvald.terrarum.itemproperties.ItemCodex -import net.torvald.terrarum.ui.UIQuickBar.Companion.CELL_SIZE -import net.torvald.terrarum.ui.UIQuickBar.Companion.SLOT_COUNT +import net.torvald.terrarum.modulebasegame.Ingame +import net.torvald.terrarum.modulebasegame.ui.UIQuickBar.Companion.CELL_SIZE +import net.torvald.terrarum.modulebasegame.ui.UIQuickBar.Companion.SLOT_COUNT +import net.torvald.terrarum.ui.UICanvas import org.dyn4j.geometry.Vector2 /** @@ -37,7 +39,7 @@ class UIPieMenu : UICanvas() { override fun updateUI(delta: Float) { if (selection >= 0) - Terrarum.ingame!!.player.actorValue[AVKey.__PLAYER_QUICKSLOTSEL] = + (Terrarum.ingame!! as Ingame).player.actorValue[AVKey.__PLAYER_QUICKSLOTSEL] = selection % slotCount @@ -81,7 +83,7 @@ class UIPieMenu : UICanvas() { // draw item - val itemPair = Terrarum.ingame!!.player.inventory.getQuickBar(i) + val itemPair = (Terrarum.ingame!! as Ingame).player.inventory.getQuickBar(i) if (itemPair != null) { val itemImage = ItemCodex.getItemImage(itemPair.item) @@ -99,22 +101,22 @@ class UIPieMenu : UICanvas() { } override fun doOpening(delta: Float) { - UICanvas.doOpeningFade(this, openCloseTime) + doOpeningFade(this, openCloseTime) handler.scale = smallenSize + (1f.minus(smallenSize) * handler.opacity) } override fun doClosing(delta: Float) { - UICanvas.doClosingFade(this, openCloseTime) + doClosingFade(this, openCloseTime) handler.scale = smallenSize + (1f.minus(smallenSize) * handler.opacity) } override fun endOpening(delta: Float) { - UICanvas.endOpeningFade(this) + endOpeningFade(this) handler.scale = 1f } override fun endClosing(delta: Float) { - UICanvas.endClosingFade(this) + endClosingFade(this) handler.scale = 1f } diff --git a/src/net/torvald/terrarum/ui/UIQuickBar.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIQuickBar.kt similarity index 86% rename from src/net/torvald/terrarum/ui/UIQuickBar.kt rename to src/net/torvald/terrarum/modulebasegame/ui/UIQuickBar.kt index 4a3cff9aa..b4a34d5c4 100644 --- a/src/net/torvald/terrarum/ui/UIQuickBar.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIQuickBar.kt @@ -1,14 +1,16 @@ -package net.torvald.terrarum.ui +package net.torvald.terrarum.modulebasegame.ui import com.badlogic.gdx.Input import com.badlogic.gdx.graphics.Camera import com.badlogic.gdx.graphics.Color import com.badlogic.gdx.graphics.g2d.SpriteBatch import net.torvald.terrarum.Terrarum -import net.torvald.terrarum.gameactors.AVKey -import net.torvald.terrarum.gameactors.Second +import net.torvald.terrarum.modulebasegame.gameactors.AVKey +import net.torvald.terrarum.Second import net.torvald.terrarum.gameworld.fmod import net.torvald.terrarum.itemproperties.ItemCodex +import net.torvald.terrarum.modulebasegame.Ingame +import net.torvald.terrarum.ui.UICanvas /** * Created by minjaesong on 2016-07-20. @@ -26,8 +28,8 @@ class UIQuickBar : UICanvas() { private val startPointY = ItemSlotImageBuilder.slotImage.tileH / 2 private var selection: Int - get() = Terrarum.ingame!!.player.actorValue.getAsInt(AVKey.__PLAYER_QUICKSLOTSEL) ?: 0 - set(value) { Terrarum.ingame!!.player.actorValue.set(AVKey.__PLAYER_QUICKSLOTSEL, value.fmod(SLOT_COUNT)) } + get() = (Terrarum.ingame!! as Ingame).player.actorValue.getAsInt(AVKey.__PLAYER_QUICKSLOTSEL) ?: 0 + set(value) { (Terrarum.ingame!! as Ingame).player.actorValue.set(AVKey.__PLAYER_QUICKSLOTSEL, value.fmod(SLOT_COUNT)) } override fun updateUI(delta: Float) { } @@ -52,7 +54,7 @@ class UIQuickBar : UICanvas() { ) // draw item - val itemPair = Terrarum.ingame!!.player.inventory.getQuickBar(i) + val itemPair = (Terrarum.ingame!! as Ingame).player.inventory.getQuickBar(i) if (itemPair != null) { val itemImage = ItemCodex.getItemImage(itemPair.item) diff --git a/src/net/torvald/terrarum/ui/UITierOneWatch.kt b/src/net/torvald/terrarum/modulebasegame/ui/UITierOneWatch.kt similarity index 81% rename from src/net/torvald/terrarum/ui/UITierOneWatch.kt rename to src/net/torvald/terrarum/modulebasegame/ui/UITierOneWatch.kt index 4e8ec115e..43d00c70e 100644 --- a/src/net/torvald/terrarum/ui/UITierOneWatch.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UITierOneWatch.kt @@ -1,17 +1,19 @@ -package net.torvald.terrarum.ui +package net.torvald.terrarum.modulebasegame.ui import com.badlogic.gdx.Gdx import com.badlogic.gdx.graphics.Camera import com.badlogic.gdx.graphics.Color import com.badlogic.gdx.graphics.g2d.SpriteBatch import net.torvald.terrarum.* -import net.torvald.terrarum.gameactors.ActorHumanoid -import net.torvald.terrarum.gameactors.Second -import net.torvald.terrarum.gameactors.roundInt -import net.torvald.terrarum.gameworld.WorldTime -import net.torvald.terrarum.imagefont.Watch7SegMain -import net.torvald.terrarum.imagefont.Watch7SegSmall -import net.torvald.terrarum.imagefont.WatchDotAlph +import net.torvald.terrarum.modulebasegame.gameactors.ActorHumanoid +import net.torvald.terrarum.Second +import net.torvald.terrarum.modulebasegame.Ingame +import net.torvald.terrarum.roundInt +import net.torvald.terrarum.modulebasegame.gameworld.WorldTime +import net.torvald.terrarum.modulebasegame.imagefont.Watch7SegMain +import net.torvald.terrarum.modulebasegame.imagefont.Watch7SegSmall +import net.torvald.terrarum.modulebasegame.imagefont.WatchDotAlph +import net.torvald.terrarum.ui.UICanvas import net.torvald.terrarum.worlddrawer.LightmapRenderer import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack @@ -38,7 +40,7 @@ class UITierOneWatch(private val player: ActorHumanoid?) : UICanvas() { private val lcdLitCol = Color(0x141414_ff) private val worldTime: WorldTime - get() = Terrarum.ingame!!.world.time + get() = (Terrarum.ingame!! as Ingame).world.time override fun updateUI(delta: Float) { @@ -68,11 +70,11 @@ class UITierOneWatch(private val player: ActorHumanoid?) : UICanvas() { if (player != null) { val playerPos = player.hIntTilewiseHitbox lightLevel = (LightmapRenderer.getLight(playerPos.centeredX.toInt(), playerPos.centeredY.toInt()) ?: - Terrarum.ingame!!.world.globalLight + (Terrarum.ingame!! as Ingame).world.globalLight ) } else { - lightLevel = Terrarum.ingame!!.world.globalLight + lightLevel = (Terrarum.ingame!! as Ingame).world.globalLight } // backplate diff --git a/src/net/torvald/terrarum/ui/UITitleRemoConCredits.kt b/src/net/torvald/terrarum/modulebasegame/ui/UITitleRemoConCredits.kt similarity index 93% rename from src/net/torvald/terrarum/ui/UITitleRemoConCredits.kt rename to src/net/torvald/terrarum/modulebasegame/ui/UITitleRemoConCredits.kt index 10a2fbd6b..8a7cde65b 100644 --- a/src/net/torvald/terrarum/ui/UITitleRemoConCredits.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UITitleRemoConCredits.kt @@ -1,11 +1,14 @@ -package net.torvald.terrarum.ui +package net.torvald.terrarum.modulebasegame.ui import com.badlogic.gdx.graphics.Camera import com.badlogic.gdx.graphics.Color import com.badlogic.gdx.graphics.g2d.SpriteBatch import net.torvald.terrarum.CreditSingleton import net.torvald.terrarum.Terrarum -import net.torvald.terrarum.gameactors.Second +import net.torvald.terrarum.Second +import net.torvald.terrarum.ui.UICanvas +import net.torvald.terrarum.ui.UIItemTextArea +import net.torvald.terrarum.ui.UIItemTextButtonList class UITitleRemoConCredits(val superMenu: UICanvas) : UICanvas() { diff --git a/src/net/torvald/terrarum/ui/UITitleRemoConLanguage.kt b/src/net/torvald/terrarum/modulebasegame/ui/UITitleRemoConLanguage.kt similarity index 91% rename from src/net/torvald/terrarum/ui/UITitleRemoConLanguage.kt rename to src/net/torvald/terrarum/modulebasegame/ui/UITitleRemoConLanguage.kt index e657bf6e5..f9005016b 100644 --- a/src/net/torvald/terrarum/ui/UITitleRemoConLanguage.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UITitleRemoConLanguage.kt @@ -1,12 +1,14 @@ -package net.torvald.terrarum.ui +package net.torvald.terrarum.modulebasegame.ui import com.badlogic.gdx.graphics.Camera import com.badlogic.gdx.graphics.Color import com.badlogic.gdx.graphics.g2d.SpriteBatch import net.torvald.terrarum.Terrarum -import net.torvald.terrarum.TerrarumAppLoader -import net.torvald.terrarum.gameactors.Second +import net.torvald.terrarum.AppLoader +import net.torvald.terrarum.Second import net.torvald.terrarum.langpack.Lang +import net.torvald.terrarum.ui.UICanvas +import net.torvald.terrarum.ui.UIItemTextButtonList class UITitleRemoConLanguage(val superMenu: UICanvas) : UICanvas() { @@ -71,7 +73,7 @@ class UITitleRemoConLanguage(val superMenu: UICanvas) : UICanvas() { // attach listeners textArea.selectionChangeListener = { _, newSelectionIndex -> - TerrarumAppLoader.GAME_LOCALE = localeList[newSelectionIndex] + AppLoader.GAME_LOCALE = localeList[newSelectionIndex] } menubar.buttons[menuLabels.indexOf("MENU_LABEL_RETURN")].clickOnceListener = { _, _, _ -> diff --git a/src/net/torvald/terrarum/ui/UITitleRemoConModules.kt b/src/net/torvald/terrarum/modulebasegame/ui/UITitleRemoConModules.kt similarity index 93% rename from src/net/torvald/terrarum/ui/UITitleRemoConModules.kt rename to src/net/torvald/terrarum/modulebasegame/ui/UITitleRemoConModules.kt index 8ed8b3b70..c43df0c81 100644 --- a/src/net/torvald/terrarum/ui/UITitleRemoConModules.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UITitleRemoConModules.kt @@ -1,4 +1,4 @@ -package net.torvald.terrarum.ui +package net.torvald.terrarum.modulebasegame.ui import com.badlogic.gdx.graphics.Camera import com.badlogic.gdx.graphics.Color @@ -6,8 +6,10 @@ import com.badlogic.gdx.graphics.g2d.SpriteBatch import net.torvald.terrarum.ModMgr import net.torvald.terrarum.Terrarum import net.torvald.terrarum.blendNormal -import net.torvald.terrarum.gameactors.Second -import net.torvald.terrarum.langpack.Lang +import net.torvald.terrarum.Second +import net.torvald.terrarum.ui.UICanvas +import net.torvald.terrarum.ui.UIItemList +import net.torvald.terrarum.ui.UIItemTextButtonList /** * Created by minjaesong on 2017-08-01. diff --git a/src/net/torvald/terrarum/ui/UITitleRemoConRoot.kt b/src/net/torvald/terrarum/modulebasegame/ui/UITitleRemoConRoot.kt similarity index 88% rename from src/net/torvald/terrarum/ui/UITitleRemoConRoot.kt rename to src/net/torvald/terrarum/modulebasegame/ui/UITitleRemoConRoot.kt index bc4f367cf..ebb18eaa2 100644 --- a/src/net/torvald/terrarum/ui/UITitleRemoConRoot.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UITitleRemoConRoot.kt @@ -1,12 +1,14 @@ -package net.torvald.terrarum.ui +package net.torvald.terrarum.modulebasegame.ui import com.badlogic.gdx.graphics.Camera import com.badlogic.gdx.graphics.Color import com.badlogic.gdx.graphics.g2d.SpriteBatch import net.torvald.random.HQRNG -import net.torvald.terrarum.Ingame +import net.torvald.terrarum.modulebasegame.Ingame import net.torvald.terrarum.LoadScreen import net.torvald.terrarum.Terrarum +import net.torvald.terrarum.ui.UICanvas +import net.torvald.terrarum.ui.UIItemTextButtonList class UITitleRemoConRoot : UICanvas() { @@ -78,9 +80,9 @@ class UITitleRemoConRoot : UICanvas() { Thread.sleep(50) Terrarum.ingame = Ingame(Terrarum.batch) - Terrarum.ingame!!.gameLoadInfoPayload = Ingame.NewWorldParameters(2400, 800, HQRNG().nextLong()) - Terrarum.ingame!!.gameLoadMode = Ingame.GameLoadMode.CREATE_NEW - LoadScreen.screenToLoad = Terrarum.ingame!! + (Terrarum.ingame!! as Ingame).gameLoadInfoPayload = Ingame.NewWorldParameters(2400, 800, HQRNG().nextLong()) + (Terrarum.ingame!! as Ingame).gameLoadMode = Ingame.GameLoadMode.CREATE_NEW + LoadScreen.screenToLoad = (Terrarum.ingame!! as Ingame) Terrarum.setScreen(LoadScreen) } diff --git a/src/net/torvald/terrarum/ui/UITooltip.kt b/src/net/torvald/terrarum/modulebasegame/ui/UITooltip.kt similarity index 93% rename from src/net/torvald/terrarum/ui/UITooltip.kt rename to src/net/torvald/terrarum/modulebasegame/ui/UITooltip.kt index 0a10b1d35..6cc032abd 100644 --- a/src/net/torvald/terrarum/ui/UITooltip.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UITooltip.kt @@ -1,13 +1,12 @@ -package net.torvald.terrarum.ui +package net.torvald.terrarum.modulebasegame.ui -import com.badlogic.gdx.Gdx import com.badlogic.gdx.graphics.Camera import com.badlogic.gdx.graphics.Color import com.badlogic.gdx.graphics.Texture import com.badlogic.gdx.graphics.g2d.SpriteBatch import net.torvald.terrarum.Terrarum -import net.torvald.terrarum.fillRect -import net.torvald.terrarum.gameactors.Second +import net.torvald.terrarum.Second +import net.torvald.terrarum.ui.UICanvas import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack /** diff --git a/src/net/torvald/terrarum/ui/UIVitalMetre.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIVitalMetre.kt similarity index 91% rename from src/net/torvald/terrarum/ui/UIVitalMetre.kt rename to src/net/torvald/terrarum/modulebasegame/ui/UIVitalMetre.kt index e90e3d7a8..568a4e390 100644 --- a/src/net/torvald/terrarum/ui/UIVitalMetre.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIVitalMetre.kt @@ -1,4 +1,4 @@ -package net.torvald.terrarum.ui +package net.torvald.terrarum.modulebasegame.ui import com.badlogic.gdx.graphics.Camera import com.badlogic.gdx.graphics.Color @@ -6,8 +6,9 @@ import com.badlogic.gdx.graphics.g2d.SpriteBatch import com.jme3.math.FastMath import net.torvald.colourutil.CIELabUtil.darkerLab import net.torvald.terrarum.Terrarum -import net.torvald.terrarum.gameactors.ActorHumanoid -import net.torvald.terrarum.gameactors.Second +import net.torvald.terrarum.modulebasegame.gameactors.ActorHumanoid +import net.torvald.terrarum.Second +import net.torvald.terrarum.ui.UICanvas /** * Created by minjaesong on 2017-03-03. @@ -100,19 +101,19 @@ class UIVitalMetre( } override fun doOpening(delta: Float) { - UICanvas.doOpeningFade(this, openCloseTime) + doOpeningFade(this, openCloseTime) } override fun doClosing(delta: Float) { - UICanvas.doClosingFade(this, openCloseTime) + doClosingFade(this, openCloseTime) } override fun endOpening(delta: Float) { - UICanvas.endOpeningFade(this) + endOpeningFade(this) } override fun endClosing(delta: Float) { - UICanvas.endClosingFade(this) + endClosingFade(this) } override fun dispose() { diff --git a/src/net/torvald/terrarum/worldgenerator/FloatingIslandsPreset.kt b/src/net/torvald/terrarum/modulebasegame/worldgenerator/FloatingIslandsPreset.kt similarity index 97% rename from src/net/torvald/terrarum/worldgenerator/FloatingIslandsPreset.kt rename to src/net/torvald/terrarum/modulebasegame/worldgenerator/FloatingIslandsPreset.kt index dee4df78c..a5a29e980 100644 --- a/src/net/torvald/terrarum/worldgenerator/FloatingIslandsPreset.kt +++ b/src/net/torvald/terrarum/modulebasegame/worldgenerator/FloatingIslandsPreset.kt @@ -1,4 +1,4 @@ -package net.torvald.terrarum.worldgenerator +package net.torvald.terrarum.modulebasegame.worldgenerator import net.torvald.random.HQRNG diff --git a/src/net/torvald/terrarum/worldgenerator/FloatingIslePreset01.kt b/src/net/torvald/terrarum/modulebasegame/worldgenerator/FloatingIslePreset01.kt similarity index 99% rename from src/net/torvald/terrarum/worldgenerator/FloatingIslePreset01.kt rename to src/net/torvald/terrarum/modulebasegame/worldgenerator/FloatingIslePreset01.kt index 57384aaf4..227c88930 100644 --- a/src/net/torvald/terrarum/worldgenerator/FloatingIslePreset01.kt +++ b/src/net/torvald/terrarum/modulebasegame/worldgenerator/FloatingIslePreset01.kt @@ -1,4 +1,4 @@ -package net.torvald.terrarum.worldgenerator +package net.torvald.terrarum.modulebasegame.worldgenerator internal object FloatingIslePreset01 { var w = 100 diff --git a/src/net/torvald/terrarum/worldgenerator/FloatingIslePreset02.kt b/src/net/torvald/terrarum/modulebasegame/worldgenerator/FloatingIslePreset02.kt similarity index 99% rename from src/net/torvald/terrarum/worldgenerator/FloatingIslePreset02.kt rename to src/net/torvald/terrarum/modulebasegame/worldgenerator/FloatingIslePreset02.kt index 09372ebae..f9c625220 100644 --- a/src/net/torvald/terrarum/worldgenerator/FloatingIslePreset02.kt +++ b/src/net/torvald/terrarum/modulebasegame/worldgenerator/FloatingIslePreset02.kt @@ -1,4 +1,4 @@ -package net.torvald.terrarum.worldgenerator +package net.torvald.terrarum.modulebasegame.worldgenerator internal object FloatingIslePreset02 { var w = 80 diff --git a/src/net/torvald/terrarum/worldgenerator/FloatingIslePreset03.kt b/src/net/torvald/terrarum/modulebasegame/worldgenerator/FloatingIslePreset03.kt similarity index 99% rename from src/net/torvald/terrarum/worldgenerator/FloatingIslePreset03.kt rename to src/net/torvald/terrarum/modulebasegame/worldgenerator/FloatingIslePreset03.kt index 21f09492c..049f0ecbd 100644 --- a/src/net/torvald/terrarum/worldgenerator/FloatingIslePreset03.kt +++ b/src/net/torvald/terrarum/modulebasegame/worldgenerator/FloatingIslePreset03.kt @@ -1,4 +1,4 @@ -package net.torvald.terrarum.worldgenerator +package net.torvald.terrarum.modulebasegame.worldgenerator internal object FloatingIslePreset03 { var w = 66 diff --git a/src/net/torvald/terrarum/worldgenerator/FloatingIslePreset04.kt b/src/net/torvald/terrarum/modulebasegame/worldgenerator/FloatingIslePreset04.kt similarity index 99% rename from src/net/torvald/terrarum/worldgenerator/FloatingIslePreset04.kt rename to src/net/torvald/terrarum/modulebasegame/worldgenerator/FloatingIslePreset04.kt index d5c379870..e1e108050 100644 --- a/src/net/torvald/terrarum/worldgenerator/FloatingIslePreset04.kt +++ b/src/net/torvald/terrarum/modulebasegame/worldgenerator/FloatingIslePreset04.kt @@ -1,4 +1,4 @@ -package net.torvald.terrarum.worldgenerator +package net.torvald.terrarum.modulebasegame.worldgenerator internal object FloatingIslePreset04 { var w = 88 diff --git a/src/net/torvald/terrarum/worldgenerator/FloatingIslePreset05.kt b/src/net/torvald/terrarum/modulebasegame/worldgenerator/FloatingIslePreset05.kt similarity index 99% rename from src/net/torvald/terrarum/worldgenerator/FloatingIslePreset05.kt rename to src/net/torvald/terrarum/modulebasegame/worldgenerator/FloatingIslePreset05.kt index d7d20668a..f1597a477 100644 --- a/src/net/torvald/terrarum/worldgenerator/FloatingIslePreset05.kt +++ b/src/net/torvald/terrarum/modulebasegame/worldgenerator/FloatingIslePreset05.kt @@ -1,4 +1,4 @@ -package net.torvald.terrarum.worldgenerator +package net.torvald.terrarum.modulebasegame.worldgenerator internal object FloatingIslePreset05 { var w = 74 diff --git a/src/net/torvald/terrarum/worldgenerator/NoiseFilter.kt b/src/net/torvald/terrarum/modulebasegame/worldgenerator/NoiseFilter.kt similarity index 70% rename from src/net/torvald/terrarum/worldgenerator/NoiseFilter.kt rename to src/net/torvald/terrarum/modulebasegame/worldgenerator/NoiseFilter.kt index 27cb21425..1813ddc87 100644 --- a/src/net/torvald/terrarum/worldgenerator/NoiseFilter.kt +++ b/src/net/torvald/terrarum/modulebasegame/worldgenerator/NoiseFilter.kt @@ -1,4 +1,4 @@ -package net.torvald.terrarum.worldgenerator +package net.torvald.terrarum.modulebasegame.worldgenerator /** * Created by minjaesong on 2016-03-31. diff --git a/src/net/torvald/terrarum/worldgenerator/NoiseFilterCubic.kt b/src/net/torvald/terrarum/modulebasegame/worldgenerator/NoiseFilterCubic.kt similarity index 95% rename from src/net/torvald/terrarum/worldgenerator/NoiseFilterCubic.kt rename to src/net/torvald/terrarum/modulebasegame/worldgenerator/NoiseFilterCubic.kt index 54a5eeccb..60cb01769 100644 --- a/src/net/torvald/terrarum/worldgenerator/NoiseFilterCubic.kt +++ b/src/net/torvald/terrarum/modulebasegame/worldgenerator/NoiseFilterCubic.kt @@ -1,4 +1,4 @@ -package net.torvald.terrarum.worldgenerator +package net.torvald.terrarum.modulebasegame.worldgenerator import com.jme3.math.FastMath diff --git a/src/net/torvald/terrarum/worldgenerator/NoiseFilterMinusQuadratic.kt b/src/net/torvald/terrarum/modulebasegame/worldgenerator/NoiseFilterMinusQuadratic.kt similarity index 95% rename from src/net/torvald/terrarum/worldgenerator/NoiseFilterMinusQuadratic.kt rename to src/net/torvald/terrarum/modulebasegame/worldgenerator/NoiseFilterMinusQuadratic.kt index 307ca63b0..8b10343fe 100644 --- a/src/net/torvald/terrarum/worldgenerator/NoiseFilterMinusQuadratic.kt +++ b/src/net/torvald/terrarum/modulebasegame/worldgenerator/NoiseFilterMinusQuadratic.kt @@ -1,4 +1,4 @@ -package net.torvald.terrarum.worldgenerator +package net.torvald.terrarum.modulebasegame.worldgenerator import com.jme3.math.FastMath diff --git a/src/net/torvald/terrarum/worldgenerator/NoiseFilterQuadratic.kt b/src/net/torvald/terrarum/modulebasegame/worldgenerator/NoiseFilterQuadratic.kt similarity index 95% rename from src/net/torvald/terrarum/worldgenerator/NoiseFilterQuadratic.kt rename to src/net/torvald/terrarum/modulebasegame/worldgenerator/NoiseFilterQuadratic.kt index cb1f7e30b..62e619b84 100644 --- a/src/net/torvald/terrarum/worldgenerator/NoiseFilterQuadratic.kt +++ b/src/net/torvald/terrarum/modulebasegame/worldgenerator/NoiseFilterQuadratic.kt @@ -1,4 +1,4 @@ -package net.torvald.terrarum.worldgenerator +package net.torvald.terrarum.modulebasegame.worldgenerator import com.jme3.math.FastMath diff --git a/src/net/torvald/terrarum/worldgenerator/NoiseFilterSqrt.kt b/src/net/torvald/terrarum/modulebasegame/worldgenerator/NoiseFilterSqrt.kt similarity index 91% rename from src/net/torvald/terrarum/worldgenerator/NoiseFilterSqrt.kt rename to src/net/torvald/terrarum/modulebasegame/worldgenerator/NoiseFilterSqrt.kt index 1ff4123cf..85aca998b 100644 --- a/src/net/torvald/terrarum/worldgenerator/NoiseFilterSqrt.kt +++ b/src/net/torvald/terrarum/modulebasegame/worldgenerator/NoiseFilterSqrt.kt @@ -1,4 +1,4 @@ -package net.torvald.terrarum.worldgenerator +package net.torvald.terrarum.modulebasegame.worldgenerator import com.jme3.math.FastMath diff --git a/src/net/torvald/terrarum/worldgenerator/NoiseFilterUniform.kt b/src/net/torvald/terrarum/modulebasegame/worldgenerator/NoiseFilterUniform.kt similarity index 76% rename from src/net/torvald/terrarum/worldgenerator/NoiseFilterUniform.kt rename to src/net/torvald/terrarum/modulebasegame/worldgenerator/NoiseFilterUniform.kt index b6bd7a178..63a143197 100644 --- a/src/net/torvald/terrarum/worldgenerator/NoiseFilterUniform.kt +++ b/src/net/torvald/terrarum/modulebasegame/worldgenerator/NoiseFilterUniform.kt @@ -1,4 +1,4 @@ -package net.torvald.terrarum.worldgenerator +package net.torvald.terrarum.modulebasegame.worldgenerator /** * Created by minjaesong on 2016-03-31. diff --git a/src/net/torvald/terrarum/worldgenerator/RoguelikeRandomiser.kt b/src/net/torvald/terrarum/modulebasegame/worldgenerator/RoguelikeRandomiser.kt similarity index 96% rename from src/net/torvald/terrarum/worldgenerator/RoguelikeRandomiser.kt rename to src/net/torvald/terrarum/modulebasegame/worldgenerator/RoguelikeRandomiser.kt index c453b52b0..58851aa0a 100644 --- a/src/net/torvald/terrarum/worldgenerator/RoguelikeRandomiser.kt +++ b/src/net/torvald/terrarum/modulebasegame/worldgenerator/RoguelikeRandomiser.kt @@ -1,4 +1,4 @@ -package net.torvald.terrarum.worldgenerator +package net.torvald.terrarum.modulebasegame.worldgenerator import com.badlogic.gdx.graphics.Color import net.torvald.dataclass.IntArrayStack diff --git a/src/net/torvald/terrarum/worldgenerator/SimplexNoise.kt b/src/net/torvald/terrarum/modulebasegame/worldgenerator/SimplexNoise.kt similarity index 97% rename from src/net/torvald/terrarum/worldgenerator/SimplexNoise.kt rename to src/net/torvald/terrarum/modulebasegame/worldgenerator/SimplexNoise.kt index 2307d5170..61dc10536 100644 --- a/src/net/torvald/terrarum/worldgenerator/SimplexNoise.kt +++ b/src/net/torvald/terrarum/modulebasegame/worldgenerator/SimplexNoise.kt @@ -1,4 +1,4 @@ -package net.torvald.terrarum.worldgenerator +package net.torvald.terrarum.modulebasegame.worldgenerator import net.torvald.random.HQRNG import com.jme3.math.FastMath diff --git a/src/net/torvald/terrarum/worldgenerator/SimplexNoise_octave.kt b/src/net/torvald/terrarum/modulebasegame/worldgenerator/SimplexNoise_octave.kt similarity index 99% rename from src/net/torvald/terrarum/worldgenerator/SimplexNoise_octave.kt rename to src/net/torvald/terrarum/modulebasegame/worldgenerator/SimplexNoise_octave.kt index 7075193af..53a242b80 100644 --- a/src/net/torvald/terrarum/worldgenerator/SimplexNoise_octave.kt +++ b/src/net/torvald/terrarum/modulebasegame/worldgenerator/SimplexNoise_octave.kt @@ -1,4 +1,4 @@ -package net.torvald.terrarum.worldgenerator +package net.torvald.terrarum.modulebasegame.worldgenerator /* * A speed-improved simplex noise algorithm for 2D, 3D and 4D in Java. diff --git a/src/net/torvald/terrarum/worldgenerator/ThreadProcessNoiseLayers.kt b/src/net/torvald/terrarum/modulebasegame/worldgenerator/ThreadProcessNoiseLayers.kt similarity index 98% rename from src/net/torvald/terrarum/worldgenerator/ThreadProcessNoiseLayers.kt rename to src/net/torvald/terrarum/modulebasegame/worldgenerator/ThreadProcessNoiseLayers.kt index e39122755..4a344c714 100644 --- a/src/net/torvald/terrarum/worldgenerator/ThreadProcessNoiseLayers.kt +++ b/src/net/torvald/terrarum/modulebasegame/worldgenerator/ThreadProcessNoiseLayers.kt @@ -1,4 +1,4 @@ -package net.torvald.terrarum.worldgenerator +package net.torvald.terrarum.modulebasegame.worldgenerator import net.torvald.terrarum.LoadScreen diff --git a/src/net/torvald/terrarum/worldgenerator/WorldGenerator.kt b/src/net/torvald/terrarum/modulebasegame/worldgenerator/WorldGenerator.kt similarity index 99% rename from src/net/torvald/terrarum/worldgenerator/WorldGenerator.kt rename to src/net/torvald/terrarum/modulebasegame/worldgenerator/WorldGenerator.kt index 554cdeb91..417a32b36 100644 --- a/src/net/torvald/terrarum/worldgenerator/WorldGenerator.kt +++ b/src/net/torvald/terrarum/modulebasegame/worldgenerator/WorldGenerator.kt @@ -1,4 +1,4 @@ -package net.torvald.terrarum.worldgenerator +package net.torvald.terrarum.modulebasegame.worldgenerator import net.torvald.random.HQRNG import net.torvald.terrarum.gameworld.GameWorld @@ -10,7 +10,7 @@ import net.torvald.terrarum.LoadScreen import net.torvald.terrarum.Terrarum import net.torvald.terrarum.blockproperties.BlockCodex import net.torvald.terrarum.concurrent.ThreadParallel -import net.torvald.terrarum.gameactors.roundInt +import net.torvald.terrarum.roundInt import java.util.* object WorldGenerator { diff --git a/src/net/torvald/terrarum/worldgenerator/floatingIslePreset01.png b/src/net/torvald/terrarum/modulebasegame/worldgenerator/floatingIslePreset01.png similarity index 100% rename from src/net/torvald/terrarum/worldgenerator/floatingIslePreset01.png rename to src/net/torvald/terrarum/modulebasegame/worldgenerator/floatingIslePreset01.png diff --git a/src/net/torvald/terrarum/worldgenerator/floatingIslePreset02.png b/src/net/torvald/terrarum/modulebasegame/worldgenerator/floatingIslePreset02.png similarity index 100% rename from src/net/torvald/terrarum/worldgenerator/floatingIslePreset02.png rename to src/net/torvald/terrarum/modulebasegame/worldgenerator/floatingIslePreset02.png diff --git a/src/net/torvald/terrarum/worldgenerator/floatingIslePreset03.png b/src/net/torvald/terrarum/modulebasegame/worldgenerator/floatingIslePreset03.png similarity index 100% rename from src/net/torvald/terrarum/worldgenerator/floatingIslePreset03.png rename to src/net/torvald/terrarum/modulebasegame/worldgenerator/floatingIslePreset03.png diff --git a/src/net/torvald/terrarum/worldgenerator/floatingIslePreset04.png b/src/net/torvald/terrarum/modulebasegame/worldgenerator/floatingIslePreset04.png similarity index 100% rename from src/net/torvald/terrarum/worldgenerator/floatingIslePreset04.png rename to src/net/torvald/terrarum/modulebasegame/worldgenerator/floatingIslePreset04.png diff --git a/src/net/torvald/terrarum/worldgenerator/floatingIslePreset05.png b/src/net/torvald/terrarum/modulebasegame/worldgenerator/floatingIslePreset05.png similarity index 100% rename from src/net/torvald/terrarum/worldgenerator/floatingIslePreset05.png rename to src/net/torvald/terrarum/modulebasegame/worldgenerator/floatingIslePreset05.png diff --git a/src/net/torvald/terrarum/virtualcomputer/assets/loots/dummix/bin/cp.lua b/src/net/torvald/terrarum/modulecomputers/virtualcomputer/assets/loots/dummix/bin/cp.lua old mode 100755 new mode 100644 similarity index 100% rename from src/net/torvald/terrarum/virtualcomputer/assets/loots/dummix/bin/cp.lua rename to src/net/torvald/terrarum/modulecomputers/virtualcomputer/assets/loots/dummix/bin/cp.lua diff --git a/src/net/torvald/terrarum/virtualcomputer/assets/loots/dummix/bin/dsh.lua b/src/net/torvald/terrarum/modulecomputers/virtualcomputer/assets/loots/dummix/bin/dsh.lua old mode 100755 new mode 100644 similarity index 100% rename from src/net/torvald/terrarum/virtualcomputer/assets/loots/dummix/bin/dsh.lua rename to src/net/torvald/terrarum/modulecomputers/virtualcomputer/assets/loots/dummix/bin/dsh.lua diff --git a/src/net/torvald/terrarum/virtualcomputer/assets/loots/dummix/bin/lessismore.lua b/src/net/torvald/terrarum/modulecomputers/virtualcomputer/assets/loots/dummix/bin/lessismore.lua old mode 100755 new mode 100644 similarity index 100% rename from src/net/torvald/terrarum/virtualcomputer/assets/loots/dummix/bin/lessismore.lua rename to src/net/torvald/terrarum/modulecomputers/virtualcomputer/assets/loots/dummix/bin/lessismore.lua diff --git a/src/net/torvald/terrarum/virtualcomputer/assets/loots/dummix/bin/ls.lua b/src/net/torvald/terrarum/modulecomputers/virtualcomputer/assets/loots/dummix/bin/ls.lua similarity index 100% rename from src/net/torvald/terrarum/virtualcomputer/assets/loots/dummix/bin/ls.lua rename to src/net/torvald/terrarum/modulecomputers/virtualcomputer/assets/loots/dummix/bin/ls.lua diff --git a/src/net/torvald/terrarum/virtualcomputer/assets/loots/dummix/bin/msh.lua b/src/net/torvald/terrarum/modulecomputers/virtualcomputer/assets/loots/dummix/bin/msh.lua old mode 100755 new mode 100644 similarity index 100% rename from src/net/torvald/terrarum/virtualcomputer/assets/loots/dummix/bin/msh.lua rename to src/net/torvald/terrarum/modulecomputers/virtualcomputer/assets/loots/dummix/bin/msh.lua diff --git a/src/net/torvald/terrarum/virtualcomputer/assets/loots/dummix/bin/mv.lua b/src/net/torvald/terrarum/modulecomputers/virtualcomputer/assets/loots/dummix/bin/mv.lua old mode 100755 new mode 100644 similarity index 100% rename from src/net/torvald/terrarum/virtualcomputer/assets/loots/dummix/bin/mv.lua rename to src/net/torvald/terrarum/modulecomputers/virtualcomputer/assets/loots/dummix/bin/mv.lua diff --git a/src/net/torvald/terrarum/virtualcomputer/assets/loots/dummix/boot/efi b/src/net/torvald/terrarum/modulecomputers/virtualcomputer/assets/loots/dummix/boot/efi old mode 100755 new mode 100644 similarity index 100% rename from src/net/torvald/terrarum/virtualcomputer/assets/loots/dummix/boot/efi rename to src/net/torvald/terrarum/modulecomputers/virtualcomputer/assets/loots/dummix/boot/efi diff --git a/src/net/torvald/terrarum/virtualcomputer/assets/loots/dummix/etc/.dshrc b/src/net/torvald/terrarum/modulecomputers/virtualcomputer/assets/loots/dummix/etc/.dshrc old mode 100755 new mode 100644 similarity index 100% rename from src/net/torvald/terrarum/virtualcomputer/assets/loots/dummix/etc/.dshrc rename to src/net/torvald/terrarum/modulecomputers/virtualcomputer/assets/loots/dummix/etc/.dshrc diff --git a/src/net/torvald/terrarum/virtualcomputer/assets/loots/dummix/etc/_boot.lua b/src/net/torvald/terrarum/modulecomputers/virtualcomputer/assets/loots/dummix/etc/_boot.lua old mode 100755 new mode 100644 similarity index 100% rename from src/net/torvald/terrarum/virtualcomputer/assets/loots/dummix/etc/_boot.lua rename to src/net/torvald/terrarum/modulecomputers/virtualcomputer/assets/loots/dummix/etc/_boot.lua diff --git a/src/net/torvald/terrarum/virtualcomputer/assets/loots/dummix/usr/share/man/msh b/src/net/torvald/terrarum/modulecomputers/virtualcomputer/assets/loots/dummix/usr/share/man/msh old mode 100755 new mode 100644 similarity index 100% rename from src/net/torvald/terrarum/virtualcomputer/assets/loots/dummix/usr/share/man/msh rename to src/net/torvald/terrarum/modulecomputers/virtualcomputer/assets/loots/dummix/usr/share/man/msh diff --git a/src/net/torvald/terrarum/virtualcomputer/assets/lua/BOOT.lua b/src/net/torvald/terrarum/modulecomputers/virtualcomputer/assets/lua/BOOT.lua similarity index 100% rename from src/net/torvald/terrarum/virtualcomputer/assets/lua/BOOT.lua rename to src/net/torvald/terrarum/modulecomputers/virtualcomputer/assets/lua/BOOT.lua diff --git a/src/net/torvald/terrarum/virtualcomputer/assets/lua/BRAINFUCK.lua b/src/net/torvald/terrarum/modulecomputers/virtualcomputer/assets/lua/BRAINFUCK.lua similarity index 100% rename from src/net/torvald/terrarum/virtualcomputer/assets/lua/BRAINFUCK.lua rename to src/net/torvald/terrarum/modulecomputers/virtualcomputer/assets/lua/BRAINFUCK.lua diff --git a/src/net/torvald/terrarum/virtualcomputer/assets/lua/CCAPI.lua b/src/net/torvald/terrarum/modulecomputers/virtualcomputer/assets/lua/CCAPI.lua similarity index 100% rename from src/net/torvald/terrarum/virtualcomputer/assets/lua/CCAPI.lua rename to src/net/torvald/terrarum/modulecomputers/virtualcomputer/assets/lua/CCAPI.lua diff --git a/src/net/torvald/terrarum/virtualcomputer/assets/lua/ROMLIB.lua b/src/net/torvald/terrarum/modulecomputers/virtualcomputer/assets/lua/ROMLIB.lua similarity index 100% rename from src/net/torvald/terrarum/virtualcomputer/assets/lua/ROMLIB.lua rename to src/net/torvald/terrarum/modulecomputers/virtualcomputer/assets/lua/ROMLIB.lua diff --git a/src/net/torvald/terrarum/virtualcomputer/assets/lua/TBASEXEC.lua b/src/net/torvald/terrarum/modulecomputers/virtualcomputer/assets/lua/TBASEXEC.lua similarity index 100% rename from src/net/torvald/terrarum/virtualcomputer/assets/lua/TBASEXEC.lua rename to src/net/torvald/terrarum/modulecomputers/virtualcomputer/assets/lua/TBASEXEC.lua diff --git a/src/net/torvald/terrarum/virtualcomputer/assets/lua/TBASEXTN.lua b/src/net/torvald/terrarum/modulecomputers/virtualcomputer/assets/lua/TBASEXTN.lua similarity index 100% rename from src/net/torvald/terrarum/virtualcomputer/assets/lua/TBASEXTN.lua rename to src/net/torvald/terrarum/modulecomputers/virtualcomputer/assets/lua/TBASEXTN.lua diff --git a/src/net/torvald/terrarum/virtualcomputer/assets/lua/TBASIC.lua b/src/net/torvald/terrarum/modulecomputers/virtualcomputer/assets/lua/TBASIC.lua similarity index 100% rename from src/net/torvald/terrarum/virtualcomputer/assets/lua/TBASIC.lua rename to src/net/torvald/terrarum/modulecomputers/virtualcomputer/assets/lua/TBASIC.lua diff --git a/src/net/torvald/terrarum/virtualcomputer/assets/lua/TBASINCL.lua b/src/net/torvald/terrarum/modulecomputers/virtualcomputer/assets/lua/TBASINCL.lua similarity index 100% rename from src/net/torvald/terrarum/virtualcomputer/assets/lua/TBASINCL.lua rename to src/net/torvald/terrarum/modulecomputers/virtualcomputer/assets/lua/TBASINCL.lua diff --git a/src/net/torvald/terrarum/virtualcomputer/assets/lua/rombasicman.txt b/src/net/torvald/terrarum/modulecomputers/virtualcomputer/assets/lua/rombasicman.txt similarity index 100% rename from src/net/torvald/terrarum/virtualcomputer/assets/lua/rombasicman.txt rename to src/net/torvald/terrarum/modulecomputers/virtualcomputer/assets/lua/rombasicman.txt diff --git a/src/net/torvald/terrarum/virtualcomputer/computer/TerrarumComputer.kt b/src/net/torvald/terrarum/modulecomputers/virtualcomputer/computer/TerrarumComputer.kt similarity index 85% rename from src/net/torvald/terrarum/virtualcomputer/computer/TerrarumComputer.kt rename to src/net/torvald/terrarum/modulecomputers/virtualcomputer/computer/TerrarumComputer.kt index 85764670d..9092c9723 100644 --- a/src/net/torvald/terrarum/virtualcomputer/computer/TerrarumComputer.kt +++ b/src/net/torvald/terrarum/modulecomputers/virtualcomputer/computer/TerrarumComputer.kt @@ -1,4 +1,4 @@ -package net.torvald.terrarum.virtualcomputer.computer +package net.torvald.terrarum.modulecomputers.virtualcomputer.computer import org.luaj.vm2.Globals import org.luaj.vm2.LuaError @@ -9,14 +9,11 @@ import org.luaj.vm2.lib.ZeroArgFunction import org.luaj.vm2.lib.jse.JsePlatform import net.torvald.terrarum.KVHashMap import net.torvald.terrarum.Terrarum -import net.torvald.terrarum.gameactors.Second -import net.torvald.terrarum.gameactors.ceilInt -import net.torvald.terrarum.virtualcomputer.luaapi.* -import net.torvald.terrarum.virtualcomputer.peripheral.* -import net.torvald.terrarum.virtualcomputer.terminal.* -import net.torvald.terrarum.virtualcomputer.tvd.VDUtil -import net.torvald.terrarum.virtualcomputer.tvd.VirtualDisk -import net.torvald.terrarum.virtualcomputer.worldobject.ComputerPartsCodex +import net.torvald.terrarum.Second +import net.torvald.terrarum.ceilInt +import net.torvald.terrarum.modulecomputers.virtualcomputer.tvd.VDUtil +import net.torvald.terrarum.modulecomputers.virtualcomputer.tvd.VirtualDisk +import net.torvald.terrarum.modulecomputers.virtualcomputer.worldobject.ComputerPartsCodex import org.lwjgl.BufferUtils import org.lwjgl.openal.AL10 import java.io.* @@ -71,10 +68,10 @@ class TerrarumComputer(peripheralSlots: Int) { var isHalted = false - lateinit var term: Teletype + lateinit var term: net.torvald.terrarum.modulecomputers.virtualcomputer.terminal.Teletype private set - val peripheralTable = Array(peripheralSlots, { null }) // index == slot number + val peripheralTable = Array(peripheralSlots, { null }) // index == slot number var stdinInput: Int = -1 private set @@ -101,7 +98,7 @@ class TerrarumComputer(peripheralSlots: Int) { File(Terrarum.currentSaveDir.path + "/computers/$filename").absoluteFile, Level.WARNING, { }, - Filesystem.sysCharset + net.torvald.terrarum.modulecomputers.virtualcomputer.luaapi.Filesystem.sysCharset ) } } @@ -131,7 +128,7 @@ class TerrarumComputer(peripheralSlots: Int) { computerValue["boot"] = "hda" } - fun getPeripheral(tableName: String): Peripheral? { + fun getPeripheral(tableName: String): net.torvald.terrarum.modulecomputers.virtualcomputer.peripheral.Peripheral? { peripheralTable.forEach { if (it?.tableName == tableName) return it @@ -148,7 +145,7 @@ class TerrarumComputer(peripheralSlots: Int) { } /** @return installed slot */ - fun attachPeripheral(peri: Peripheral): Int { + fun attachPeripheral(peri: net.torvald.terrarum.modulecomputers.virtualcomputer.peripheral.Peripheral): Int { (0..maxPeripherals - 1).forEach { try { attachPeripheralTo(peri, it) @@ -160,7 +157,7 @@ class TerrarumComputer(peripheralSlots: Int) { throw RuntimeException("No vacant peripheral slot") } - fun attachPeripheralTo(peri: Peripheral, slot: Int) { + fun attachPeripheralTo(peri: net.torvald.terrarum.modulecomputers.virtualcomputer.peripheral.Peripheral, slot: Int) { if (peripheralTable[slot] == null) { peripheralTable[slot] = peri peri.loadLib(luaJ_globals) @@ -171,7 +168,7 @@ class TerrarumComputer(peripheralSlots: Int) { } } - fun detachPeripheral(peri: Peripheral) { + fun detachPeripheral(peri: net.torvald.terrarum.modulecomputers.virtualcomputer.peripheral.Peripheral) { // search for the peripheral var found = -1 for (i in 0..maxPeripherals - 1) { @@ -189,17 +186,17 @@ class TerrarumComputer(peripheralSlots: Int) { } } - fun attachTerminal(term: Teletype) { + fun attachTerminal(term: net.torvald.terrarum.modulecomputers.virtualcomputer.terminal.Teletype) { this.term = term initSandbox(term) } - fun initSandbox(term: Teletype) { + fun initSandbox(term: net.torvald.terrarum.modulecomputers.virtualcomputer.terminal.Teletype) { luaJ_globals = JsePlatform.debugGlobals() - stdout = TerminalPrintStream(this) - stderr = TerminalPrintStream(this) - stdin = TerminalInputStream(this) + stdout = net.torvald.terrarum.modulecomputers.virtualcomputer.terminal.TerminalPrintStream(this) + stderr = net.torvald.terrarum.modulecomputers.virtualcomputer.terminal.TerminalPrintStream(this) + stdin = net.torvald.terrarum.modulecomputers.virtualcomputer.terminal.TerminalInputStream(this) luaJ_globals.STDOUT = stdout luaJ_globals.STDERR = stderr @@ -208,13 +205,13 @@ class TerrarumComputer(peripheralSlots: Int) { luaJ_globals["bit"] = luaJ_globals["bit32"] // load libraries - Term(luaJ_globals, term) - Security(luaJ_globals) - Filesystem(luaJ_globals, this) - HostAccessProvider(luaJ_globals, this) - Input(luaJ_globals, this) - PcSpeakerDriver(luaJ_globals, this) - WorldInformationProvider(luaJ_globals) + net.torvald.terrarum.modulecomputers.virtualcomputer.luaapi.Term(luaJ_globals, term) + net.torvald.terrarum.modulecomputers.virtualcomputer.luaapi.Security(luaJ_globals) + net.torvald.terrarum.modulecomputers.virtualcomputer.luaapi.Filesystem(luaJ_globals, this) + net.torvald.terrarum.modulecomputers.virtualcomputer.luaapi.HostAccessProvider(luaJ_globals, this) + net.torvald.terrarum.modulecomputers.virtualcomputer.luaapi.Input(luaJ_globals, this) + net.torvald.terrarum.modulecomputers.virtualcomputer.luaapi.PcSpeakerDriver(luaJ_globals, this) + net.torvald.terrarum.modulecomputers.virtualcomputer.luaapi.WorldInformationProvider(luaJ_globals) // secure the sandbox //luaJ_globals["io"] = LuaValue.NIL @@ -223,7 +220,7 @@ class TerrarumComputer(peripheralSlots: Int) { //luaJ_globals["debug"] = LuaValue.NIL // ROM BASIC - val inputStream = javaClass.getResourceAsStream("/net/torvald/terrarum/virtualcomputer/assets/lua/BOOT.lua") + val inputStream = javaClass.getResourceAsStream("/net/torvald/terrarum/modulecomputers/virtualcomputer/virtualcomputer/assets/lua/BOOT.lua") runCommand(InputStreamReader(inputStream), "=boot") // computer-related global functions @@ -236,8 +233,8 @@ class TerrarumComputer(peripheralSlots: Int) { // load every peripheral if we're in DEBUG if (DEBUG) { - attachPeripheral(PeripheralInternet(this)) - attachPeripheral(PeripheralPSG(this)) + attachPeripheral(net.torvald.terrarum.modulecomputers.virtualcomputer.peripheral.PeripheralInternet(this)) + attachPeripheral(net.torvald.terrarum.modulecomputers.virtualcomputer.peripheral.PeripheralPSG(this)) // ... } } @@ -581,7 +578,7 @@ class TerrarumComputer(peripheralSlots: Int) { private fun checkALError() { val errorCode = AL10.alGetError() if (errorCode != AL10.AL_NO_ERROR) { - throw ALException(errorCode) + throw net.torvald.terrarum.modulecomputers.virtualcomputer.terminal.ALException(errorCode) } } diff --git a/src/net/torvald/terrarum/virtualcomputer/luaapi/FilesystemDir.kt b/src/net/torvald/terrarum/modulecomputers/virtualcomputer/luaapi/FilesystemDir.kt similarity index 89% rename from src/net/torvald/terrarum/virtualcomputer/luaapi/FilesystemDir.kt rename to src/net/torvald/terrarum/modulecomputers/virtualcomputer/luaapi/FilesystemDir.kt index 9379b8283..d5fd5bb6f 100644 --- a/src/net/torvald/terrarum/virtualcomputer/luaapi/FilesystemDir.kt +++ b/src/net/torvald/terrarum/modulecomputers/virtualcomputer/luaapi/FilesystemDir.kt @@ -1,12 +1,12 @@ -package net.torvald.terrarum.virtualcomputer.luaapi +package net.torvald.terrarum.modulecomputers.virtualcomputer.luaapi import org.luaj.vm2.* import org.luaj.vm2.lib.OneArgFunction import org.luaj.vm2.lib.TwoArgFunction import org.luaj.vm2.lib.ZeroArgFunction import net.torvald.terrarum.Terrarum -import net.torvald.terrarum.virtualcomputer.computer.TerrarumComputer -import net.torvald.terrarum.virtualcomputer.luaapi.Term.Companion.checkIBM437 +import net.torvald.terrarum.modulecomputers.virtualcomputer.computer.TerrarumComputer +import net.torvald.terrarum.modulecomputers.virtualcomputer.luaapi.Term.Companion.checkIBM437 import java.io.* import java.nio.file.Files import java.nio.file.NoSuchFileException @@ -27,7 +27,7 @@ import java.util.* * Use .absoluteFile whenever possible; there's fuckin oddity! (http://bugs.java.com/bugdatabase/view_bug.do;:YfiG?bug_id=4483097) */ @Deprecated("Fuck permission and shit, we go virtual. Use FilesystemTar") -internal class FilesystemDir(globals: Globals, computer: TerrarumComputer) { +internal class FilesystemDir(globals: Globals, computer: net.torvald.terrarum.modulecomputers.virtualcomputer.computer.TerrarumComputer) { init { // load things. WARNING: THIS IS MANUAL! @@ -102,7 +102,7 @@ internal class FilesystemDir(globals: Globals, computer: TerrarumComputer) { /** actual directory: /Saves//computers// * directs media/ directory to / directory */ - fun TerrarumComputer.getRealPath(luapath: LuaValue) : String { + fun net.torvald.terrarum.modulecomputers.virtualcomputer.computer.TerrarumComputer.getRealPath(luapath: LuaValue) : String { // direct mounted paths to real path val computerDir = Terrarum.currentSaveDir.absolutePath + "/computers/" /* if not begins with "(/?)media/", direct to boot @@ -147,7 +147,7 @@ internal class FilesystemDir(globals: Globals, computer: TerrarumComputer) { * * actual directory: /Saves//computers// */ - class ListFiles(val computer: TerrarumComputer) : OneArgFunction() { + class ListFiles(val computer: net.torvald.terrarum.modulecomputers.virtualcomputer.computer.TerrarumComputer) : OneArgFunction() { override fun call(path: LuaValue) : LuaValue { FilesystemDir.ensurePathSanity(path) @@ -164,7 +164,7 @@ internal class FilesystemDir(globals: Globals, computer: TerrarumComputer) { } /** Don't use this. Use isFile */ - class FileExists(val computer: TerrarumComputer) : OneArgFunction() { + class FileExists(val computer: net.torvald.terrarum.modulecomputers.virtualcomputer.computer.TerrarumComputer) : OneArgFunction() { override fun call(path: LuaValue) : LuaValue { FilesystemDir.ensurePathSanity(path) @@ -172,7 +172,7 @@ internal class FilesystemDir(globals: Globals, computer: TerrarumComputer) { } } - class IsDirectory(val computer: TerrarumComputer) : OneArgFunction() { + class IsDirectory(val computer: net.torvald.terrarum.modulecomputers.virtualcomputer.computer.TerrarumComputer) : OneArgFunction() { override fun call(path: LuaValue) : LuaValue { FilesystemDir.ensurePathSanity(path) @@ -183,7 +183,7 @@ internal class FilesystemDir(globals: Globals, computer: TerrarumComputer) { } } - class IsFile(val computer: TerrarumComputer) : OneArgFunction() { + class IsFile(val computer: net.torvald.terrarum.modulecomputers.virtualcomputer.computer.TerrarumComputer) : OneArgFunction() { override fun call(path: LuaValue) : LuaValue { FilesystemDir.ensurePathSanity(path) @@ -207,7 +207,7 @@ internal class FilesystemDir(globals: Globals, computer: TerrarumComputer) { } } - class IsReadOnly(val computer: TerrarumComputer) : OneArgFunction() { + class IsReadOnly(val computer: net.torvald.terrarum.modulecomputers.virtualcomputer.computer.TerrarumComputer) : OneArgFunction() { override fun call(path: LuaValue) : LuaValue { FilesystemDir.ensurePathSanity(path) @@ -216,7 +216,7 @@ internal class FilesystemDir(globals: Globals, computer: TerrarumComputer) { } /** we have 4GB file size limit */ - class GetSize(val computer: TerrarumComputer) : OneArgFunction() { + class GetSize(val computer: net.torvald.terrarum.modulecomputers.virtualcomputer.computer.TerrarumComputer) : OneArgFunction() { override fun call(path: LuaValue) : LuaValue { FilesystemDir.ensurePathSanity(path) @@ -229,7 +229,7 @@ internal class FilesystemDir(globals: Globals, computer: TerrarumComputer) { /** * difference with ComputerCraft: it returns boolean, true on successful. */ - class Mkdir(val computer: TerrarumComputer) : OneArgFunction() { + class Mkdir(val computer: net.torvald.terrarum.modulecomputers.virtualcomputer.computer.TerrarumComputer) : OneArgFunction() { override fun call(path: LuaValue) : LuaValue { FilesystemDir.ensurePathSanity(path) @@ -240,7 +240,7 @@ internal class FilesystemDir(globals: Globals, computer: TerrarumComputer) { /** * moves a directory, overwrites the target */ - class Mv(val computer: TerrarumComputer) : TwoArgFunction() { + class Mv(val computer: net.torvald.terrarum.modulecomputers.virtualcomputer.computer.TerrarumComputer) : TwoArgFunction() { override fun call(from: LuaValue, to: LuaValue) : LuaValue { FilesystemDir.ensurePathSanity(from) FilesystemDir.ensurePathSanity(to) @@ -259,7 +259,7 @@ internal class FilesystemDir(globals: Globals, computer: TerrarumComputer) { * copies a directory, overwrites the target * difference with ComputerCraft: it returns boolean, true on successful. */ - class Cp(val computer: TerrarumComputer) : TwoArgFunction() { + class Cp(val computer: net.torvald.terrarum.modulecomputers.virtualcomputer.computer.TerrarumComputer) : TwoArgFunction() { override fun call(from: LuaValue, to: LuaValue) : LuaValue { FilesystemDir.ensurePathSanity(from) FilesystemDir.ensurePathSanity(to) @@ -275,7 +275,7 @@ internal class FilesystemDir(globals: Globals, computer: TerrarumComputer) { /** * difference with ComputerCraft: it returns boolean, true on successful. */ - class Rm(val computer: TerrarumComputer) : OneArgFunction() { + class Rm(val computer: net.torvald.terrarum.modulecomputers.virtualcomputer.computer.TerrarumComputer) : OneArgFunction() { override fun call(path: LuaValue) : LuaValue { FilesystemDir.ensurePathSanity(path) @@ -285,7 +285,7 @@ internal class FilesystemDir(globals: Globals, computer: TerrarumComputer) { } } - class ConcatPath(val computer: TerrarumComputer) : TwoArgFunction() { + class ConcatPath(val computer: net.torvald.terrarum.modulecomputers.virtualcomputer.computer.TerrarumComputer) : TwoArgFunction() { override fun call(base: LuaValue, local: LuaValue) : LuaValue { FilesystemDir.ensurePathSanity(base) FilesystemDir.ensurePathSanity(local) @@ -321,7 +321,7 @@ internal class FilesystemDir(globals: Globals, computer: TerrarumComputer) { * writeBytes = function(string as bytearray) * } */ - class OpenFile(val computer: TerrarumComputer) : TwoArgFunction() { + class OpenFile(val computer: net.torvald.terrarum.modulecomputers.virtualcomputer.computer.TerrarumComputer) : TwoArgFunction() { override fun call(path: LuaValue, mode: LuaValue) : LuaValue { FilesystemDir.ensurePathSanity(path) @@ -401,7 +401,7 @@ internal class FilesystemDir(globals: Globals, computer: TerrarumComputer) { } } - class GetParentDir(val computer: TerrarumComputer) : OneArgFunction() { + class GetParentDir(val computer: net.torvald.terrarum.modulecomputers.virtualcomputer.computer.TerrarumComputer) : OneArgFunction() { override fun call(path: LuaValue) : LuaValue { FilesystemDir.ensurePathSanity(path) diff --git a/src/net/torvald/terrarum/virtualcomputer/luaapi/FilesystemFactory.kt b/src/net/torvald/terrarum/modulecomputers/virtualcomputer/luaapi/FilesystemFactory.kt similarity index 52% rename from src/net/torvald/terrarum/virtualcomputer/luaapi/FilesystemFactory.kt rename to src/net/torvald/terrarum/modulecomputers/virtualcomputer/luaapi/FilesystemFactory.kt index b1446fa45..f691f51c1 100644 --- a/src/net/torvald/terrarum/virtualcomputer/luaapi/FilesystemFactory.kt +++ b/src/net/torvald/terrarum/modulecomputers/virtualcomputer/luaapi/FilesystemFactory.kt @@ -1,4 +1,4 @@ -package net.torvald.terrarum.virtualcomputer.luaapi +package net.torvald.terrarum.modulecomputers.virtualcomputer.luaapi /** * Created by minjaesong on 2016-09-17. diff --git a/src/net/torvald/terrarum/virtualcomputer/luaapi/FilesystemTEVD.kt b/src/net/torvald/terrarum/modulecomputers/virtualcomputer/luaapi/FilesystemTEVD.kt similarity index 86% rename from src/net/torvald/terrarum/virtualcomputer/luaapi/FilesystemTEVD.kt rename to src/net/torvald/terrarum/modulecomputers/virtualcomputer/luaapi/FilesystemTEVD.kt index 954d44f03..b36a7fc90 100644 --- a/src/net/torvald/terrarum/virtualcomputer/luaapi/FilesystemTEVD.kt +++ b/src/net/torvald/terrarum/modulecomputers/virtualcomputer/luaapi/FilesystemTEVD.kt @@ -1,15 +1,14 @@ -package net.torvald.terrarum.virtualcomputer.luaapi +package net.torvald.terrarum.modulecomputers.virtualcomputer.luaapi import org.luaj.vm2.* import org.luaj.vm2.lib.OneArgFunction import org.luaj.vm2.lib.TwoArgFunction import org.luaj.vm2.lib.ZeroArgFunction -import net.torvald.terrarum.virtualcomputer.tvd.VDUtil.VDPath -import net.torvald.terrarum.virtualcomputer.computer.TerrarumComputer -import net.torvald.terrarum.virtualcomputer.luaapi.Term.Companion.checkIBM437 -import net.torvald.terrarum.virtualcomputer.tvd.VDUtil -import net.torvald.terrarum.virtualcomputer.tvd.* -import net.torvald.terrarum.virtualcomputer.tvd.VDFileWriter +import net.torvald.terrarum.modulecomputers.virtualcomputer.luaapi.Term.Companion.checkIBM437 +import net.torvald.terrarum.modulecomputers.virtualcomputer.tvd.* +import net.torvald.terrarum.modulecomputers.virtualcomputer.tvd.VDUtil +import net.torvald.terrarum.modulecomputers.virtualcomputer.tvd.VDUtil.VDPath + import java.io.* import java.nio.charset.Charset import java.util.* @@ -26,7 +25,7 @@ import java.util.* * Don't convert '\' to '/'! Rev-slash is used for escape character in sh, and we're sh-compatible! * Use .absoluteFile whenever possible; there's fuckin oddity! (http://bugs.java.com/bugdatabase/view_bug.do;:YfiG?bug_id=4483097) */ -internal class Filesystem(globals: Globals, computer: TerrarumComputer) { +internal class Filesystem(globals: Globals, computer: net.torvald.terrarum.modulecomputers.virtualcomputer.computer.TerrarumComputer) { init { // load things. WARNING: THIS IS MANUAL! @@ -87,7 +86,7 @@ internal class Filesystem(globals: Globals, computer: TerrarumComputer) { * computer.diskRack[SOMEUUID]->subpath * else, computer.diskRack["hda"]->subpath */ - fun TerrarumComputer.getFile(path: VDPath) : DiskEntry? { + fun net.torvald.terrarum.modulecomputers.virtualcomputer.computer.TerrarumComputer.getFile(path: VDPath) : DiskEntry? { val disk = this.getTargetDisk(path) if (disk == null) return null @@ -102,7 +101,7 @@ internal class Filesystem(globals: Globals, computer: TerrarumComputer) { * computer.diskRack["fd1"] * else, computer.diskRack[] */ - fun TerrarumComputer.getTargetDisk(path: VDPath) : VirtualDisk? { + fun net.torvald.terrarum.modulecomputers.virtualcomputer.computer.TerrarumComputer.getTargetDisk(path: VDPath) : VirtualDisk? { if (path.hierarchy.size >= 2 && Arrays.equals(path[0], "media".toEntryName(DiskEntry.NAME_LENGTH, sysCharset))) { val diskName = path[1].toCanonicalString(sysCharset) @@ -115,7 +114,7 @@ internal class Filesystem(globals: Globals, computer: TerrarumComputer) { } } - fun TerrarumComputer.getDirectoryEntries(path: VDPath) : Array? { + fun net.torvald.terrarum.modulecomputers.virtualcomputer.computer.TerrarumComputer.getDirectoryEntries(path: VDPath) : Array? { val directory = this.getFile(path) if (directory == null) return null @@ -142,7 +141,7 @@ internal class Filesystem(globals: Globals, computer: TerrarumComputer) { * * actual directory: /Saves//computers// */ - class ListFiles(val computer: TerrarumComputer) : OneArgFunction() { + class ListFiles(val computer: net.torvald.terrarum.modulecomputers.virtualcomputer.computer.TerrarumComputer) : OneArgFunction() { override fun call(path: LuaValue) : LuaValue { val path = VDPath(path.checkPath(), sysCharset) @@ -159,7 +158,7 @@ internal class Filesystem(globals: Globals, computer: TerrarumComputer) { } } - class FileExists(val computer: TerrarumComputer) : OneArgFunction() { + class FileExists(val computer: net.torvald.terrarum.modulecomputers.virtualcomputer.computer.TerrarumComputer) : OneArgFunction() { override fun call(path: LuaValue) : LuaValue { val path = VDPath(path.checkPath(), sysCharset) val disk = computer.getTargetDisk(path) @@ -172,30 +171,30 @@ internal class Filesystem(globals: Globals, computer: TerrarumComputer) { } } - class IsDirectory(val computer: TerrarumComputer) : OneArgFunction() { + class IsDirectory(val computer: net.torvald.terrarum.modulecomputers.virtualcomputer.computer.TerrarumComputer) : OneArgFunction() { override fun call(path: LuaValue) : LuaValue { val path = VDPath(path.checkPath(), sysCharset) return LuaValue.valueOf(computer.getFile(path)?.contents is EntryDirectory) } } - class IsFile(val computer: TerrarumComputer) : OneArgFunction() { + class IsFile(val computer: net.torvald.terrarum.modulecomputers.virtualcomputer.computer.TerrarumComputer) : OneArgFunction() { override fun call(path: LuaValue) : LuaValue { val path = VDPath(path.checkPath(), sysCharset) return LuaValue.valueOf(computer.getFile(path)?.contents is EntryFile) } } - class IsReadOnly(val computer: TerrarumComputer) : OneArgFunction() { + class IsReadOnly(val computer: net.torvald.terrarum.modulecomputers.virtualcomputer.computer.TerrarumComputer) : OneArgFunction() { override fun call(path: LuaValue) : LuaValue { return LuaValue.valueOf(false) } } /** we have 2 GB file size limit */ - class GetSize(val computer: TerrarumComputer) : OneArgFunction() { + class GetSize(val computer: net.torvald.terrarum.modulecomputers.virtualcomputer.computer.TerrarumComputer) : OneArgFunction() { override fun call(path: LuaValue) : LuaValue { - val path = VDPath(path.checkPath(), sysCharset) + val path = VDUtil.VDPath(path.checkPath(), sysCharset) val file = computer.getFile(path) try { if (file!!.contents is EntryFile) @@ -215,7 +214,7 @@ internal class Filesystem(globals: Globals, computer: TerrarumComputer) { /** * returns true on success */ - class Mkdir(val computer: TerrarumComputer) : OneArgFunction() { + class Mkdir(val computer: net.torvald.terrarum.modulecomputers.virtualcomputer.computer.TerrarumComputer) : OneArgFunction() { override fun call(path: LuaValue) : LuaValue { return tryBool { val path = VDPath(path.checkPath(), sysCharset) @@ -243,7 +242,7 @@ internal class Filesystem(globals: Globals, computer: TerrarumComputer) { /** * moves a directory, overwrites the target */ - class Mv(val computer: TerrarumComputer) : TwoArgFunction() { + class Mv(val computer: net.torvald.terrarum.modulecomputers.virtualcomputer.computer.TerrarumComputer) : TwoArgFunction() { override fun call(from: LuaValue, to: LuaValue) : LuaValue { return tryBool { val pathFrom = VDPath(from.checkPath(), sysCharset) @@ -260,7 +259,7 @@ internal class Filesystem(globals: Globals, computer: TerrarumComputer) { * copies a directory, overwrites the target * difference with ComputerCraft: it returns boolean, true on successful. */ - class Cp(val computer: TerrarumComputer) : TwoArgFunction() { + class Cp(val computer: net.torvald.terrarum.modulecomputers.virtualcomputer.computer.TerrarumComputer) : TwoArgFunction() { override fun call(from: LuaValue, to: LuaValue) : LuaValue { return tryBool { val pathFrom = VDPath(from.checkPath(), sysCharset) @@ -295,7 +294,7 @@ internal class Filesystem(globals: Globals, computer: TerrarumComputer) { /** * difference with ComputerCraft: it returns boolean, true on successful. */ - class Rm(val computer: TerrarumComputer) : OneArgFunction() { + class Rm(val computer: net.torvald.terrarum.modulecomputers.virtualcomputer.computer.TerrarumComputer) : OneArgFunction() { override fun call(path: LuaValue) : LuaValue { return tryBool { val path = VDPath(path.checkPath(), sysCharset) @@ -306,7 +305,7 @@ internal class Filesystem(globals: Globals, computer: TerrarumComputer) { } } - class ConcatPath(val computer: TerrarumComputer) : TwoArgFunction() { + class ConcatPath(val computer: net.torvald.terrarum.modulecomputers.virtualcomputer.computer.TerrarumComputer) : TwoArgFunction() { override fun call(base: LuaValue, local: LuaValue) : LuaValue { TODO() } @@ -338,7 +337,7 @@ internal class Filesystem(globals: Globals, computer: TerrarumComputer) { * writeBytes = function(string as bytearray) * } */ - class OpenFile(val computer: TerrarumComputer) : TwoArgFunction() { + class OpenFile(val computer: net.torvald.terrarum.modulecomputers.virtualcomputer.computer.TerrarumComputer) : TwoArgFunction() { override fun call(path: LuaValue, mode: LuaValue) : LuaValue { val path = VDPath(path.checkPath(), sysCharset) val disk = computer.getTargetDisk(path)!! @@ -423,7 +422,7 @@ internal class Filesystem(globals: Globals, computer: TerrarumComputer) { } } - class GetParentDir(val computer: TerrarumComputer) : OneArgFunction() { + class GetParentDir(val computer: net.torvald.terrarum.modulecomputers.virtualcomputer.computer.TerrarumComputer) : OneArgFunction() { override fun call(path: LuaValue) : LuaValue { val path = VDPath(path.checkPath(), sysCharset).getParent() return LuaValue.valueOf(path.toString()) diff --git a/src/net/torvald/terrarum/virtualcomputer/luaapi/HostAccessProvider.kt b/src/net/torvald/terrarum/modulecomputers/virtualcomputer/luaapi/HostAccessProvider.kt similarity index 60% rename from src/net/torvald/terrarum/virtualcomputer/luaapi/HostAccessProvider.kt rename to src/net/torvald/terrarum/modulecomputers/virtualcomputer/luaapi/HostAccessProvider.kt index 2384a134d..e2211d837 100644 --- a/src/net/torvald/terrarum/virtualcomputer/luaapi/HostAccessProvider.kt +++ b/src/net/torvald/terrarum/modulecomputers/virtualcomputer/luaapi/HostAccessProvider.kt @@ -1,11 +1,11 @@ -package net.torvald.terrarum.virtualcomputer.luaapi +package net.torvald.terrarum.modulecomputers.virtualcomputer.luaapi import net.torvald.terrarum.gameactors.ai.toLua import org.luaj.vm2.lib.OneArgFunction import org.luaj.vm2.lib.ZeroArgFunction -import net.torvald.terrarum.virtualcomputer.computer.TerrarumComputer -import net.torvald.terrarum.virtualcomputer.luaapi.Term.Companion.checkIBM437 -import net.torvald.terrarum.virtualcomputer.terminal.Teletype +import net.torvald.terrarum.modulecomputers.virtualcomputer.computer.TerrarumComputer +import net.torvald.terrarum.modulecomputers.virtualcomputer.luaapi.Term.Companion.checkIBM437 +import net.torvald.terrarum.modulecomputers.virtualcomputer.terminal.Teletype import org.luaj.vm2.* /** @@ -15,7 +15,7 @@ import org.luaj.vm2.* * * Created by minjaesong on 2016-09-19. */ -internal class HostAccessProvider(globals: Globals, computer: TerrarumComputer) { +internal class HostAccessProvider(globals: Globals, computer: net.torvald.terrarum.modulecomputers.virtualcomputer.computer.TerrarumComputer) { init { globals["machine"] = LuaTable() @@ -42,19 +42,19 @@ internal class HostAccessProvider(globals: Globals, computer: TerrarumComputer) } } - class IsHalted(val computer: TerrarumComputer): ZeroArgFunction() { + class IsHalted(val computer: net.torvald.terrarum.modulecomputers.virtualcomputer.computer.TerrarumComputer): ZeroArgFunction() { override fun call(): LuaValue { return LuaValue.valueOf(computer.isHalted) } } - class NativeReadStdin(val computer: TerrarumComputer) : ZeroArgFunction() { + class NativeReadStdin(val computer: net.torvald.terrarum.modulecomputers.virtualcomputer.computer.TerrarumComputer) : ZeroArgFunction() { override fun call(): LuaValue { return computer.stdin!!.read().toLua() } } - class HaltComputer(val computer: TerrarumComputer) : ZeroArgFunction() { + class HaltComputer(val computer: net.torvald.terrarum.modulecomputers.virtualcomputer.computer.TerrarumComputer) : ZeroArgFunction() { override fun call() : LuaValue { computer.isHalted = true computer.luaJ_globals.load("""print(DC4.."system halted")""").call() @@ -63,13 +63,13 @@ internal class HostAccessProvider(globals: Globals, computer: TerrarumComputer) } /** Time elapsed since the power is on. */ - class NativeGetMilliTime(val computer: TerrarumComputer) : ZeroArgFunction() { + class NativeGetMilliTime(val computer: net.torvald.terrarum.modulecomputers.virtualcomputer.computer.TerrarumComputer) : ZeroArgFunction() { override fun call(): LuaValue { return LuaValue.valueOf(computer.milliTime) } } - class NativeThreadSleep(val computer: TerrarumComputer) : OneArgFunction() { + class NativeThreadSleep(val computer: net.torvald.terrarum.modulecomputers.virtualcomputer.computer.TerrarumComputer) : OneArgFunction() { override fun call(mills: LuaValue): LuaValue { computer.currentExecutionThread.join(mills.checklong()) return LuaValue.NONE diff --git a/src/net/torvald/terrarum/modulecomputers/virtualcomputer/luaapi/Input.kt b/src/net/torvald/terrarum/modulecomputers/virtualcomputer/luaapi/Input.kt new file mode 100644 index 000000000..ad4dfc73f --- /dev/null +++ b/src/net/torvald/terrarum/modulecomputers/virtualcomputer/luaapi/Input.kt @@ -0,0 +1,16 @@ +package net.torvald.terrarum.modulecomputers.virtualcomputer.luaapi + +import com.badlogic.gdx.Gdx +import org.luaj.vm2.Globals +import org.luaj.vm2.LuaTable +import org.luaj.vm2.LuaValue +import org.luaj.vm2.lib.OneArgFunction +import net.torvald.terrarum.modulecomputers.virtualcomputer.computer.TerrarumComputer + +/** + * Created by minjaesong on 2016-09-25. + */ +class Input(globals: Globals, computer: net.torvald.terrarum.modulecomputers.virtualcomputer.computer.TerrarumComputer) { + + +} \ No newline at end of file diff --git a/src/net/torvald/terrarum/virtualcomputer/luaapi/PcSpeakerDriver.kt b/src/net/torvald/terrarum/modulecomputers/virtualcomputer/luaapi/PcSpeakerDriver.kt similarity index 90% rename from src/net/torvald/terrarum/virtualcomputer/luaapi/PcSpeakerDriver.kt rename to src/net/torvald/terrarum/modulecomputers/virtualcomputer/luaapi/PcSpeakerDriver.kt index 104a84187..80cf27339 100644 --- a/src/net/torvald/terrarum/virtualcomputer/luaapi/PcSpeakerDriver.kt +++ b/src/net/torvald/terrarum/modulecomputers/virtualcomputer/luaapi/PcSpeakerDriver.kt @@ -1,11 +1,11 @@ -package net.torvald.terrarum.virtualcomputer.luaapi +package net.torvald.terrarum.modulecomputers.virtualcomputer.luaapi import org.luaj.vm2.Globals import org.luaj.vm2.LuaTable import org.luaj.vm2.LuaValue import org.luaj.vm2.lib.TwoArgFunction import org.luaj.vm2.lib.ZeroArgFunction -import net.torvald.terrarum.virtualcomputer.computer.TerrarumComputer +import net.torvald.terrarum.modulecomputers.virtualcomputer.computer.TerrarumComputer import org.luaj.vm2.LuaFunction import org.luaj.vm2.lib.OneArgFunction @@ -16,7 +16,7 @@ import org.luaj.vm2.lib.OneArgFunction * * Created by minjaesong on 2016-09-27. */ -class PcSpeakerDriver(val globals: Globals, host: TerrarumComputer) { +class PcSpeakerDriver(val globals: Globals, host: net.torvald.terrarum.modulecomputers.virtualcomputer.computer.TerrarumComputer) { init { globals["speaker"] = LuaTable() @@ -67,7 +67,7 @@ class PcSpeakerDriver(val globals: Globals, host: TerrarumComputer) { } } - class EnqueueTone(val host: TerrarumComputer) : TwoArgFunction() { + class EnqueueTone(val host: net.torvald.terrarum.modulecomputers.virtualcomputer.computer.TerrarumComputer) : TwoArgFunction() { /** * @param freq: number (hertz) or string (A-4, A4, B#2, ...) */ @@ -84,7 +84,7 @@ class PcSpeakerDriver(val globals: Globals, host: TerrarumComputer) { } } - class ClearQueue(val host: TerrarumComputer) : ZeroArgFunction() { + class ClearQueue(val host: net.torvald.terrarum.modulecomputers.virtualcomputer.computer.TerrarumComputer) : ZeroArgFunction() { override fun call(): LuaValue { host.clearBeepQueue() return LuaValue.NONE diff --git a/src/net/torvald/terrarum/virtualcomputer/luaapi/Security.kt b/src/net/torvald/terrarum/modulecomputers/virtualcomputer/luaapi/Security.kt similarity index 97% rename from src/net/torvald/terrarum/virtualcomputer/luaapi/Security.kt rename to src/net/torvald/terrarum/modulecomputers/virtualcomputer/luaapi/Security.kt index 8f6dc9e8f..9c4ab3346 100644 --- a/src/net/torvald/terrarum/virtualcomputer/luaapi/Security.kt +++ b/src/net/torvald/terrarum/modulecomputers/virtualcomputer/luaapi/Security.kt @@ -1,4 +1,4 @@ -package net.torvald.terrarum.virtualcomputer.luaapi +package net.torvald.terrarum.modulecomputers.virtualcomputer.luaapi import org.luaj.vm2.Globals import org.luaj.vm2.LuaValue diff --git a/src/net/torvald/terrarum/virtualcomputer/luaapi/Term.kt b/src/net/torvald/terrarum/modulecomputers/virtualcomputer/luaapi/Term.kt similarity index 63% rename from src/net/torvald/terrarum/virtualcomputer/luaapi/Term.kt rename to src/net/torvald/terrarum/modulecomputers/virtualcomputer/luaapi/Term.kt index a5f532ecf..c9a0487ba 100644 --- a/src/net/torvald/terrarum/virtualcomputer/luaapi/Term.kt +++ b/src/net/torvald/terrarum/modulecomputers/virtualcomputer/luaapi/Term.kt @@ -1,9 +1,9 @@ -package net.torvald.terrarum.virtualcomputer.luaapi +package net.torvald.terrarum.modulecomputers.virtualcomputer.luaapi import org.luaj.vm2.* import org.luaj.vm2.lib.* -import net.torvald.terrarum.virtualcomputer.terminal.Teletype -import net.torvald.terrarum.virtualcomputer.terminal.Terminal +import net.torvald.terrarum.modulecomputers.virtualcomputer.terminal.Teletype +import net.torvald.terrarum.modulecomputers.virtualcomputer.terminal.Terminal import java.nio.charset.Charset /** @@ -12,7 +12,7 @@ import java.nio.charset.Charset * * Created by minjaesong on 2016-09-12. */ -internal class Term(globals: Globals, term: Teletype) { +internal class Term(globals: Globals, term: net.torvald.terrarum.modulecomputers.virtualcomputer.terminal.Teletype) { init { // load things. WARNING: THIS IS MANUAL! @@ -26,7 +26,7 @@ internal class Term(globals: Globals, term: Teletype) { globals["term"]["isTeletype"] = Term.IsTeletype(term) globals["term"]["bell"] = Term.Bell(term) - if (term is Terminal) { + if (term is net.torvald.terrarum.modulecomputers.virtualcomputer.terminal.Terminal) { globals["term"]["emitRaw"] = Term.EmitRaw(term) globals["term"]["emit"] = Term.Emit(term) globals["term"]["emitString"] = Term.EmitString(term) @@ -62,16 +62,16 @@ internal class Term(globals: Globals, term: Teletype) { } } - class Bell(val tty: Teletype) : OneArgFunction() { + class Bell(val tty: net.torvald.terrarum.modulecomputers.virtualcomputer.terminal.Teletype) : OneArgFunction() { override fun call(pattern: LuaValue): LuaValue { tty.bell(pattern.checkjstring()) return LuaValue.NONE } } - class WriteString(val tty: Teletype) : LuaFunction() { + class WriteString(val tty: net.torvald.terrarum.modulecomputers.virtualcomputer.terminal.Teletype) : LuaFunction() { override fun call(p0: LuaValue): LuaValue { - if (tty is Terminal) + if (tty is net.torvald.terrarum.modulecomputers.virtualcomputer.terminal.Terminal) tty.writeString(p0.checkIBM437(), tty.cursorX, tty.cursorY) else tty.writeChars(p0.checkIBM437()) @@ -79,7 +79,7 @@ internal class Term(globals: Globals, term: Teletype) { } override fun call(s: LuaValue, x: LuaValue, y: LuaValue): LuaValue { - if (tty is Terminal) + if (tty is net.torvald.terrarum.modulecomputers.virtualcomputer.terminal.Terminal) tty.writeString(s.checkIBM437(), x.checkint(), y.checkint()) else throw LuaError("couldn't move cursor; TTY is one-dimensional") @@ -87,9 +87,9 @@ internal class Term(globals: Globals, term: Teletype) { } } - class PrintString(val tty: Teletype) : LuaFunction() { + class PrintString(val tty: net.torvald.terrarum.modulecomputers.virtualcomputer.terminal.Teletype) : LuaFunction() { override fun call(p0: LuaValue): LuaValue { - if (tty is Terminal) + if (tty is net.torvald.terrarum.modulecomputers.virtualcomputer.terminal.Terminal) tty.printString(p0.checkIBM437(), tty.cursorX, tty.cursorY) else tty.printChars(p0.checkIBM437()) @@ -97,7 +97,7 @@ internal class Term(globals: Globals, term: Teletype) { } override fun call(s: LuaValue, x: LuaValue, y: LuaValue): LuaValue { - if (tty is Terminal) + if (tty is net.torvald.terrarum.modulecomputers.virtualcomputer.terminal.Terminal) tty.printString(s.checkIBM437(), x.checkint(), y.checkint()) else throw LuaError("couldn't move cursor; TTY is one-dimensional") @@ -105,14 +105,14 @@ internal class Term(globals: Globals, term: Teletype) { } } - class NewLine(val tty: Teletype) : ZeroArgFunction() { + class NewLine(val tty: net.torvald.terrarum.modulecomputers.virtualcomputer.terminal.Teletype) : ZeroArgFunction() { override fun call(): LuaValue { tty.newLine() return LuaValue.NONE } } - class EmitRaw(val term: Terminal) : ThreeArgFunction() { + class EmitRaw(val term: net.torvald.terrarum.modulecomputers.virtualcomputer.terminal.Terminal) : ThreeArgFunction() { override fun call(p0: LuaValue, x: LuaValue, y: LuaValue): LuaValue { term.emitChar(p0.checkint(), x.checkint() - 1, y.checkint() - 1) return LuaValue.NONE @@ -120,35 +120,35 @@ internal class Term(globals: Globals, term: Teletype) { } // emitchar - class Emit(val term: Terminal) : ThreeArgFunction() { + class Emit(val term: net.torvald.terrarum.modulecomputers.virtualcomputer.terminal.Terminal) : ThreeArgFunction() { override fun call(p0: LuaValue, x: LuaValue, y: LuaValue): LuaValue { term.emitChar(p0.checkint().toChar(), x.checkint() - 1, y.checkint() - 1) return LuaValue.NONE } } - class EmitString(val term: Terminal) : ThreeArgFunction() { + class EmitString(val term: net.torvald.terrarum.modulecomputers.virtualcomputer.terminal.Terminal) : ThreeArgFunction() { override fun call(p0: LuaValue, x: LuaValue, y: LuaValue): LuaValue { term.emitString(p0.checkIBM437(), x.checkint() - 1, y.checkint() - 1) return LuaValue.NONE } } - class ResetColour(val term: Terminal) : ZeroArgFunction() { + class ResetColour(val term: net.torvald.terrarum.modulecomputers.virtualcomputer.terminal.Terminal) : ZeroArgFunction() { override fun call(): LuaValue { term.resetColour() return LuaValue.NONE } } - class Clear(val term: Terminal) : ZeroArgFunction() { + class Clear(val term: net.torvald.terrarum.modulecomputers.virtualcomputer.terminal.Terminal) : ZeroArgFunction() { override fun call(): LuaValue { term.clear() return LuaValue.NONE } } - class ClearLine(val term: Terminal) : ZeroArgFunction() { + class ClearLine(val term: net.torvald.terrarum.modulecomputers.virtualcomputer.terminal.Terminal) : ZeroArgFunction() { override fun call(): LuaValue { term.clearLine() return LuaValue.NONE @@ -156,7 +156,7 @@ internal class Term(globals: Globals, term: Teletype) { } /** term.setCursorPos(number x) */ - class MoveCursor(val tty: Teletype) : OneArgFunction() { + class MoveCursor(val tty: net.torvald.terrarum.modulecomputers.virtualcomputer.terminal.Teletype) : OneArgFunction() { override fun call(p0: LuaValue): LuaValue { for (i in 1..p0.checkint()) tty.printChar(' ') @@ -164,7 +164,7 @@ internal class Term(globals: Globals, term: Teletype) { } } - class SetCursor(val term: Terminal) : TwoArgFunction() { + class SetCursor(val term: net.torvald.terrarum.modulecomputers.virtualcomputer.terminal.Terminal) : TwoArgFunction() { override fun call(x: LuaValue, y: LuaValue): LuaValue { term.setCursor(x.checkint() - 1, y.checkint() - 1) return LuaValue.NONE @@ -172,33 +172,33 @@ internal class Term(globals: Globals, term: Teletype) { } /** One-based */ - class GetCursorPos(val term: Terminal) : VarArgFunction() { + class GetCursorPos(val term: net.torvald.terrarum.modulecomputers.virtualcomputer.terminal.Terminal) : VarArgFunction() { override fun invoke(args: Varargs?): Varargs { val ret = arrayOf(LuaValue.valueOf(term.cursorX + 1), LuaValue.valueOf(term.cursorY + 1)) return LuaValue.varargsOf(ret) } } - class GetCursorX(val term: Terminal) : ZeroArgFunction() { + class GetCursorX(val term: net.torvald.terrarum.modulecomputers.virtualcomputer.terminal.Terminal) : ZeroArgFunction() { override fun call(): LuaValue { return LuaValue.valueOf(term.cursorX + 1) } } - class GetCursorY(val term: Terminal) : ZeroArgFunction() { + class GetCursorY(val term: net.torvald.terrarum.modulecomputers.virtualcomputer.terminal.Terminal) : ZeroArgFunction() { override fun call(): LuaValue { return LuaValue.valueOf(term.cursorY + 1) } } - class SetCursorX(val term: Terminal) : OneArgFunction() { + class SetCursorX(val term: net.torvald.terrarum.modulecomputers.virtualcomputer.terminal.Terminal) : OneArgFunction() { override fun call(p0: LuaValue): LuaValue { term.setCursor(p0.checkint() - 1, term.cursorY) return LuaValue.NONE } } - class SetCursorY(val term: Terminal) : OneArgFunction() { + class SetCursorY(val term: net.torvald.terrarum.modulecomputers.virtualcomputer.terminal.Terminal) : OneArgFunction() { override fun call(p0: LuaValue): LuaValue { term.setCursor(term.cursorX - 1, p0.checkint()) return LuaValue.NONE @@ -206,49 +206,49 @@ internal class Term(globals: Globals, term: Teletype) { } /** term.setCursorBlink(boolean bool) */ - class SetCursorBlink(val term: Terminal) : OneArgFunction() { + class SetCursorBlink(val term: net.torvald.terrarum.modulecomputers.virtualcomputer.terminal.Terminal) : OneArgFunction() { override fun call(p0: LuaValue): LuaValue { term.cursorBlink = p0.toboolean() return LuaValue.NONE } } - class GetSize(val term: Terminal) : VarArgFunction() { + class GetSize(val term: net.torvald.terrarum.modulecomputers.virtualcomputer.terminal.Terminal) : VarArgFunction() { override fun invoke(args: Varargs?): Varargs { val ret = arrayOf(LuaValue.valueOf(term.width), LuaValue.valueOf(term.height)) return LuaValue.varargsOf(ret) } } - class GetWidth(val tty: Teletype) : ZeroArgFunction() { + class GetWidth(val tty: net.torvald.terrarum.modulecomputers.virtualcomputer.terminal.Teletype) : ZeroArgFunction() { override fun call(): LuaValue { return LuaValue.valueOf(tty.width) } } - class GetHeight(val terminal: Terminal) : ZeroArgFunction() { + class GetHeight(val terminal: net.torvald.terrarum.modulecomputers.virtualcomputer.terminal.Terminal) : ZeroArgFunction() { override fun call(): LuaValue { return LuaValue.valueOf(terminal.height) } } - class IsColour(val term: Terminal) : ZeroArgFunction() { + class IsColour(val term: net.torvald.terrarum.modulecomputers.virtualcomputer.terminal.Terminal) : ZeroArgFunction() { override fun call(): LuaValue { return LuaValue.valueOf(term.coloursCount > 4) } } /** term.scroll(number n) */ - class Scroll(val tty: Teletype) : OneArgFunction() { + class Scroll(val tty: net.torvald.terrarum.modulecomputers.virtualcomputer.terminal.Teletype) : OneArgFunction() { override fun call(p0: LuaValue): LuaValue { - if (tty is Terminal) tty.scroll(p0.checkint()) + if (tty is net.torvald.terrarum.modulecomputers.virtualcomputer.terminal.Terminal) tty.scroll(p0.checkint()) else for (i in 1..p0.checkint()) tty.newLine() return LuaValue.NONE } } /** term.setTextColor(number color) */ - class SetForeColour(val term: Terminal) : OneArgFunction() { + class SetForeColour(val term: net.torvald.terrarum.modulecomputers.virtualcomputer.terminal.Terminal) : OneArgFunction() { override fun call(p0: LuaValue): LuaValue { term.foreColour = p0.checkint() return LuaValue.NONE @@ -256,26 +256,26 @@ internal class Term(globals: Globals, term: Teletype) { } /** term.setBackgroundColor(number color) */ - class SetBackColour(val term: Terminal) : OneArgFunction() { + class SetBackColour(val term: net.torvald.terrarum.modulecomputers.virtualcomputer.terminal.Terminal) : OneArgFunction() { override fun call(p0: LuaValue): LuaValue { term.backColour = p0.checkint() return LuaValue.NONE } } - class GetForeColour(val term: Terminal) : ZeroArgFunction() { + class GetForeColour(val term: net.torvald.terrarum.modulecomputers.virtualcomputer.terminal.Terminal) : ZeroArgFunction() { override fun call(): LuaValue { return LuaValue.valueOf(term.foreColour) } } - class GetBackColour(val term: Terminal) : ZeroArgFunction() { + class GetBackColour(val term: net.torvald.terrarum.modulecomputers.virtualcomputer.terminal.Terminal) : ZeroArgFunction() { override fun call(): LuaValue { return LuaValue.valueOf(term.backColour) } } - class IsTeletype(val termInQuestion: Teletype) : ZeroArgFunction() { + class IsTeletype(val termInQuestion: net.torvald.terrarum.modulecomputers.virtualcomputer.terminal.Teletype) : ZeroArgFunction() { override fun call(): LuaValue { return LuaValue.valueOf(termInQuestion.coloursCount == 0) } diff --git a/src/net/torvald/terrarum/virtualcomputer/luaapi/WorldInformationProvider.kt b/src/net/torvald/terrarum/modulecomputers/virtualcomputer/luaapi/WorldInformationProvider.kt similarity index 88% rename from src/net/torvald/terrarum/virtualcomputer/luaapi/WorldInformationProvider.kt rename to src/net/torvald/terrarum/modulecomputers/virtualcomputer/luaapi/WorldInformationProvider.kt index 6285589bc..48b8246b8 100644 --- a/src/net/torvald/terrarum/virtualcomputer/luaapi/WorldInformationProvider.kt +++ b/src/net/torvald/terrarum/modulecomputers/virtualcomputer/luaapi/WorldInformationProvider.kt @@ -1,9 +1,10 @@ -package net.torvald.terrarum.virtualcomputer.luaapi +package net.torvald.terrarum.modulecomputers.virtualcomputer.luaapi import org.luaj.vm2.Globals import org.luaj.vm2.LuaFunction import net.torvald.terrarum.Terrarum -import net.torvald.terrarum.gameworld.WorldTime +import net.torvald.terrarum.modulebasegame.Ingame +import net.torvald.terrarum.modulebasegame.gameworld.WorldTime import org.luaj.vm2.LuaTable import org.luaj.vm2.LuaValue @@ -22,7 +23,7 @@ class WorldInformationProvider(globals: Globals) { companion object { fun getWorldTimeInLuaFormat() : LuaTable { val t = LuaTable() - val time = if (Terrarum.ingame != null) Terrarum.ingame!!.world.time else WorldTime() + val time = if (Terrarum.ingame != null) (Terrarum.ingame!! as Ingame).world.time else WorldTime() // int Terrarum World Time format t["hour"] = time.hours @@ -41,7 +42,7 @@ class WorldInformationProvider(globals: Globals) { /** evaluate single C date format */ fun String.evalAsDate(): String { - val time = if (Terrarum.ingame != null) Terrarum.ingame!!.world.time else WorldTime() + val time = if (Terrarum.ingame != null) (Terrarum.ingame!! as Ingame).world.time else WorldTime() return when (this) { "%a" -> time.getDayNameShort() "%A" -> time.getDayNameFull() diff --git a/src/net/torvald/terrarum/virtualcomputer/peripheral/Peripheral.kt b/src/net/torvald/terrarum/modulecomputers/virtualcomputer/peripheral/Peripheral.kt similarity index 81% rename from src/net/torvald/terrarum/virtualcomputer/peripheral/Peripheral.kt rename to src/net/torvald/terrarum/modulecomputers/virtualcomputer/peripheral/Peripheral.kt index ccacf70b5..ade0d84c9 100644 --- a/src/net/torvald/terrarum/virtualcomputer/peripheral/Peripheral.kt +++ b/src/net/torvald/terrarum/modulecomputers/virtualcomputer/peripheral/Peripheral.kt @@ -1,4 +1,4 @@ -package net.torvald.terrarum.virtualcomputer.peripheral +package net.torvald.terrarum.modulecomputers.virtualcomputer.peripheral import org.luaj.vm2.Globals import org.luaj.vm2.LuaTable diff --git a/src/net/torvald/terrarum/virtualcomputer/peripheral/PeripheralCharLCD.kt b/src/net/torvald/terrarum/modulecomputers/virtualcomputer/peripheral/PeripheralCharLCD.kt similarity index 89% rename from src/net/torvald/terrarum/virtualcomputer/peripheral/PeripheralCharLCD.kt rename to src/net/torvald/terrarum/modulecomputers/virtualcomputer/peripheral/PeripheralCharLCD.kt index 0b79b3f84..aca5b2e20 100644 --- a/src/net/torvald/terrarum/virtualcomputer/peripheral/PeripheralCharLCD.kt +++ b/src/net/torvald/terrarum/modulecomputers/virtualcomputer/peripheral/PeripheralCharLCD.kt @@ -1,4 +1,4 @@ -package net.torvald.terrarum.virtualcomputer.peripheral +package net.torvald.terrarum.modulecomputers.virtualcomputer.peripheral import com.badlogic.gdx.graphics.g2d.BitmapFont import com.badlogic.gdx.graphics.g2d.SpriteBatch @@ -8,7 +8,7 @@ import org.luaj.vm2.Globals /** * Created by minjaesong on 2017-05-31. */ -class PeripheralCharLCD(val width: Int, val height: Int) : Peripheral("charLCD") { +class PeripheralCharLCD(val width: Int, val height: Int) : net.torvald.terrarum.modulecomputers.virtualcomputer.peripheral.Peripheral("charLCD") { /*companion object { private val fontSheet = BitmapFont(ModMgr.getPath("dwarventech", "mt-32.tga"), 16, 16) private val font = BitmapFont(fontSheet, 0.toChar()) diff --git a/src/net/torvald/terrarum/virtualcomputer/peripheral/PeripheralInternet.kt b/src/net/torvald/terrarum/modulecomputers/virtualcomputer/peripheral/PeripheralInternet.kt similarity index 73% rename from src/net/torvald/terrarum/virtualcomputer/peripheral/PeripheralInternet.kt rename to src/net/torvald/terrarum/modulecomputers/virtualcomputer/peripheral/PeripheralInternet.kt index 2c0eb6769..1eab7a624 100644 --- a/src/net/torvald/terrarum/virtualcomputer/peripheral/PeripheralInternet.kt +++ b/src/net/torvald/terrarum/modulecomputers/virtualcomputer/peripheral/PeripheralInternet.kt @@ -1,7 +1,7 @@ -package net.torvald.terrarum.virtualcomputer.peripheral +package net.torvald.terrarum.modulecomputers.virtualcomputer.peripheral import org.luaj.vm2.Globals -import net.torvald.terrarum.virtualcomputer.computer.TerrarumComputer +import net.torvald.terrarum.modulecomputers.virtualcomputer.computer.TerrarumComputer import org.luaj.vm2.LuaTable import org.luaj.vm2.LuaValue import org.luaj.vm2.lib.OneArgFunction @@ -14,8 +14,8 @@ import java.net.URL * * Created by minjaesong on 2016-09-24. */ -internal class PeripheralInternet(val host: TerrarumComputer) -: Peripheral("internet"){ +internal class PeripheralInternet(val host: net.torvald.terrarum.modulecomputers.virtualcomputer.computer.TerrarumComputer) +: net.torvald.terrarum.modulecomputers.virtualcomputer.peripheral.Peripheral("internet"){ override val memSize = 1024 diff --git a/src/net/torvald/terrarum/virtualcomputer/peripheral/PeripheralPSG.kt b/src/net/torvald/terrarum/modulecomputers/virtualcomputer/peripheral/PeripheralPSG.kt similarity index 54% rename from src/net/torvald/terrarum/virtualcomputer/peripheral/PeripheralPSG.kt rename to src/net/torvald/terrarum/modulecomputers/virtualcomputer/peripheral/PeripheralPSG.kt index 10250ec7d..74f93e890 100644 --- a/src/net/torvald/terrarum/virtualcomputer/peripheral/PeripheralPSG.kt +++ b/src/net/torvald/terrarum/modulecomputers/virtualcomputer/peripheral/PeripheralPSG.kt @@ -1,6 +1,6 @@ -package net.torvald.terrarum.virtualcomputer.peripheral +package net.torvald.terrarum.modulecomputers.virtualcomputer.peripheral -import net.torvald.terrarum.virtualcomputer.computer.TerrarumComputer +import net.torvald.terrarum.modulecomputers.virtualcomputer.computer.TerrarumComputer import org.luaj.vm2.Globals import org.luaj.vm2.LuaTable import org.luaj.vm2.LuaValue @@ -11,8 +11,8 @@ import org.luaj.vm2.LuaValue * * Created by minjaesong on 2016-09-27. */ -internal class PeripheralPSG(val host: TerrarumComputer) -: Peripheral("psg") { +internal class PeripheralPSG(val host: net.torvald.terrarum.modulecomputers.virtualcomputer.computer.TerrarumComputer) +: net.torvald.terrarum.modulecomputers.virtualcomputer.peripheral.Peripheral("psg") { override val memSize = 1024 diff --git a/src/net/torvald/terrarum/virtualcomputer/peripheral/PeripheralVideoCard.kt b/src/net/torvald/terrarum/modulecomputers/virtualcomputer/peripheral/PeripheralVideoCard.kt similarity index 99% rename from src/net/torvald/terrarum/virtualcomputer/peripheral/PeripheralVideoCard.kt rename to src/net/torvald/terrarum/modulecomputers/virtualcomputer/peripheral/PeripheralVideoCard.kt index 477945dc9..95a3d53dc 100644 --- a/src/net/torvald/terrarum/virtualcomputer/peripheral/PeripheralVideoCard.kt +++ b/src/net/torvald/terrarum/modulecomputers/virtualcomputer/peripheral/PeripheralVideoCard.kt @@ -1,4 +1,4 @@ -package net.torvald.terrarum.virtualcomputer.peripheral +package net.torvald.terrarum.modulecomputers.virtualcomputer.peripheral import org.luaj.vm2.* import org.luaj.vm2.lib.* diff --git a/src/net/torvald/terrarum/virtualcomputer/terminal/GraphicsTerminal.kt b/src/net/torvald/terrarum/modulecomputers/virtualcomputer/terminal/GraphicsTerminal.kt similarity index 96% rename from src/net/torvald/terrarum/virtualcomputer/terminal/GraphicsTerminal.kt rename to src/net/torvald/terrarum/modulecomputers/virtualcomputer/terminal/GraphicsTerminal.kt index 0a2fff5a0..20253aca2 100644 --- a/src/net/torvald/terrarum/virtualcomputer/terminal/GraphicsTerminal.kt +++ b/src/net/torvald/terrarum/modulecomputers/virtualcomputer/terminal/GraphicsTerminal.kt @@ -1,10 +1,4 @@ -package net.torvald.terrarum.virtualcomputer.terminal - -import net.torvald.terrarum.blendMul -import net.torvald.terrarum.gameactors.DecodeTapestry -import net.torvald.terrarum.gameactors.abs -import net.torvald.terrarum.virtualcomputer.computer.TerrarumComputer -import java.util.* +package net.torvald.terrarum.modulecomputers.virtualcomputer.terminal /** * Printing text using Term API triggers 'compatibility' mode, where you are limited to 16 colours. diff --git a/src/net/torvald/terrarum/virtualcomputer/terminal/SimpleTextTerminal.kt b/src/net/torvald/terrarum/modulecomputers/virtualcomputer/terminal/SimpleTextTerminal.kt similarity index 99% rename from src/net/torvald/terrarum/virtualcomputer/terminal/SimpleTextTerminal.kt rename to src/net/torvald/terrarum/modulecomputers/virtualcomputer/terminal/SimpleTextTerminal.kt index 147cac95e..8bacf5da4 100644 --- a/src/net/torvald/terrarum/virtualcomputer/terminal/SimpleTextTerminal.kt +++ b/src/net/torvald/terrarum/modulecomputers/virtualcomputer/terminal/SimpleTextTerminal.kt @@ -1,4 +1,4 @@ -package net.torvald.terrarum.virtualcomputer.terminal +package net.torvald.terrarum.modulecomputers.virtualcomputer.terminal /** diff --git a/src/net/torvald/terrarum/virtualcomputer/terminal/Teletype.kt b/src/net/torvald/terrarum/modulecomputers/virtualcomputer/terminal/Teletype.kt similarity index 92% rename from src/net/torvald/terrarum/virtualcomputer/terminal/Teletype.kt rename to src/net/torvald/terrarum/modulecomputers/virtualcomputer/terminal/Teletype.kt index cc7dd805e..15576abe0 100644 --- a/src/net/torvald/terrarum/virtualcomputer/terminal/Teletype.kt +++ b/src/net/torvald/terrarum/modulecomputers/virtualcomputer/terminal/Teletype.kt @@ -1,4 +1,4 @@ -package net.torvald.terrarum.virtualcomputer.terminal +package net.torvald.terrarum.modulecomputers.virtualcomputer.terminal import com.badlogic.gdx.graphics.g2d.SpriteBatch diff --git a/src/net/torvald/terrarum/virtualcomputer/terminal/TeletypeTerminal.kt b/src/net/torvald/terrarum/modulecomputers/virtualcomputer/terminal/TeletypeTerminal.kt similarity index 98% rename from src/net/torvald/terrarum/virtualcomputer/terminal/TeletypeTerminal.kt rename to src/net/torvald/terrarum/modulecomputers/virtualcomputer/terminal/TeletypeTerminal.kt index b63522bb2..d546c8234 100644 --- a/src/net/torvald/terrarum/virtualcomputer/terminal/TeletypeTerminal.kt +++ b/src/net/torvald/terrarum/modulecomputers/virtualcomputer/terminal/TeletypeTerminal.kt @@ -1,4 +1,4 @@ -package net.torvald.terrarum.virtualcomputer.terminal +package net.torvald.terrarum.modulecomputers.virtualcomputer.terminal import net.torvald.terrarumsansbitmap.slick2d.GameFontBase import net.torvald.terrarum.blendMul diff --git a/src/net/torvald/terrarum/virtualcomputer/terminal/Terminal.kt b/src/net/torvald/terrarum/modulecomputers/virtualcomputer/terminal/Terminal.kt similarity index 90% rename from src/net/torvald/terrarum/virtualcomputer/terminal/Terminal.kt rename to src/net/torvald/terrarum/modulecomputers/virtualcomputer/terminal/Terminal.kt index dc8dd14ee..acc3254b3 100644 --- a/src/net/torvald/terrarum/virtualcomputer/terminal/Terminal.kt +++ b/src/net/torvald/terrarum/modulecomputers/virtualcomputer/terminal/Terminal.kt @@ -1,8 +1,8 @@ -package net.torvald.terrarum.virtualcomputer.terminal +package net.torvald.terrarum.modulecomputers.virtualcomputer.terminal import com.badlogic.gdx.graphics.Color import com.badlogic.gdx.graphics.g2d.SpriteBatch -import net.torvald.terrarum.gameactors.Second +import net.torvald.terrarum.Second /** * A terminal @@ -13,7 +13,7 @@ import net.torvald.terrarum.gameactors.Second * * Created by minjaesong on 2016-09-07. */ -interface Terminal : Teletype { +interface Terminal : net.torvald.terrarum.modulecomputers.virtualcomputer.terminal.Teletype { override val width: Int val height: Int override val coloursCount: Int diff --git a/src/net/torvald/terrarum/virtualcomputer/terminal/TerminalInputStream.kt b/src/net/torvald/terrarum/modulecomputers/virtualcomputer/terminal/TerminalInputStream.kt similarity index 58% rename from src/net/torvald/terrarum/virtualcomputer/terminal/TerminalInputStream.kt rename to src/net/torvald/terrarum/modulecomputers/virtualcomputer/terminal/TerminalInputStream.kt index c3b0882f4..a26ddb87d 100644 --- a/src/net/torvald/terrarum/virtualcomputer/terminal/TerminalInputStream.kt +++ b/src/net/torvald/terrarum/modulecomputers/virtualcomputer/terminal/TerminalInputStream.kt @@ -1,12 +1,12 @@ -package net.torvald.terrarum.virtualcomputer.terminal +package net.torvald.terrarum.modulecomputers.virtualcomputer.terminal -import net.torvald.terrarum.virtualcomputer.computer.TerrarumComputer +import net.torvald.terrarum.modulecomputers.virtualcomputer.computer.TerrarumComputer import java.io.InputStream /** * Created by minjaesong on 2016-09-10. */ -class TerminalInputStream(val host: TerrarumComputer) : InputStream() { +class TerminalInputStream(val host: net.torvald.terrarum.modulecomputers.virtualcomputer.computer.TerrarumComputer) : InputStream() { override fun read(): Int { //System.err.println(Thread.currentThread().name) diff --git a/src/net/torvald/terrarum/modulecomputers/virtualcomputer/terminal/TerminalPrintStream.kt b/src/net/torvald/terrarum/modulecomputers/virtualcomputer/terminal/TerminalPrintStream.kt new file mode 100644 index 000000000..0212f8f9a --- /dev/null +++ b/src/net/torvald/terrarum/modulecomputers/virtualcomputer/terminal/TerminalPrintStream.kt @@ -0,0 +1,14 @@ +package net.torvald.terrarum.modulecomputers.virtualcomputer.terminal + +import net.torvald.terrarum.modulecomputers.virtualcomputer.computer.TerrarumComputer +import java.io.OutputStream +import java.io.PrintStream + +/** + * Created by minjaesong on 2016-09-10. + */ +class TerminalPrintStream(val host: net.torvald.terrarum.modulecomputers.virtualcomputer.computer.TerrarumComputer) : PrintStream(TerminalOutputStream(host)) + +class TerminalOutputStream(val host: net.torvald.terrarum.modulecomputers.virtualcomputer.computer.TerrarumComputer) : OutputStream() { + override fun write(b: Int) = host.term.printChar(b.and(0xFF).toChar()) +} \ No newline at end of file diff --git a/src/net/torvald/terrarum/virtualcomputer/tvd/ByteArray64.kt b/src/net/torvald/terrarum/modulecomputers/virtualcomputer/tvd/ByteArray64.kt similarity index 98% rename from src/net/torvald/terrarum/virtualcomputer/tvd/ByteArray64.kt rename to src/net/torvald/terrarum/modulecomputers/virtualcomputer/tvd/ByteArray64.kt index f1a28adf1..904560660 100644 --- a/src/net/torvald/terrarum/virtualcomputer/tvd/ByteArray64.kt +++ b/src/net/torvald/terrarum/modulecomputers/virtualcomputer/tvd/ByteArray64.kt @@ -1,4 +1,4 @@ -package net.torvald.terrarum.virtualcomputer.tvd +package net.torvald.terrarum.modulecomputers.virtualcomputer.tvd import java.io.BufferedOutputStream import java.io.File diff --git a/src/net/torvald/terrarum/virtualcomputer/tvd/DiskSkimmer.kt b/src/net/torvald/terrarum/modulecomputers/virtualcomputer/tvd/DiskSkimmer.kt similarity index 98% rename from src/net/torvald/terrarum/virtualcomputer/tvd/DiskSkimmer.kt rename to src/net/torvald/terrarum/modulecomputers/virtualcomputer/tvd/DiskSkimmer.kt index 32191ec77..39148bd23 100644 --- a/src/net/torvald/terrarum/virtualcomputer/tvd/DiskSkimmer.kt +++ b/src/net/torvald/terrarum/modulecomputers/virtualcomputer/tvd/DiskSkimmer.kt @@ -1,4 +1,4 @@ -package net.torvald.terrarum.virtualcomputer.tvd +package net.torvald.terrarum.modulecomputers.virtualcomputer.tvd import java.io.File import java.io.FileInputStream diff --git a/src/net/torvald/terrarum/virtualcomputer/tvd/VDUtil.kt b/src/net/torvald/terrarum/modulecomputers/virtualcomputer/tvd/VDUtil.kt similarity index 96% rename from src/net/torvald/terrarum/virtualcomputer/tvd/VDUtil.kt rename to src/net/torvald/terrarum/modulecomputers/virtualcomputer/tvd/VDUtil.kt index 4e1fdfd0d..22fd674bb 100644 --- a/src/net/torvald/terrarum/virtualcomputer/tvd/VDUtil.kt +++ b/src/net/torvald/terrarum/modulecomputers/virtualcomputer/tvd/VDUtil.kt @@ -1,4 +1,4 @@ -package net.torvald.terrarum.virtualcomputer.tvd +package net.torvald.terrarum.modulecomputers.virtualcomputer.tvd import java.io.* import java.nio.charset.Charset @@ -85,12 +85,12 @@ object VDUtil { } } - fun File.writeBytes64(array: ByteArray64) { + fun File.writeBytes64(array: net.torvald.terrarum.modulecomputers.virtualcomputer.tvd.ByteArray64) { array.writeToFile(this) } - fun File.readBytes64(): ByteArray64 { - val inbytes = ByteArray64(this.length()) + fun File.readBytes64(): net.torvald.terrarum.modulecomputers.virtualcomputer.tvd.ByteArray64 { + val inbytes = net.torvald.terrarum.modulecomputers.virtualcomputer.tvd.ByteArray64(this.length()) val inputStream = BufferedInputStream(FileInputStream(this)) var readInt = inputStream.read() var readInCounter = 0L @@ -510,7 +510,7 @@ object VDUtil { // read back deflated bytes untouched and store it val tempFile = File(filename) val tempFileFIS = FileInputStream(tempFile) - val readBytes = ByteArray64(tempFile.length()) + val readBytes = net.torvald.terrarum.modulecomputers.virtualcomputer.tvd.ByteArray64(tempFile.length()) var c = 0L @@ -821,7 +821,7 @@ object VDUtil { if (this.usedBytes + newSize > this.capacity) throw IOException("Not enough space on the disk") } - fun ByteArray64.toIntBig(): Int { + fun net.torvald.terrarum.modulecomputers.virtualcomputer.tvd.ByteArray64.toIntBig(): Int { if (this.size != 4L) throw OperationNotSupportedException("ByteArray is not Int") @@ -830,7 +830,7 @@ object VDUtil { this.forEach { byte -> i += byte.toUint().shl(24 - c * 8); c += 1 } return i } - fun ByteArray64.toInt48Big(): Long { + fun net.torvald.terrarum.modulecomputers.virtualcomputer.tvd.ByteArray64.toInt48Big(): Long { if (this.size != 6L) throw OperationNotSupportedException("ByteArray is not Long") @@ -839,7 +839,7 @@ object VDUtil { this.forEach { byte -> i += byte.toUint().shl(40 - c * 8); c += 1 } return i } - fun ByteArray64.toShortBig(): Short { + fun net.torvald.terrarum.modulecomputers.virtualcomputer.tvd.ByteArray64.toShortBig(): Short { if (this.size != 2L) throw OperationNotSupportedException("ByteArray is not Short") @@ -964,15 +964,15 @@ fun ByteArray.toCanonicalString(charset: Charset): String { return String(this.sliceArray(0..lastIndexOfRealStr), charset) } -fun ArrayList.toByteArray64(): ByteArray64 { - val array = ByteArray64(this.size.toLong()) +fun ArrayList.toByteArray64(): net.torvald.terrarum.modulecomputers.virtualcomputer.tvd.ByteArray64 { + val array = net.torvald.terrarum.modulecomputers.virtualcomputer.tvd.ByteArray64(this.size.toLong()) this.forEachIndexed { index, byte -> array[index.toLong()] = byte } return array } -fun ByteArray.toByteArray64(): ByteArray64 { - val array = ByteArray64(this.size.toLong()) +fun ByteArray.toByteArray64(): net.torvald.terrarum.modulecomputers.virtualcomputer.tvd.ByteArray64 { + val array = net.torvald.terrarum.modulecomputers.virtualcomputer.tvd.ByteArray64(this.size.toLong()) this.forEachIndexed { index, byte -> array[index.toLong()] = byte } diff --git a/src/net/torvald/terrarum/virtualcomputer/tvd/VirtualDisk.kt b/src/net/torvald/terrarum/modulecomputers/virtualcomputer/tvd/VirtualDisk.kt similarity index 87% rename from src/net/torvald/terrarum/virtualcomputer/tvd/VirtualDisk.kt rename to src/net/torvald/terrarum/modulecomputers/virtualcomputer/tvd/VirtualDisk.kt index 0173e50cd..1e5da85c1 100644 --- a/src/net/torvald/terrarum/virtualcomputer/tvd/VirtualDisk.kt +++ b/src/net/torvald/terrarum/modulecomputers/virtualcomputer/tvd/VirtualDisk.kt @@ -1,4 +1,4 @@ -package net.torvald.terrarum.virtualcomputer.tvd +package net.torvald.terrarum.modulecomputers.virtualcomputer.tvd import java.io.IOException import java.nio.charset.Charset @@ -19,9 +19,9 @@ class VirtualDisk( /** capacity of 0 makes the disk read-only */ var capacity: Long, var diskName: ByteArray = ByteArray(NAME_LENGTH), - footer: ByteArray64 = ByteArray64(8) // default to mandatory 8-byte footer + footer: net.torvald.terrarum.modulecomputers.virtualcomputer.tvd.ByteArray64 = net.torvald.terrarum.modulecomputers.virtualcomputer.tvd.ByteArray64(8) // default to mandatory 8-byte footer ) { - var footerBytes: ByteArray64 = footer + var footerBytes: net.torvald.terrarum.modulecomputers.virtualcomputer.tvd.ByteArray64 = footer private set val entries = HashMap() var isReadOnly: Boolean @@ -34,18 +34,18 @@ class VirtualDisk( private fun Boolean.toBit() = if (this) 1.toByte() else 0.toByte() - internal fun __internalSetFooter__(footer: ByteArray64) { + internal fun __internalSetFooter__(footer: net.torvald.terrarum.modulecomputers.virtualcomputer.tvd.ByteArray64) { footerBytes = footer } - private fun serializeEntriesOnly(): ByteArray64 { + private fun serializeEntriesOnly(): net.torvald.terrarum.modulecomputers.virtualcomputer.tvd.ByteArray64 { val bufferList = ArrayList() // FIXME this part would take up excessive memory for large files entries.forEach { val serialised = it.value.serialize() serialised.forEach { bufferList.add(it) } } - val byteArray = ByteArray64(bufferList.size.toLong()) + val byteArray = net.torvald.terrarum.modulecomputers.virtualcomputer.tvd.ByteArray64(bufferList.size.toLong()) bufferList.forEachIndexed { index, byte -> byteArray[index.toLong()] = byte } return byteArray } @@ -187,13 +187,13 @@ interface DiskEntryContent { * Do not retrieve bytes directly from this! Use VDUtil.retrieveFile(DiskEntry) * And besides, the bytes could be compressed. */ -open class EntryFile(internal var bytes: ByteArray64) : DiskEntryContent { +open class EntryFile(internal var bytes: net.torvald.terrarum.modulecomputers.virtualcomputer.tvd.ByteArray64) : DiskEntryContent { override fun getSizePure() = bytes.size override fun getSizeEntry() = getSizePure() + 6 /** Create new blank file */ - constructor(size: Long): this(ByteArray64(size)) + constructor(size: Long): this(net.torvald.terrarum.modulecomputers.virtualcomputer.tvd.ByteArray64(size)) override fun serialize(): AppendableByteBuffer { val buffer = AppendableByteBuffer(getSizeEntry()) @@ -202,7 +202,7 @@ open class EntryFile(internal var bytes: ByteArray64) : DiskEntryContent { return buffer } } -class EntryFileCompressed(internal var uncompressedSize: Long, bytes: ByteArray64) : EntryFile(bytes) { +class EntryFileCompressed(internal var uncompressedSize: Long, bytes: net.torvald.terrarum.modulecomputers.virtualcomputer.tvd.ByteArray64) : EntryFile(bytes) { override fun getSizePure() = bytes.size override fun getSizeEntry() = getSizePure() + 12 @@ -285,10 +285,10 @@ fun AppendableByteBuffer.getCRC32(): Int { return crc.value.toInt() } class AppendableByteBuffer(val size: Long) { - val array = ByteArray64(size) + val array = net.torvald.terrarum.modulecomputers.virtualcomputer.tvd.ByteArray64(size) private var offset = 0L - fun put(byteArray64: ByteArray64): AppendableByteBuffer { + fun put(byteArray64: net.torvald.terrarum.modulecomputers.virtualcomputer.tvd.ByteArray64): AppendableByteBuffer { // it's slow but works // can't do system.arrayCopy directly byteArray64.forEach { put(it) } diff --git a/src/net/torvald/terrarum/virtualcomputer/tvd/tvd_20170723.zip b/src/net/torvald/terrarum/modulecomputers/virtualcomputer/tvd/tvd_20170723.zip similarity index 100% rename from src/net/torvald/terrarum/virtualcomputer/tvd/tvd_20170723.zip rename to src/net/torvald/terrarum/modulecomputers/virtualcomputer/tvd/tvd_20170723.zip diff --git a/src/net/torvald/terrarum/virtualcomputer/worldobject/ComputerPartsCodex.kt b/src/net/torvald/terrarum/modulecomputers/virtualcomputer/worldobject/ComputerPartsCodex.kt similarity index 96% rename from src/net/torvald/terrarum/virtualcomputer/worldobject/ComputerPartsCodex.kt rename to src/net/torvald/terrarum/modulecomputers/virtualcomputer/worldobject/ComputerPartsCodex.kt index fa3cc8985..d02f06d63 100644 --- a/src/net/torvald/terrarum/virtualcomputer/worldobject/ComputerPartsCodex.kt +++ b/src/net/torvald/terrarum/modulecomputers/virtualcomputer/worldobject/ComputerPartsCodex.kt @@ -1,4 +1,4 @@ -package net.torvald.terrarum.virtualcomputer.worldobject +package net.torvald.terrarum.modulecomputers.virtualcomputer.worldobject import java.util.* diff --git a/src/net/torvald/terrarum/virtualcomputer/worldobject/FixtureBasicTerminal.kt b/src/net/torvald/terrarum/modulecomputers/virtualcomputer/worldobject/FixtureBasicTerminal.kt similarity index 58% rename from src/net/torvald/terrarum/virtualcomputer/worldobject/FixtureBasicTerminal.kt rename to src/net/torvald/terrarum/modulecomputers/virtualcomputer/worldobject/FixtureBasicTerminal.kt index 85c179712..21b0b0c19 100644 --- a/src/net/torvald/terrarum/virtualcomputer/worldobject/FixtureBasicTerminal.kt +++ b/src/net/torvald/terrarum/modulecomputers/virtualcomputer/worldobject/FixtureBasicTerminal.kt @@ -1,13 +1,8 @@ -package net.torvald.terrarum.virtualcomputer.worldobject +package net.torvald.terrarum.modulecomputers.virtualcomputer.worldobject import com.badlogic.gdx.graphics.Color -import net.torvald.terrarum.gameactors.AVKey -import net.torvald.terrarum.gameactors.FixtureBase +import net.torvald.terrarum.modulebasegame.gameactors.FixtureBase import net.torvald.terrarum.gameworld.GameWorld -import net.torvald.terrarum.virtualcomputer.computer.TerrarumComputer -import net.torvald.terrarum.virtualcomputer.terminal.Terminal -import net.torvald.terrarum.virtualcomputer.worldobject.ui.UITextTerminal -import java.util.* /** * Created by minjaesong on 2016-09-08. diff --git a/src/net/torvald/terrarum/virtualcomputer/worldobject/FixtureComputerBase.kt b/src/net/torvald/terrarum/modulecomputers/virtualcomputer/worldobject/FixtureComputerBase.kt similarity index 72% rename from src/net/torvald/terrarum/virtualcomputer/worldobject/FixtureComputerBase.kt rename to src/net/torvald/terrarum/modulecomputers/virtualcomputer/worldobject/FixtureComputerBase.kt index 92c7943de..2b2dcb744 100644 --- a/src/net/torvald/terrarum/virtualcomputer/worldobject/FixtureComputerBase.kt +++ b/src/net/torvald/terrarum/modulecomputers/virtualcomputer/worldobject/FixtureComputerBase.kt @@ -1,12 +1,7 @@ -package net.torvald.terrarum.virtualcomputer.worldobject +package net.torvald.terrarum.modulecomputers.virtualcomputer.worldobject -import net.torvald.terrarum.gameactors.FixtureBase +import net.torvald.terrarum.modulebasegame.gameactors.FixtureBase import net.torvald.terrarum.gameworld.GameWorld -import net.torvald.terrarum.virtualcomputer.computer.TerrarumComputer -import net.torvald.terrarum.virtualcomputer.terminal.Terminal -import java.io.PrintStream -import java.security.SecureRandom -import java.util.* /** * Created by minjaesong on 2016-09-08. @@ -16,7 +11,7 @@ open class FixtureComputerBase(world: GameWorld) : FixtureBase(world) { /** Connected terminal */ var terminal: FixtureBasicTerminal? = null - var computerInside: TerrarumComputer? = null + var computerInside: net.torvald.terrarum.modulecomputers.virtualcomputer.computer.TerrarumComputer? = null init { // UUID of the "brain" @@ -32,7 +27,7 @@ open class FixtureComputerBase(world: GameWorld) : FixtureBase(world) { fun attachTerminal(uuid: String) { val fetchedTerminal = getTerminalByUUID(uuid) - computerInside = TerrarumComputer(8) + computerInside = net.torvald.terrarum.modulecomputers.virtualcomputer.computer.TerrarumComputer(8) computerInside!!.attachTerminal(fetchedTerminal!!) actorValue["computerid"] = computerInside!!.UUID } @@ -41,7 +36,7 @@ open class FixtureComputerBase(world: GameWorld) : FixtureBase(world) { terminal = null } - private fun getTerminalByUUID(uuid: String): Terminal? { + private fun getTerminalByUUID(uuid: String): net.torvald.terrarum.modulecomputers.virtualcomputer.terminal.Terminal? { TODO("get terminal by UUID. Return null if not found") } diff --git a/src/net/torvald/terrarum/virtualcomputer/worldobject/ui/UITextTerminal.kt b/src/net/torvald/terrarum/modulecomputers/virtualcomputer/worldobject/ui/UITextTerminal.kt similarity index 79% rename from src/net/torvald/terrarum/virtualcomputer/worldobject/ui/UITextTerminal.kt rename to src/net/torvald/terrarum/modulecomputers/virtualcomputer/worldobject/ui/UITextTerminal.kt index 14c1e5d98..f4a191128 100644 --- a/src/net/torvald/terrarum/virtualcomputer/worldobject/ui/UITextTerminal.kt +++ b/src/net/torvald/terrarum/modulecomputers/virtualcomputer/worldobject/ui/UITextTerminal.kt @@ -1,16 +1,14 @@ -package net.torvald.terrarum.virtualcomputer.worldobject.ui +package net.torvald.terrarum.modulecomputers.virtualcomputer.worldobject.ui import com.badlogic.gdx.graphics.Camera import com.badlogic.gdx.graphics.g2d.SpriteBatch -import net.torvald.terrarum.gameactors.Second +import net.torvald.terrarum.Second import net.torvald.terrarum.ui.* -import net.torvald.terrarum.ui.UICanvas.Companion.OPENCLOSE_GENERIC -import net.torvald.terrarum.virtualcomputer.terminal.Terminal /** * Created by minjaesong on 2016-09-08. */ -class UITextTerminal(val terminal: Terminal) : UICanvas() { +class UITextTerminal(val terminal: net.torvald.terrarum.modulecomputers.virtualcomputer.terminal.Terminal) : UICanvas() { override var width: Int = terminal.displayW// + some diff --git a/src/net/torvald/terrarum/serialise/WriteLayerData.kt b/src/net/torvald/terrarum/serialise/WriteLayerData.kt index 7fc6d07cf..a1846a50c 100644 --- a/src/net/torvald/terrarum/serialise/WriteLayerData.kt +++ b/src/net/torvald/terrarum/serialise/WriteLayerData.kt @@ -3,6 +3,7 @@ package net.torvald.terrarum.serialise import net.torvald.terrarum.gameworld.GameWorld import net.torvald.terrarum.Terrarum import net.torvald.terrarum.console.EchoError +import net.torvald.terrarum.modulebasegame.Ingame import java.io.File import java.io.FileOutputStream import java.io.IOException @@ -25,7 +26,7 @@ internal object WriteLayerData { internal operator fun invoke(saveDirectoryName: String): Boolean { val path = "${Terrarum.defaultSaveDir}/$saveDirectoryName/${META_FILENAME}" val tempPath = "${path}_bak" - val map = Terrarum.ingame!!.world + val map = (Terrarum.ingame!! as Ingame).world val parentDir = File("${Terrarum.defaultSaveDir}/$saveDirectoryName") if (!parentDir.exists()) { diff --git a/src/net/torvald/terrarum/serialise/WriteMeta.kt b/src/net/torvald/terrarum/serialise/WriteMeta.kt index 38744632d..ccd1b53f3 100644 --- a/src/net/torvald/terrarum/serialise/WriteMeta.kt +++ b/src/net/torvald/terrarum/serialise/WriteMeta.kt @@ -1,7 +1,7 @@ package net.torvald.terrarum.serialise -import net.torvald.terrarum.worldgenerator.WorldGenerator -import net.torvald.terrarum.worldgenerator.RoguelikeRandomiser +import net.torvald.terrarum.modulebasegame.worldgenerator.WorldGenerator +import net.torvald.terrarum.modulebasegame.worldgenerator.RoguelikeRandomiser import java.nio.charset.Charset /** diff --git a/src/net/torvald/terrarum/ui/BasicDebugInfoWindow.kt b/src/net/torvald/terrarum/ui/BasicDebugInfoWindow.kt index 34c3e3f4d..45bd24bca 100644 --- a/src/net/torvald/terrarum/ui/BasicDebugInfoWindow.kt +++ b/src/net/torvald/terrarum/ui/BasicDebugInfoWindow.kt @@ -9,6 +9,7 @@ import net.torvald.terrarum.worlddrawer.LightmapRenderer import net.torvald.terrarum.worlddrawer.FeaturesDrawer import net.torvald.terrarum.Terrarum.mouseTileX import net.torvald.terrarum.Terrarum.mouseTileY +import net.torvald.terrarum.modulebasegame.Ingame /** * Created by minjaesong on 2016-03-14. @@ -26,10 +27,10 @@ class BasicDebugInfoWindow : UICanvas() { private var xdelta = 0.0 private var ydelta = 0.0 - + private val ingame = Terrarum.ingame!! as Ingame override fun updateUI(delta: Float) { - val player = Terrarum.ingame!!.player + val player = ingame.player val hitbox = player.hitbox xdelta = hitbox.canonicalX - prevPlayerX @@ -44,7 +45,7 @@ class BasicDebugInfoWindow : UICanvas() { fun Int.rawG() = this % LightmapRenderer.MUL_2 / LightmapRenderer.MUL fun Int.rawB() = this % LightmapRenderer.MUL - val player = Terrarum.ingame!!.player + val player = ingame.player batch.color = Color(0xFFEE88FF.toInt()) @@ -114,7 +115,7 @@ class BasicDebugInfoWindow : UICanvas() { else "$rawR $rawG $rawB $rawA" printLine(batch, 8, "light@cursor $ccG$lightVal") - val tileNum = Terrarum.ingame!!.world.getTileFromTerrain(mouseTileX, mouseTileY) ?: -1 + val tileNum = ingame.world.getTileFromTerrain(mouseTileX, mouseTileY) ?: -1 printLine(batch, 9, "tile@cursor $ccG$tileNum ($mtX, $mtY)") @@ -125,8 +126,8 @@ class BasicDebugInfoWindow : UICanvas() { //printLineColumn(batch, 2, 1, "VSync $ccG" + Terrarum.appgc.isVSyncRequested) //printLineColumn(batch, 2, 2, "Env colour temp $ccG" + FeaturesDrawer.colTemp) - printLineColumn(batch, 2, 5, "Time $ccG${Terrarum.ingame!!.world.time.todaySeconds.toString().padStart(5, '0')}" + - " (${Terrarum.ingame!!.world.time.getFormattedTime()})") + printLineColumn(batch, 2, 5, "Time $ccG${ingame.world.time.todaySeconds.toString().padStart(5, '0')}" + + " (${ingame.world.time.getFormattedTime()})") printLineColumn(batch, 2, 6, "Mass $ccG${player.mass}") printLineColumn(batch, 2, 7, "noClip $ccG${player.noClip}") @@ -171,13 +172,13 @@ class BasicDebugInfoWindow : UICanvas() { * Bottom left */ - Terrarum.fontSmallNumbers.draw(batch, "${ccY}Actors total $ccG${Terrarum.ingame!!.actorContainer.size + Terrarum.ingame!!.actorContainerInactive.size}", + Terrarum.fontSmallNumbers.draw(batch, "${ccY}Actors total $ccG${ingame.actorContainer.size + ingame.actorContainerInactive.size}", 2f, Terrarum.HEIGHT - 10f) - Terrarum.fontSmallNumbers.draw(batch, "${ccY}Active $ccG${Terrarum.ingame!!.actorContainer.size}", + Terrarum.fontSmallNumbers.draw(batch, "${ccY}Active $ccG${ingame.actorContainer.size}", (2 + 17*8).toFloat(), Terrarum.HEIGHT - 10f) - Terrarum.fontSmallNumbers.draw(batch, "${ccY}Dormant $ccG${Terrarum.ingame!!.actorContainerInactive.size}", + Terrarum.fontSmallNumbers.draw(batch, "${ccY}Dormant $ccG${ingame.actorContainerInactive.size}", (2 + 28*8).toFloat(), Terrarum.HEIGHT - 10f) - Terrarum.fontSmallNumbers.draw(batch, "${ccM}Particles $ccG${Terrarum.ingame!!.particlesActive}", + Terrarum.fontSmallNumbers.draw(batch, "${ccM}Particles $ccG${ingame.particlesActive}", (2 + 41*8).toFloat(), Terrarum.HEIGHT - 10f) } diff --git a/src/net/torvald/terrarum/ui/ConsoleWindow.kt b/src/net/torvald/terrarum/ui/ConsoleWindow.kt index 5652ef4b4..d3606e25a 100644 --- a/src/net/torvald/terrarum/ui/ConsoleWindow.kt +++ b/src/net/torvald/terrarum/ui/ConsoleWindow.kt @@ -7,7 +7,7 @@ import com.badlogic.gdx.graphics.g2d.SpriteBatch import net.torvald.dataclass.HistoryArray import net.torvald.terrarum.langpack.Lang import net.torvald.terrarum.Terrarum -import net.torvald.terrarum.TerrarumAppLoader +import net.torvald.terrarum.AppLoader import net.torvald.terrarum.console.Authenticator import net.torvald.terrarum.console.CommandInterpreter import net.torvald.terrarum.fillRect @@ -181,7 +181,7 @@ class ConsoleWindow : UICanvas() { commandInputPool = StringBuilder() if (Authenticator.b()) { - sendMessage("${Terrarum.NAME} ${TerrarumAppLoader.getVERSION_STRING()}") + sendMessage("${Terrarum.NAME} ${AppLoader.getVERSION_STRING()}") sendMessage(Lang["DEV_MESSAGE_CONSOLE_CODEX"]) } } diff --git a/src/net/torvald/terrarum/ui/UICanvas.kt b/src/net/torvald/terrarum/ui/UICanvas.kt index 776026cde..b76d8b7f5 100644 --- a/src/net/torvald/terrarum/ui/UICanvas.kt +++ b/src/net/torvald/terrarum/ui/UICanvas.kt @@ -2,11 +2,10 @@ package net.torvald.terrarum.ui import com.badlogic.gdx.Gdx import com.badlogic.gdx.graphics.Camera -import com.badlogic.gdx.graphics.OrthographicCamera import com.badlogic.gdx.graphics.g2d.SpriteBatch import net.torvald.terrarum.Terrarum -import net.torvald.terrarum.gameactors.Second -import net.torvald.terrarum.gameactors.roundInt +import net.torvald.terrarum.Second +import net.torvald.terrarum.roundInt /** diff --git a/src/net/torvald/terrarum/ui/UIHandler.kt b/src/net/torvald/terrarum/ui/UIHandler.kt index 93307c1f8..5cd84fb0e 100644 --- a/src/net/torvald/terrarum/ui/UIHandler.kt +++ b/src/net/torvald/terrarum/ui/UIHandler.kt @@ -3,10 +3,8 @@ package net.torvald.terrarum.ui import com.badlogic.gdx.graphics.Camera import com.badlogic.gdx.graphics.Color import com.badlogic.gdx.graphics.g2d.SpriteBatch -import net.torvald.terrarum.Ingame -import net.torvald.terrarum.Terrarum +import net.torvald.terrarum.modulebasegame.Ingame import net.torvald.terrarum.gamecontroller.KeyToggler -import net.torvald.terrarum.round /** * UIHandler is a handler for UICanvas. It opens/closes the attached UI, moves the "window" (or "canvas") diff --git a/src/net/torvald/terrarum/ui/UIItemImageGallery.kt b/src/net/torvald/terrarum/ui/UIItemImageGallery.kt index d9b3ebc8b..a0f486cae 100644 --- a/src/net/torvald/terrarum/ui/UIItemImageGallery.kt +++ b/src/net/torvald/terrarum/ui/UIItemImageGallery.kt @@ -3,7 +3,7 @@ package net.torvald.terrarum.ui import com.badlogic.gdx.graphics.Camera import com.badlogic.gdx.graphics.Texture import com.badlogic.gdx.graphics.g2d.SpriteBatch -import net.torvald.terrarum.gameactors.roundInt +import net.torvald.terrarum.roundInt import java.util.* /** diff --git a/src/net/torvald/terrarum/ui/UIItemList.kt b/src/net/torvald/terrarum/ui/UIItemList.kt index d4ec6e72b..2a7246e97 100644 --- a/src/net/torvald/terrarum/ui/UIItemList.kt +++ b/src/net/torvald/terrarum/ui/UIItemList.kt @@ -5,7 +5,7 @@ import com.badlogic.gdx.graphics.Color import com.badlogic.gdx.graphics.g2d.SpriteBatch import net.torvald.terrarum.BlendMode import net.torvald.terrarum.fillRect -import net.torvald.terrarum.gameactors.Second +import net.torvald.terrarum.Second /** diff --git a/src/net/torvald/terrarum/ui/UIItemTextArea.kt b/src/net/torvald/terrarum/ui/UIItemTextArea.kt index 53481dd99..493f40c4a 100644 --- a/src/net/torvald/terrarum/ui/UIItemTextArea.kt +++ b/src/net/torvald/terrarum/ui/UIItemTextArea.kt @@ -1,10 +1,9 @@ package net.torvald.terrarum.ui import com.badlogic.gdx.graphics.Camera -import com.badlogic.gdx.graphics.Color import com.badlogic.gdx.graphics.g2d.SpriteBatch import net.torvald.terrarum.Terrarum -import net.torvald.terrarum.gameactors.floor +import net.torvald.terrarum.floor class UIItemTextArea( parentUI: UICanvas, diff --git a/src/net/torvald/terrarum/ui/UIItemTextButtonList.kt b/src/net/torvald/terrarum/ui/UIItemTextButtonList.kt index b7789b842..7f51602eb 100644 --- a/src/net/torvald/terrarum/ui/UIItemTextButtonList.kt +++ b/src/net/torvald/terrarum/ui/UIItemTextButtonList.kt @@ -3,13 +3,11 @@ package net.torvald.terrarum.ui import com.badlogic.gdx.graphics.Camera import com.badlogic.gdx.graphics.Color import com.badlogic.gdx.graphics.g2d.SpriteBatch -import com.badlogic.gdx.graphics.glutils.ShapeRenderer import net.torvald.terrarum.BlendMode import net.torvald.terrarum.fillRect -import net.torvald.terrarum.gameactors.Second +import net.torvald.terrarum.Second import net.torvald.terrarum.gameactors.ai.toInt -import net.torvald.terrarum.gameactors.roundInt -import net.torvald.terrarum.inUse +import net.torvald.terrarum.roundInt import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack /** diff --git a/src/net/torvald/terrarum/ui/UIUtils.kt b/src/net/torvald/terrarum/ui/UIUtils.kt index 7490fe311..75e6a505d 100644 --- a/src/net/torvald/terrarum/ui/UIUtils.kt +++ b/src/net/torvald/terrarum/ui/UIUtils.kt @@ -1,6 +1,6 @@ package net.torvald.terrarum.ui -import net.torvald.terrarum.gameactors.sqr +import net.torvald.terrarum.sqr /** * Created by minjaesong on 2017-03-14. diff --git a/src/net/torvald/terrarum/virtualcomputer/luaapi/Input.kt b/src/net/torvald/terrarum/virtualcomputer/luaapi/Input.kt deleted file mode 100644 index 9dee6d8ee..000000000 --- a/src/net/torvald/terrarum/virtualcomputer/luaapi/Input.kt +++ /dev/null @@ -1,16 +0,0 @@ -package net.torvald.terrarum.virtualcomputer.luaapi - -import com.badlogic.gdx.Gdx -import org.luaj.vm2.Globals -import org.luaj.vm2.LuaTable -import org.luaj.vm2.LuaValue -import org.luaj.vm2.lib.OneArgFunction -import net.torvald.terrarum.virtualcomputer.computer.TerrarumComputer - -/** - * Created by minjaesong on 2016-09-25. - */ -class Input(globals: Globals, computer: TerrarumComputer) { - - -} \ No newline at end of file diff --git a/src/net/torvald/terrarum/virtualcomputer/terminal/TerminalPrintStream.kt b/src/net/torvald/terrarum/virtualcomputer/terminal/TerminalPrintStream.kt deleted file mode 100644 index 88f16f5ba..000000000 --- a/src/net/torvald/terrarum/virtualcomputer/terminal/TerminalPrintStream.kt +++ /dev/null @@ -1,14 +0,0 @@ -package net.torvald.terrarum.virtualcomputer.terminal - -import net.torvald.terrarum.virtualcomputer.computer.TerrarumComputer -import java.io.OutputStream -import java.io.PrintStream - -/** - * Created by minjaesong on 2016-09-10. - */ -class TerminalPrintStream(val host: TerrarumComputer) : PrintStream(TerminalOutputStream(host)) - -class TerminalOutputStream(val host: TerrarumComputer) : OutputStream() { - override fun write(b: Int) = host.term.printChar(b.and(0xFF).toChar()) -} \ No newline at end of file diff --git a/src/net/torvald/terrarum/weather/WeatherMixer.kt b/src/net/torvald/terrarum/weather/WeatherMixer.kt index f3cd73876..92386611b 100644 --- a/src/net/torvald/terrarum/weather/WeatherMixer.kt +++ b/src/net/torvald/terrarum/weather/WeatherMixer.kt @@ -3,21 +3,19 @@ package net.torvald.terrarum.weather import com.badlogic.gdx.Gdx import com.badlogic.gdx.Input import com.badlogic.gdx.graphics.* -import javafx.scene.effect.Light import net.torvald.terrarum.utils.JsonFetcher import net.torvald.colourutil.* import net.torvald.random.HQRNG import net.torvald.terrarum.* import net.torvald.terrarum.gameactors.ActorWithBody -import net.torvald.terrarum.gameactors.ParticleMegaRain -import net.torvald.terrarum.gameactors.ParticleTestRain +import net.torvald.terrarum.modulebasegame.gameactors.ParticleMegaRain import net.torvald.terrarum.gamecontroller.KeyToggler import net.torvald.terrarum.gameworld.GameWorld -import net.torvald.terrarum.gameworld.WorldTime +import net.torvald.terrarum.modulebasegame.Ingame +import net.torvald.terrarum.modulebasegame.gameworld.WorldTime import net.torvald.terrarum.worlddrawer.FeaturesDrawer -import net.torvald.terrarum.worlddrawer.LightmapRenderer import net.torvald.terrarum.worlddrawer.WorldCamera -import net.torvald.terrarum.worldgenerator.WorldGenerator +import net.torvald.terrarum.modulebasegame.worldgenerator.WorldGenerator import java.io.File import java.util.* @@ -89,9 +87,9 @@ object WeatherMixer { playerPosX + HQRNG().nextInt(Terrarum.WIDTH) - Terrarum.HALFW, playerPosY - Terrarum.HEIGHT ) - Terrarum.ingame!!.addParticle(rainParticle) + (Terrarum.ingame!! as Ingame).addParticle(rainParticle) } - //globalLightNow.set(getGlobalLightOfTime(Terrarum.ingame!!.world.time.todaySeconds).mul(0.3f, 0.3f, 0.3f, 0.58f)) + //globalLightNow.set(getGlobalLightOfTime((Terrarum.ingame!! as Ingame).world.time.todaySeconds).mul(0.3f, 0.3f, 0.3f, 0.58f)) } } diff --git a/src/net/torvald/terrarum/worlddrawer/BlocksDrawerNew.kt b/src/net/torvald/terrarum/worlddrawer/BlocksDrawerNew.kt index e9c258727..8748b975c 100644 --- a/src/net/torvald/terrarum/worlddrawer/BlocksDrawerNew.kt +++ b/src/net/torvald/terrarum/worlddrawer/BlocksDrawerNew.kt @@ -10,7 +10,7 @@ import net.torvald.terrarum.gameworld.PairedMapLayer import net.torvald.terrarum.blockproperties.Block import net.torvald.terrarum.blockproperties.BlockCodex import net.torvald.terrarum.* -import net.torvald.terrarum.gameactors.ceilInt +import net.torvald.terrarum.ceilInt import net.torvald.terrarum.gameworld.fmod import net.torvald.terrarum.itemproperties.ItemCodex.ITEM_TILES import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack diff --git a/src/net/torvald/terrarum/worlddrawer/BlocksDrawer_old.kt b/src/net/torvald/terrarum/worlddrawer/BlocksDrawer_old.kt index 921309db6..372db439d 100644 --- a/src/net/torvald/terrarum/worlddrawer/BlocksDrawer_old.kt +++ b/src/net/torvald/terrarum/worlddrawer/BlocksDrawer_old.kt @@ -10,7 +10,7 @@ import net.torvald.terrarum.gameworld.PairedMapLayer import net.torvald.terrarum.blockproperties.Block import net.torvald.terrarum.blockproperties.BlockCodex import net.torvald.terrarum.* -import net.torvald.terrarum.gameactors.roundInt +import net.torvald.terrarum.roundInt import net.torvald.terrarum.itemproperties.ItemCodex.ITEM_TILES import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack import java.io.BufferedOutputStream diff --git a/src/net/torvald/terrarum/worlddrawer/LightmapRenderer.kt b/src/net/torvald/terrarum/worlddrawer/LightmapRenderer.kt index 7fc6f99b8..f5cd785ab 100644 --- a/src/net/torvald/terrarum/worlddrawer/LightmapRenderer.kt +++ b/src/net/torvald/terrarum/worlddrawer/LightmapRenderer.kt @@ -4,13 +4,14 @@ import com.badlogic.gdx.graphics.Color import com.badlogic.gdx.graphics.g2d.SpriteBatch import net.torvald.terrarum.blockproperties.BlockCodex import com.jme3.math.FastMath -import net.torvald.dataclass.Float16 -import net.torvald.terrarum.Ingame +import net.torvald.terrarum.modulebasegame.Ingame import net.torvald.terrarum.Terrarum import net.torvald.terrarum.gameworld.GameWorld import net.torvald.terrarum.blockproperties.Block import net.torvald.terrarum.fillRect import net.torvald.terrarum.gameactors.* +import net.torvald.terrarum.modulebasegame.gameactors.ActorWithPhysics +import net.torvald.terrarum.floorInt import java.util.* /** diff --git a/src/net/torvald/terrarum/worlddrawer/LightmapRendererNew.kt b/src/net/torvald/terrarum/worlddrawer/LightmapRendererNew.kt index e3384c2b9..17c59749c 100644 --- a/src/net/torvald/terrarum/worlddrawer/LightmapRendererNew.kt +++ b/src/net/torvald/terrarum/worlddrawer/LightmapRendererNew.kt @@ -8,12 +8,14 @@ import com.badlogic.gdx.graphics.Texture import com.badlogic.gdx.graphics.g2d.SpriteBatch import net.torvald.terrarum.blockproperties.BlockCodex import com.jme3.math.FastMath -import net.torvald.terrarum.Ingame +import net.torvald.terrarum.modulebasegame.Ingame import net.torvald.terrarum.Terrarum -import net.torvald.terrarum.TerrarumAppLoader import net.torvald.terrarum.gameworld.GameWorld import net.torvald.terrarum.blockproperties.Block import net.torvald.terrarum.gameactors.* +import net.torvald.terrarum.modulebasegame.gameactors.ActorWithPhysics +import net.torvald.terrarum.ceilInt +import net.torvald.terrarum.floorInt import java.util.* /** diff --git a/src/net/torvald/terrarum/worlddrawer/WorldCamera.kt b/src/net/torvald/terrarum/worlddrawer/WorldCamera.kt index a17ecda3a..447bc3b4c 100644 --- a/src/net/torvald/terrarum/worlddrawer/WorldCamera.kt +++ b/src/net/torvald/terrarum/worlddrawer/WorldCamera.kt @@ -2,8 +2,9 @@ package net.torvald.terrarum.worlddrawer import com.jme3.math.FastMath import net.torvald.terrarum.Terrarum -import net.torvald.terrarum.gameactors.* import net.torvald.terrarum.gameworld.GameWorld +import net.torvald.terrarum.modulebasegame.gameactors.ActorWithPhysics +import net.torvald.terrarum.floorInt /** * Created by minjaesong on 2016-12-30. diff --git a/work_files/GameDesign/MISC_FEATURES.md b/work_files/GameDesign/MISC_FEATURES.md index 1e49c8b68..dd74707dc 100644 --- a/work_files/GameDesign/MISC_FEATURES.md +++ b/work_files/GameDesign/MISC_FEATURES.md @@ -4,7 +4,7 @@ - Players can create their own décors (hang on wall), dresses. - Two looms (16 palette mode, 64 palette mode) -- __IMPLEMENTED__ — see net.torvald.terrarum.gameactors.DecodeTapestry +- __IMPLEMENTED__ — see net.torvald.terrarum.modulebasegame.gameactors.DecodeTapestry ### Music making ### diff --git a/work_files/graphics/gui/setting_audio_channels.psd b/work_files/graphics/gui/setting_audio_channels.psd index c1fc2e387..10aa6b16d 100644 --- a/work_files/graphics/gui/setting_audio_channels.psd +++ b/work_files/graphics/gui/setting_audio_channels.psd @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:329d283add664debc4b27f64b0a6900ee8f2fafc01c822f656254b93b9862657 -size 98576 +oid sha256:6c6898314c1a7bd5aed9bde1088aa388f2f80980be291b166227763a3ab5b374 +size 183355 diff --git a/work_files/graphics/gui/watches/poketch_prg01_graphics.bin b/work_files/graphics/gui/watches/poketch_prg01_graphics.bin index dcda455d9..433fe6d29 100644 Binary files a/work_files/graphics/gui/watches/poketch_prg01_graphics.bin and b/work_files/graphics/gui/watches/poketch_prg01_graphics.bin differ diff --git a/work_files/graphics/gui/watches/poketch_prg01_graphics.bin.bak b/work_files/graphics/gui/watches/poketch_prg01_graphics.bin.bak new file mode 100644 index 000000000..dcda455d9 Binary files /dev/null and b/work_files/graphics/gui/watches/poketch_prg01_graphics.bin.bak differ diff --git a/work_files/graphics/gui/watches/poketch_prg01_graphics_alphonly.bin b/work_files/graphics/gui/watches/poketch_prg01_graphics_alphonly.bin new file mode 100644 index 000000000..c1f12b7af Binary files /dev/null and b/work_files/graphics/gui/watches/poketch_prg01_graphics_alphonly.bin differ diff --git a/work_files/graphics/gui/watches/poketch_prg01_graphics_no_moon.bin b/work_files/graphics/gui/watches/poketch_prg01_graphics_no_moon.bin new file mode 100644 index 000000000..2f17e7c5c Binary files /dev/null and b/work_files/graphics/gui/watches/poketch_prg01_graphics_no_moon.bin differ diff --git a/work_files/graphics/gui/watches/poketch_prg01_graphics_no_moon.bin.bak b/work_files/graphics/gui/watches/poketch_prg01_graphics_no_moon.bin.bak new file mode 100644 index 000000000..d02b6370e Binary files /dev/null and b/work_files/graphics/gui/watches/poketch_prg01_graphics_no_moon.bin.bak differ diff --git a/work_files/graphics/gui/watches/poketch_prg01_graphics_numonly.bin b/work_files/graphics/gui/watches/poketch_prg01_graphics_numonly.bin new file mode 100644 index 000000000..2fd63638d Binary files /dev/null and b/work_files/graphics/gui/watches/poketch_prg01_graphics_numonly.bin differ diff --git a/work_files/graphics/gui/watches/poketch_program_01.psd b/work_files/graphics/gui/watches/poketch_program_01.psd index cf1618e08..86dd71924 100644 --- a/work_files/graphics/gui/watches/poketch_program_01.psd +++ b/work_files/graphics/gui/watches/poketch_program_01.psd @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:33c5a1a2f34c0e7dafa9ab54ae345f172aba5d4bc87c97c112a93724c70ba57c -size 42381 +oid sha256:343c49488a40623e12e550a2912b463e4ea80796c1df7d004f0e0464aa4e199e +size 51720 diff --git a/work_files/spatialAudioMixMat.xlsx b/work_files/spatialAudioMixMat.xlsx new file mode 100644 index 000000000..2658ccf92 Binary files /dev/null and b/work_files/spatialAudioMixMat.xlsx differ