Skip to content

Commit

Permalink
progress
Browse files Browse the repository at this point in the history
  • Loading branch information
adam-arold committed Dec 18, 2017
1 parent cd3f116 commit b6b7f17
Show file tree
Hide file tree
Showing 34 changed files with 286 additions and 109 deletions.
2 changes: 1 addition & 1 deletion build.gradle
@@ -1,6 +1,6 @@
buildscript {
ext {
kotlinVersion = '1.1.51'
kotlinVersion = '1.2.10'
slf4jVersion = '1.7.24'

gdxVersion = '1.9.6'
Expand Down
4 changes: 3 additions & 1 deletion codecov.yml
@@ -1,2 +1,4 @@
codecov:
token: fdad49d8-8aa1-421e-b50b-607d1881a16d
token: fdad49d8-8aa1-421e-b50b-607d1881a16d

# bash <(curl -s https://codecov.io/bash)
Expand Up @@ -4,6 +4,10 @@ import org.codetome.zircon.api.Beta
import org.codetome.zircon.internal.behavior.Identifiable
import java.util.*

/**
* Note that this class is in **BETA**!
* It's API is subject to change!
*/
@Beta
interface Animation : Identifiable {

Expand Down
Expand Up @@ -5,6 +5,10 @@ import org.codetome.zircon.api.Position
import org.codetome.zircon.api.Size
import org.codetome.zircon.api.graphics.Layer

/**
* Note that this class is in **BETA**!
* It's API is subject to change!
*/
@Beta
interface AnimationFrame {

Expand Down
Expand Up @@ -11,6 +11,10 @@ import java.util.concurrent.Executors
import java.util.concurrent.Future
import java.util.function.Consumer

/**
* Note that this class is in **BETA**!
* It's API is subject to change!
*/
@Beta
class AnimationHandler(private val screen: Screen) : Closeable {

Expand Down
Expand Up @@ -9,6 +9,10 @@ import org.codetome.zircon.internal.util.rex.unZipIt
import org.yaml.snakeyaml.Yaml
import org.yaml.snakeyaml.constructor.Constructor

/**
* Note that this class is in **BETA**!
* It's API is subject to change!
*/
@Beta
class AnimationResource {

Expand Down

This file was deleted.

@@ -1,11 +1,17 @@
package org.codetome.zircon.api.builder

import org.codetome.zircon.api.Beta
import org.codetome.zircon.api.Position
import org.codetome.zircon.api.animation.Animation
import org.codetome.zircon.api.animation.AnimationFrame
import org.codetome.zircon.internal.graphics.DefaultAnimation
import org.codetome.zircon.internal.graphics.DefaultAnimationFrame

/**
* Note that this class is in **BETA**!
* It's API is subject to change!
*/
@Beta
data class AnimationBuilder private constructor(
private val animationFrames: MutableList<AnimationFrame> = mutableListOf(),
private val positions: MutableList<Position> = mutableListOf(),
Expand Down
52 changes: 52 additions & 0 deletions src/main/kotlin/org/codetome/zircon/api/builder/GameAreaBuilder.kt
@@ -0,0 +1,52 @@
package org.codetome.zircon.api.builder

import org.codetome.zircon.api.Beta
import org.codetome.zircon.api.game.GameArea
import org.codetome.zircon.api.game.Size3D
import org.codetome.zircon.api.graphics.TextImage
import org.codetome.zircon.internal.game.TextImageGameArea

/**
* Note that this class is in **BETA**!
* It's API is subject to change!
*/
@Beta
data class GameAreaBuilder(private var size: Size3D = Size3D.ONE,
private var levels: MutableMap<Int, List<TextImage>> = mutableMapOf()) : Builder<GameArea> {


fun size(size: Size3D) = also {
this.size = size
levels = mutableMapOf()
(0 until size.height).forEach {
levels[it] = listOf()
}
}

fun setLevel(level: Int, vararg images: TextImage) = setLevel(level, images.toList())

fun setLevel(level: Int, images: List<TextImage>) = also {
require(level in 0.rangeTo(size.height)) {
"Level '$level' is out of bounds (0 - ${size.height})!"
}
require(images.all { it.getBoundableSize() == size.to2DSize() }) {
"The supplied image(s) do(es) not match the size of the GameArea (${size.to2DSize()})!"
}
this.levels[level] = images
}

override fun build(): GameArea {
return TextImageGameArea(
size = size,
levels = levels)
}

override fun createCopy() = copy(
levels = levels.toMutableMap())

companion object {

@JvmStatic
fun newBuilder() = GameAreaBuilder()
}
}
Expand Up @@ -14,8 +14,4 @@ interface ColorTheme {
fun getDarkBackgroundColor(): TextColor

fun getAccentColor(): TextColor

fun toBrightStyle(): StyleSet

fun toDarkStyle(): StyleSet
}
11 changes: 11 additions & 0 deletions src/main/kotlin/org/codetome/zircon/api/component/GameComponent.kt
@@ -0,0 +1,11 @@
package org.codetome.zircon.api.component

import org.codetome.zircon.api.Beta
import org.codetome.zircon.internal.behavior.Scrollable3D

/**
* Note that this class is in **BETA**!
* It's API is subject to change!
*/
@Beta
interface GameComponent : Component, Scrollable3D
@@ -0,0 +1,93 @@
package org.codetome.zircon.api.component.builder

import org.codetome.zircon.api.Beta
import org.codetome.zircon.api.Position
import org.codetome.zircon.api.Size
import org.codetome.zircon.api.TextCharacter
import org.codetome.zircon.api.builder.Builder
import org.codetome.zircon.api.builder.ComponentStylesBuilder
import org.codetome.zircon.api.component.ComponentStyles
import org.codetome.zircon.api.component.GameComponent
import org.codetome.zircon.api.font.Font
import org.codetome.zircon.api.game.*
import org.codetome.zircon.internal.component.impl.DefaultGameComponent
import org.codetome.zircon.internal.font.impl.FontSettings

/**
* Note that this class is in **BETA**!
* It's API is subject to change!
*/
@Beta
data class GameComponentBuilder(private var gameArea: GameArea = NO_GAME_AREA,
private var projectionMode: ProjectionMode = DEFAULT_PROJECTION_MODE,
private var visibleSize: Size3D = Size3D.ONE,
private var font: Font = FontSettings.NO_FONT,
private var position: Position = Position.DEFAULT_POSITION,
private var componentStyles: ComponentStyles = ComponentStylesBuilder.DEFAULT) : Builder<GameComponent> {

override fun createCopy() = copy()

fun gameArea(gameArea: GameArea) = also {
this.gameArea = gameArea
}

fun projectionMode(projectionMode: ProjectionMode) = also {
this.projectionMode = projectionMode
}

fun visibleSize(visibleSize: Size3D) = also {
this.visibleSize = visibleSize
}

fun font(font: Font) = also {
this.font = font
}

fun position(position: Position) = also {
this.position = position
}

fun componentStyles(componentStyles: ComponentStyles) = also {
this.componentStyles = componentStyles
}

override fun build(): DefaultGameComponent {
require(gameArea !== NO_GAME_AREA) {
"A GameComponent will only work with a GameArea as backend. Please set one!"
}
return DefaultGameComponent(
gameArea = gameArea,
projectionMode = projectionMode,
visibleSize = visibleSize,
initialFont = font,
position = position,
componentStyles = componentStyles)
}

companion object {

private val NO_GAME_AREA = object : GameArea {
override fun getSize(): Size3D {
TODO("not implemented")
}

override fun getCharactersAt(position: Position3D): List<TextCharacter> {
TODO("not implemented")
}

override fun setCharactersAt(position: Position3D, characters: List<TextCharacter>) {
TODO("not implemented")
}

override fun getSegmentAt(offset: Position3D, size: Size): GameAreaSegment {
TODO("not implemented")
}
}

@JvmField
val DEFAULT_PROJECTION_MODE = ProjectionMode.TOP_DOWN

@JvmStatic
fun newBuilder() = GameComponentBuilder()
}
}
@@ -1,11 +1,14 @@
package org.codetome.zircon.api.beta.component
package org.codetome.zircon.api.game

import org.codetome.zircon.api.Beta
import org.codetome.zircon.api.Size
import org.codetome.zircon.api.TextCharacter
import org.codetome.zircon.api.graphics.TextImage
import java.util.*

/**
* Note that this class is in **BETA**!
* It's API is subject to change!
*/
@Beta
interface GameArea {

Expand Down
@@ -1,4 +1,4 @@
package org.codetome.zircon.api.beta.component
package org.codetome.zircon.api.game

import org.codetome.zircon.api.Beta
import org.codetome.zircon.api.graphics.TextImage
Expand Down
@@ -1,4 +1,4 @@
package org.codetome.zircon.api.beta.component
package org.codetome.zircon.api.game

import org.codetome.zircon.api.Beta
import org.codetome.zircon.api.Position
Expand Down
13 changes: 13 additions & 0 deletions src/main/kotlin/org/codetome/zircon/api/game/ProjectionMode.kt
@@ -0,0 +1,13 @@
package org.codetome.zircon.api.game

import org.codetome.zircon.api.Beta

/**
* Note that this class is in **BETA**!
* It's API is subject to change!
*/
@Beta
enum class ProjectionMode {
TOP_DOWN,
ISOMETRIC
}
@@ -1,4 +1,4 @@
package org.codetome.zircon.api.beta.component
package org.codetome.zircon.api.game

import org.codetome.zircon.api.Beta
import org.codetome.zircon.api.Size
Expand All @@ -15,11 +15,11 @@ data class Size3D(private val size: Size, val height: Int) : Comparable<Size3D>

val depth get() = size.rows

operator fun plus(other: Size3D) = Size3D.from2DSize(
operator fun plus(other: Size3D) = from2DSize(
size = size + other.size,
levels = height + other.height)

operator fun minus(other: Size3D) = Size3D.from2DSize(
operator fun minus(other: Size3D) = from2DSize(
size = size - other.size,
levels = height - other.height)

Expand All @@ -34,6 +34,9 @@ data class Size3D(private val size: Size, val height: Int) : Comparable<Size3D>

companion object {

@JvmField
val ONE = of(1, 1, 1)

/**
* Factory method for [Size3D].
*/
Expand Down
@@ -1,8 +1,9 @@
package org.codetome.zircon.api.resource

import org.codetome.zircon.api.component.ColorTheme
import org.codetome.zircon.api.component.builder.ColorThemeBuilder
import org.codetome.zircon.api.component.builder.GameComponentBuilder
import org.codetome.zircon.api.color.TextColorFactory
import org.codetome.zircon.api.component.builder.ColorThemeBuilder
import org.codetome.zircon.api.resource.ColorThemeResource.SolarizedBase.SOLARIZED_DARK_BASE
import org.codetome.zircon.api.resource.ColorThemeResource.SolarizedBase.SOLARIZED_LIGHT_BASE

Expand Down
@@ -1,7 +1,7 @@
package org.codetome.zircon.internal.behavior

import org.codetome.zircon.api.beta.component.Position3D
import org.codetome.zircon.api.beta.component.Size3D
import org.codetome.zircon.api.game.Position3D
import org.codetome.zircon.api.game.Size3D

/**
* A [Scrollable3D] object has a visible 3D space which might be smaller than
Expand Down
@@ -1,8 +1,8 @@
package org.codetome.zircon.internal.behavior.impl

import org.codetome.zircon.api.Position
import org.codetome.zircon.api.beta.component.Position3D
import org.codetome.zircon.api.beta.component.Size3D
import org.codetome.zircon.api.game.Position3D
import org.codetome.zircon.api.game.Size3D
import org.codetome.zircon.internal.behavior.Scrollable3D

class DefaultScrollable3D(private var visibleSpaceSize: Size3D,
Expand Down
@@ -1,9 +1,7 @@
package org.codetome.zircon.internal.component

import org.codetome.zircon.api.builder.StyleSetBuilder
import org.codetome.zircon.api.color.TextColor
import org.codetome.zircon.api.component.ColorTheme
import org.codetome.zircon.api.graphics.StyleSet

data class DefaultColorTheme(private val brightForegroundColor: TextColor,
private val brightBackgroundColor: TextColor,
Expand All @@ -20,16 +18,4 @@ data class DefaultColorTheme(private val brightForegroundColor: TextColor,
override fun getDarkBackgroundColor() = darkBackgroundColor

override fun getAccentColor() = accentColor

// TODO: test these

override fun toBrightStyle() = StyleSetBuilder.newBuilder()
.backgroundColor(brightBackgroundColor)
.foregroundColor(brightForegroundColor)
.build()

override fun toDarkStyle() = StyleSetBuilder.newBuilder()
.backgroundColor(darkBackgroundColor)
.foregroundColor(darkForegroundColor)
.build()
}
Expand Up @@ -20,7 +20,6 @@ import org.codetome.zircon.internal.component.InternalComponent
import org.codetome.zircon.internal.component.WrappingStrategy
import org.codetome.zircon.internal.event.EventBus
import org.codetome.zircon.internal.event.EventType
import java.awt.image.BufferedImage
import java.util.*
import java.util.function.Consumer

Expand Down

0 comments on commit b6b7f17

Please sign in to comment.