diff --git a/assets/mods/basegame/materials/materials.csv b/assets/mods/basegame/materials/materials.csv new file mode 100644 index 000000000..e69de29bb diff --git a/src/net/torvald/terrarum/gameactors/AVKey.kt b/src/net/torvald/terrarum/gameactors/AVKey.kt index b76cbfe2a..94efc26c2 100644 --- a/src/net/torvald/terrarum/gameactors/AVKey.kt +++ b/src/net/torvald/terrarum/gameactors/AVKey.kt @@ -111,5 +111,5 @@ object AVKey { const val __HISTORICAL_BORNTIME = "__borntime" // time_t - const val __HISTORICAL_DEADTIME = "__deadtime" // time_t + const val __HISTORICAL_DEADTIME = "__deadtime" // time_t, -1 if not dead } \ No newline at end of file diff --git a/src/net/torvald/terrarum/modulebasegame/Ingame.kt b/src/net/torvald/terrarum/modulebasegame/Ingame.kt index a0fa34751..27f668d11 100644 --- a/src/net/torvald/terrarum/modulebasegame/Ingame.kt +++ b/src/net/torvald/terrarum/modulebasegame/Ingame.kt @@ -174,7 +174,11 @@ open class Ingame(batch: SpriteBatch) : IngameInstance(batch) { data class GameSaveData( val world: GameWorldExtension, val historicalFigureIDBucket: ArrayList, - val realGamePlayer: IngamePlayer + val realGamePlayer: IngamePlayer, + val rogueseed: Long, + val rogueiter: Int, + val weatherseed: Long, + val weatheriter: Int ) data class NewWorldParameters( @@ -203,6 +207,10 @@ open class Ingame(batch: SpriteBatch) : IngameInstance(batch) { addNewActor(playableActor) + // set the randomisers right + RoguelikeRandomiser.loadFromSave(gameSaveData.rogueseed, gameSaveData.rogueiter) + WeatherMixer.loadFromSave(gameSaveData.weatherseed, gameSaveData.weatheriter) + //initGame() } diff --git a/src/net/torvald/terrarum/modulebasegame/RNGConsumer.kt b/src/net/torvald/terrarum/modulebasegame/RNGConsumer.kt new file mode 100644 index 000000000..18bd9b745 --- /dev/null +++ b/src/net/torvald/terrarum/modulebasegame/RNGConsumer.kt @@ -0,0 +1,29 @@ +package net.torvald.terrarum.modulebasegame + +import java.util.* + +internal interface RNGConsumer { + + val RNG: Random + var seed: Long + var iterations: Int + + fun loadFromSave(seed: Long, iterations: Int) { + this.seed = seed + this.iterations = iterations + + repeat(iterations, { RNG.nextInt() }) + } + + private fun incIterations() { + iterations++ + + if (iterations < 0) iterations = 0 + } + + fun getRandomLong(): Long { + iterations++ + return RNG.nextLong() + } + +} diff --git a/src/net/torvald/terrarum/modulebasegame/console/ExportLayerData.kt b/src/net/torvald/terrarum/modulebasegame/console/ExportLayerData.kt index 279fcc91f..9949c91d3 100644 --- a/src/net/torvald/terrarum/modulebasegame/console/ExportLayerData.kt +++ b/src/net/torvald/terrarum/modulebasegame/console/ExportLayerData.kt @@ -18,7 +18,7 @@ object ExportLayerData : ConsoleCommand { WriteLayerData(saveDirectoryName) - Echo("Layer data exported to $saveDirectoryName/${WriteLayerData.META_FILENAME}") + Echo("Layer data exported to $saveDirectoryName/${WriteLayerData.LAYERS_FILENAME}") } override fun printUsage() { diff --git a/src/net/torvald/terrarum/modulebasegame/gameactors/HistoricalFigure.kt b/src/net/torvald/terrarum/modulebasegame/gameactors/HistoricalFigure.kt index a2b55c309..509ce431a 100644 --- a/src/net/torvald/terrarum/modulebasegame/gameactors/HistoricalFigure.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameactors/HistoricalFigure.kt @@ -7,6 +7,11 @@ package net.torvald.terrarum.modulebasegame.gameactors * * NOTE: all canonical NPCs are must be HistoricalFigure!! (double excl mark, bitch) * + * This interface is just a marker. Actual historical information must be contained as the Actor Value with: + * + * "__borntime" // time_t + * "__deadtime" // time_t + * * Created by minjaesong on 2016-10-10. */ interface HistoricalFigure { diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UIRemoCon.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIRemoCon.kt index 0c8b2d5c6..dcbe8ab6b 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UIRemoCon.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIRemoCon.kt @@ -23,7 +23,9 @@ open class UIRemoCon(treeRepresentation: QNDTreeNode) : UICanvas() { private var remoConTray: UIRemoConElement // this remocon is dynamically generated private var currentRemoConContents = treeRepresentation - override var width = remoConWidth + override var width: Int + get() = remoConWidth // somehow NOT making this constant causes a weird issue + set(value) {} // where the remocon widens to screen width override var height: Int get() = remoConTray.height set(value) {} diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UITitleRemoConLanguage.kt b/src/net/torvald/terrarum/modulebasegame/ui/UITitleLanguage.kt similarity index 95% rename from src/net/torvald/terrarum/modulebasegame/ui/UITitleRemoConLanguage.kt rename to src/net/torvald/terrarum/modulebasegame/ui/UITitleLanguage.kt index 66eac1d96..87f71ea84 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UITitleRemoConLanguage.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UITitleLanguage.kt @@ -10,7 +10,7 @@ import net.torvald.terrarum.langpack.Lang import net.torvald.terrarum.ui.UICanvas import net.torvald.terrarum.ui.UIItemTextButtonList -class UITitleRemoConLanguage(val superMenu: UICanvas) : UICanvas() { +class UITitleLanguage : UICanvas() { val menuLabels = arrayOf( "MENU_LABEL_RETURN" @@ -59,6 +59,7 @@ class UITitleRemoConLanguage(val superMenu: UICanvas) : UICanvas() { override fun updateUI(delta: Float) { textArea.update(delta) + println("should be printing indefinitely") } override fun renderUI(batch: SpriteBatch, camera: Camera) { diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UITitleRemoConRoot.kt b/src/net/torvald/terrarum/modulebasegame/ui/UITitleRemoConRoot.kt index 77b572f60..c3d77c956 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UITitleRemoConRoot.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UITitleRemoConRoot.kt @@ -62,7 +62,7 @@ import net.torvald.terrarum.ui.UIItemTextButtonList private val remoConCredits = UITitleRemoConCredits(this) - private val remoConLanguage = UITitleRemoConLanguage(this) + private val remoConLanguage = UITitleLanguage(this) private val remoConModules = UITitleModules(this) init { diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UITitleRemoConYaml.kt b/src/net/torvald/terrarum/modulebasegame/ui/UITitleRemoConYaml.kt index d5d763286..6936b4027 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UITitleRemoConYaml.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UITitleRemoConYaml.kt @@ -6,10 +6,12 @@ import java.util.* object UITitleRemoConYaml { - // YAML indent with a space, separate label and class with " : " verbatim! + // YAML indent with a space, separate label and class with " : " (\x20\x3A\x20) val menus = """ - - MENU_MODE_SINGLEPLAYER + - MENU_MODE_SINGLEPLAYER : net.torvald.terrarum.modulebasegame.ui.UITitleCharactersList + - CONTEXT_CHARACTER_NEW + - CONTEXT_CHARACTER_DELETE - MENU_LABEL_RETURN - MENU_MODE_MULTIPLAYER - MENU_LABEL_RETURN @@ -20,7 +22,7 @@ object UITitleRemoConYaml { - MENU_LABEL_RETURN - MENU_MODULES : net.torvald.terrarum.modulebasegame.ui.UITitleModules - MENU_LABEL_RETURN - - MENU_LABEL_LANGUAGE + - MENU_LABEL_LANGUAGE : net.torvald.terrarum.modulebasegame.ui.UITitleLanguage - MENU_LABEL_RETURN - MENU_LABEL_CREDITS : net.torvald.terrarum.modulebasegame.ui.UITitleCredits - MENU_LABEL_CREDITS : net.torvald.terrarum.modulebasegame.ui.UITitleCredits diff --git a/src/net/torvald/terrarum/modulebasegame/weather/WeatherMixer.kt b/src/net/torvald/terrarum/modulebasegame/weather/WeatherMixer.kt index ee5dacdfe..a4b297a5d 100644 --- a/src/net/torvald/terrarum/modulebasegame/weather/WeatherMixer.kt +++ b/src/net/torvald/terrarum/modulebasegame/weather/WeatherMixer.kt @@ -11,6 +11,7 @@ import net.torvald.terrarum.gameactors.ActorWithBody import net.torvald.terrarum.modulebasegame.gameactors.ParticleMegaRain import net.torvald.terrarum.gamecontroller.KeyToggler import net.torvald.terrarum.modulebasegame.Ingame +import net.torvald.terrarum.modulebasegame.RNGConsumer import net.torvald.terrarum.modulebasegame.gameworld.GameWorldExtension import net.torvald.terrarum.modulebasegame.gameworld.WorldTime import net.torvald.terrarum.worlddrawer.FeaturesDrawer @@ -31,7 +32,13 @@ import java.util.* * * Created by minjaesong on 2016-07-11. */ -internal object WeatherMixer { +internal object WeatherMixer : RNGConsumer { + + override val RNG = HQRNG() + override var seed = 0L + override var iterations = 0 + + var weatherList: HashMap> var currentWeather: BaseModularWeather diff --git a/src/net/torvald/terrarum/modulebasegame/worldgenerator/RoguelikeRandomiser.kt b/src/net/torvald/terrarum/modulebasegame/worldgenerator/RoguelikeRandomiser.kt index 58851aa0a..372437668 100644 --- a/src/net/torvald/terrarum/modulebasegame/worldgenerator/RoguelikeRandomiser.kt +++ b/src/net/torvald/terrarum/modulebasegame/worldgenerator/RoguelikeRandomiser.kt @@ -4,12 +4,13 @@ import com.badlogic.gdx.graphics.Color import net.torvald.dataclass.IntArrayStack import net.torvald.colourutil.Col4096 import net.torvald.random.HQRNG +import net.torvald.terrarum.modulebasegame.RNGConsumer import java.util.* /** * Created by minjaesong on 2016-02-23. */ -object RoguelikeRandomiser { +object RoguelikeRandomiser : RNGConsumer { val POTION_PRIMARY_COLSET = intArrayOf(15, 15, 7, 7, 0, 0) @@ -18,8 +19,8 @@ object RoguelikeRandomiser { val coloursTaken: ArrayList = ArrayList() - var seed: Long = 0 - private val random: Random = HQRNG() + override val RNG = HQRNG() + override var seed = 0L private val POTION_HEAL_TIER1 = 0x00 private val POTION_HEAL_TIRE2 = 0x01 @@ -28,7 +29,7 @@ object RoguelikeRandomiser { private val POTION_BERSERK_TIER1 = 0x20 - + override var iterations = 0 fun setupColours() { @@ -59,6 +60,8 @@ object RoguelikeRandomiser { val a = ar[index]; ar[index] = ar[i]; ar[i] = a; + + iterations++ } } } \ No newline at end of file diff --git a/src/net/torvald/terrarum/modulebasegame/worldgenerator/WorldGenerator.kt b/src/net/torvald/terrarum/modulebasegame/worldgenerator/WorldGenerator.kt index e836fd16f..eea11114c 100644 --- a/src/net/torvald/terrarum/modulebasegame/worldgenerator/WorldGenerator.kt +++ b/src/net/torvald/terrarum/modulebasegame/worldgenerator/WorldGenerator.kt @@ -10,6 +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.modulebasegame.RNGConsumer import net.torvald.terrarum.roundInt import java.util.* diff --git a/src/net/torvald/terrarum/serialise/SavegameLedger.kt b/src/net/torvald/terrarum/serialise/SavegameLedger.kt new file mode 100644 index 000000000..5647cb344 --- /dev/null +++ b/src/net/torvald/terrarum/serialise/SavegameLedger.kt @@ -0,0 +1,34 @@ +package net.torvald.terrarum.serialise + +import net.torvald.terrarum.Terrarum +import java.io.File +import java.io.FileFilter +import java.io.FileInputStream + + + +object SavegameLedger { + + private val SAVE_DIRECTORY = File(Terrarum.defaultSaveDir) + + fun hasSavegameDirectory() = SAVE_DIRECTORY.exists() && SAVE_DIRECTORY.isDirectory + + private fun peekFewBytes(file: File, length: Int): ByteArray { + val buffer = ByteArray(length) + val `is` = FileInputStream(file) + if (`is`.read(buffer) != buffer.size) { + throw InternalError() + } + `is`.close() + return buffer + } + private val MAGIC_TEVD = "TEVd".toByteArray() + + fun getSavefileList(): List? { + return if (!hasSavegameDirectory()) null + else SAVE_DIRECTORY.listFiles().filter { it.isFile && peekFewBytes(it, 4) contentEquals MAGIC_TEVD } + } + + fun getSavefileCount() = getSavefileList()?.count() ?: 0 + +} \ No newline at end of file diff --git a/src/net/torvald/terrarum/serialise/WriteCSV.kt b/src/net/torvald/terrarum/serialise/WriteCSV.kt index abb57ac34..3a744a943 100644 --- a/src/net/torvald/terrarum/serialise/WriteCSV.kt +++ b/src/net/torvald/terrarum/serialise/WriteCSV.kt @@ -48,7 +48,7 @@ internal object WriteCSV { Files.copy(tempPathMat, pathMat, StandardCopyOption.REPLACE_EXISTING) Files.deleteIfExists(tempPathMat) - println("Saved map data '${WriteLayerData.META_FILENAME}' to $saveDirectoryName.") + println("Saved map data '${WriteLayerData.LAYERS_FILENAME}' to $saveDirectoryName.") return true } diff --git a/src/net/torvald/terrarum/serialise/WriteLayerData.kt b/src/net/torvald/terrarum/serialise/WriteLayerData.kt index 61e4b95f3..0b07730fc 100644 --- a/src/net/torvald/terrarum/serialise/WriteLayerData.kt +++ b/src/net/torvald/terrarum/serialise/WriteLayerData.kt @@ -3,7 +3,6 @@ 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 @@ -11,12 +10,14 @@ import java.nio.charset.Charset import java.util.zip.GZIPOutputStream /** + * TODO this one does not use TerranVirtualDisk + * * Created by minjaesong on 2016-03-18. */ // internal for everything: prevent malicious module from messing up the savedata internal object WriteLayerData { - val META_FILENAME = "worldinfo1" + val LAYERS_FILENAME = "worldinfo1" val MAGIC = "TEMD".toByteArray(charset = Charset.forName("US-ASCII")) @@ -24,7 +25,7 @@ internal object WriteLayerData { internal operator fun invoke(saveDirectoryName: String): Boolean { - val path = "${Terrarum.defaultSaveDir}/$saveDirectoryName/${META_FILENAME}" + val path = "${Terrarum.defaultSaveDir}/$saveDirectoryName/${LAYERS_FILENAME}" val tempPath = "${path}_bak" val map = (Terrarum.ingame!!.world) @@ -69,7 +70,7 @@ internal object WriteLayerData { outFile.delete() tempFile.copyTo(outFile, overwrite = true) tempFile.delete() - println("Saved map data '$META_FILENAME' to $saveDirectoryName.") + println("Saved map data '$LAYERS_FILENAME' to $saveDirectoryName.") return true } diff --git a/src/net/torvald/terrarum/serialise/WriteMeta.kt b/src/net/torvald/terrarum/serialise/WriteMeta.kt index ccd1b53f3..f452836a9 100644 --- a/src/net/torvald/terrarum/serialise/WriteMeta.kt +++ b/src/net/torvald/terrarum/serialise/WriteMeta.kt @@ -1,5 +1,6 @@ package net.torvald.terrarum.serialise +import net.torvald.terrarum.modulebasegame.weather.WeatherMixer import net.torvald.terrarum.modulebasegame.worldgenerator.WorldGenerator import net.torvald.terrarum.modulebasegame.worldgenerator.RoguelikeRandomiser import java.nio.charset.Charset @@ -10,7 +11,7 @@ import java.nio.charset.Charset // internal for everything: prevent malicious module from messing up the savedata internal object WriteMeta { - val META_FILENAME = "world" + val META_FILENAME = "worldinfo0" val MAGIC = "TESV".toByteArray(charset = Charset.forName("US-ASCII")) @@ -19,6 +20,9 @@ internal object WriteMeta { val terraseed: Long = WorldGenerator.SEED val rogueseed: Long = RoguelikeRandomiser.seed + val rogueiter: Int = RoguelikeRandomiser.iterations + val weatherseed: Long = WeatherMixer.seed + val weatheriter: Int = WeatherMixer.iterations /** * Write save meta to specified directory. Returns false if something went wrong. diff --git a/work_files/DataFormats/Savegame container.txt b/work_files/DataFormats/Savegame container.txt new file mode 100644 index 000000000..5b082606c --- /dev/null +++ b/work_files/DataFormats/Savegame container.txt @@ -0,0 +1,19 @@ +A savegame consists of a Playable Character Information, Savegame Metadata, and other files. +A savegame is a single file in the format of TerranVirtualDisk. + +Files contained the TerranVirtualDisk is as follows: + +(root) + worldinfo0 -- Savegame Metadata GZipped (TESV) + worldinfo1 -- Layer Data GZipped (TEMD) + worldinfo2 -- Copy of blocks.csv GZipped -- will use this from the next load + worldinfo3 -- Copy of items.csv GZipped -- will use this from the next load + worldinfo4 -- Copy of materials.csv GZipped -- will use this from the next load + (any random number in Hex ACTORID_MIN..FFFFFFFF) -- Serialised Entity Information (including Player) + (PLAYER_REF_ID in Hex -- 91A7E2) -- Player Character Information (Serialised Entity Information) + (51621D) -- The Debug Player (Serialised Entity Information) + load_order.txt -- LoadOrder.csv + + + +Remarks: world history is created at the load time by scanning all the actors' corresponding ActorValue diff --git a/work_files/DataFormats/Savegame metadata.txt b/work_files/DataFormats/Savegame metadata.txt index 4556da697..ae42c8f7c 100644 --- a/work_files/DataFormats/Savegame metadata.txt +++ b/work_files/DataFormats/Savegame metadata.txt @@ -15,15 +15,23 @@ Ord Hex Description ... Terrain seed (8 bytes) ... Randomiser seed (8 bytes) +... Randomiser iterations (4 bytes) +... Weather seed (8 bytes) +... Weather iterations (4 bytes) ... SHA-256 hash of worldinfo1 when not compressed (32 bytes) ... SHA-256 hash of worldinfo2 when not compressed (32 bytes) ... SHA-256 hash of worldinfo3 when not compressed (32 bytes) ... SHA-256 hash of worldinfo4 when not compressed (32 bytes) -... ReferenceID of the player (4 bytes) +... ReferenceID of the player (4 bytes, a fixed value of 91A7E2) ... Current world's time_t (the ingame time, 8 bytes) ... Creation time in time_t (6 bytes) ... Last play time in time_t (6 bytes) -... Total playtime in time_t (4 bytes) // will record 136.1 years of playtime \ No newline at end of file +... Total playtime in time_t (4 bytes) // will record 136.1 years of playtime + + + + + diff --git a/work_files/DataFormats/User art format.txt b/work_files/DataFormats/User art format.txt index b00c5724c..fa8a6e378 100644 --- a/work_files/DataFormats/User art format.txt +++ b/work_files/DataFormats/User art format.txt @@ -19,7 +19,7 @@ Ord Hex Description 05 Number of swatches 00 - No palette mode (using defined palette) - 256 colours (using user-defined) - nn - Colour count (1-255) + nn - Colour count (0-255; 0 is interpreted as 256) 06 Width of the image (LSB) 07 Width of the image (MSB) @@ -37,6 +37,6 @@ Ord Hex Description ... Palette colour 2, if any (0R) ... Palette colour 2, if any (GB) -... Colour indices +... Colour indices, each byte represents each pixel \ No newline at end of file diff --git a/work_files/graphics/fonts/LatinExtA_variable.psd b/work_files/graphics/fonts/LatinExtA_variable.psd index fb2b34153..77eb7edf9 100644 --- a/work_files/graphics/fonts/LatinExtA_variable.psd +++ b/work_files/graphics/fonts/LatinExtA_variable.psd @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:201564159e83b40bbbb7453e4b6c82a959cb3f3ade7244a0e3c309daeadfebe7 -size 173642 +oid sha256:fd633b8c4fdb0f434bf73ab9a4698077717749c6f5991b3a3dd689b5ce171286 +size 172690 diff --git a/work_files/graphics/fonts/LatinExtB_variable.psd b/work_files/graphics/fonts/LatinExtB_variable.psd index 7674bb47c..0dd63501d 100644 --- a/work_files/graphics/fonts/LatinExtB_variable.psd +++ b/work_files/graphics/fonts/LatinExtB_variable.psd @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:754f5fe939a1aafbfdb357fb270b80026aea562dfe6254496e1bd500426d2316 -size 271311 +oid sha256:2e28ef7f43cd7fa8b5be072355af86a9caca859d05e49dbabfb75b88f1e48866 +size 267455 diff --git a/work_files/graphics/fonts/ascii_variable.psd b/work_files/graphics/fonts/ascii_variable.psd index e3d7369d1..a25097c35 100644 --- a/work_files/graphics/fonts/ascii_variable.psd +++ b/work_files/graphics/fonts/ascii_variable.psd @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:13bb042fba6801461d6e6f0d551cbb0bac493987822eda5e3cff7f8664eb0efe -size 341937 +oid sha256:2640f291ef85a6d82be875620fd45b1519d96af4bfaadbdb56c72c6cf1cdc6d1 +size 341944 diff --git a/work_files/graphics/fonts/cyrilic_bulgarian_variable.psd b/work_files/graphics/fonts/cyrilic_bulgarian_variable.psd index 4eae6134a..d5b0435c7 100644 --- a/work_files/graphics/fonts/cyrilic_bulgarian_variable.psd +++ b/work_files/graphics/fonts/cyrilic_bulgarian_variable.psd @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:74f14e268c8e23679d34187e4915874e978ab95a7381719ab24e84ed065c5c5c -size 136813 +oid sha256:a4b480498283b0557910eb201aa4badc038617603a59eee451a80bbab5bb5f83 +size 136031 diff --git a/work_files/graphics/fonts/cyrilic_serbian_variable.psd b/work_files/graphics/fonts/cyrilic_serbian_variable.psd index 5ece8dec9..0c5db1850 100644 --- a/work_files/graphics/fonts/cyrilic_serbian_variable.psd +++ b/work_files/graphics/fonts/cyrilic_serbian_variable.psd @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0bc783efe056ea44069912d12f603100579c7d1aba690880080170b6bb5efcb0 -size 155972 +oid sha256:50035331dbb4dc8cd62277f1dfd0570f987a8e0910785533257b1095cf4add86 +size 155238 diff --git a/work_files/graphics/fonts/cyrilic_variable.psd b/work_files/graphics/fonts/cyrilic_variable.psd index ec25efb48..72daf2706 100644 --- a/work_files/graphics/fonts/cyrilic_variable.psd +++ b/work_files/graphics/fonts/cyrilic_variable.psd @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:136df09ab1ebaa0045bc795dd843f461b9c4a197262713380a0673d50643a4f2 -size 391950 +oid sha256:10614033b2d7be72acc60c84f56f494b0c60281fed869c59e29aaa980e2d7e09 +size 391979 diff --git a/work_files/graphics/fonts/greek_polytonic_xyswap_variable.psd b/work_files/graphics/fonts/greek_polytonic_xyswap_variable.psd new file mode 100644 index 000000000..f9bb6e3f4 --- /dev/null +++ b/work_files/graphics/fonts/greek_polytonic_xyswap_variable.psd @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5086d44e392c09e7b99110709b00588d6998fed3376f05420a544f321da2188d +size 536090 diff --git a/work_files/graphics/fonts/greek_variable.psd b/work_files/graphics/fonts/greek_variable.psd index d4264404e..77cf89e3f 100644 --- a/work_files/graphics/fonts/greek_variable.psd +++ b/work_files/graphics/fonts/greek_variable.psd @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c3bd8e31a0d3b758b511eb7bb43952f25c8fd9c5c522f7caec2ce159c55d9e93 -size 130562 +oid sha256:c501a944ea2f9bacbf28872498487b68742c2ca46fbd4e2bdeb640dc30c6bd1b +size 130003 diff --git a/work_files/graphics/fonts/hayeren_variable.psd b/work_files/graphics/fonts/hayeren_variable.psd index 8b9c510fb..8dc0e1562 100644 --- a/work_files/graphics/fonts/hayeren_variable.psd +++ b/work_files/graphics/fonts/hayeren_variable.psd @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e9736dfe386926f7cc3fc3b9c17a785d91646ae9c65a4dfc44bd55412bb01675 -size 138073 +oid sha256:95974a1616154722a5d79a3f1ca441197165b5ec17b5e777f921fda4062c8510 +size 139080 diff --git a/work_files/graphics/fonts/latinExtC_variable.psd b/work_files/graphics/fonts/latinExtC_variable.psd new file mode 100644 index 000000000..424bdb796 --- /dev/null +++ b/work_files/graphics/fonts/latinExtC_variable.psd @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:257cad943fa7073188ed7beb414e7dd71851bb5bec9036df8778fad518c85496 +size 88782 diff --git a/work_files/graphics/fonts/latinExt_additional_variable.psd b/work_files/graphics/fonts/latinExt_additional_variable.psd index 007f3328b..2c355006c 100644 --- a/work_files/graphics/fonts/latinExt_additional_variable.psd +++ b/work_files/graphics/fonts/latinExt_additional_variable.psd @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0f34e0746df01c75a341808da32a366113bce646ead6c1de12b48d0c056310fc -size 348408 +oid sha256:a75e5e866f3dedf5d3d8d3995975234b94b228527c54fd3e19ab7ac1ebacda49 +size 347093