ASMR/src/main/kotlin/net/shadowfacts/asmr/program/ProgramBlockOutput.kt

41 lines
862 B
Kotlin
Raw Normal View History

2019-08-09 01:44:59 +00:00
package net.shadowfacts.asmr.program
2019-08-10 02:39:01 +00:00
import net.minecraft.util.Identifier
2019-08-10 23:21:26 +00:00
import net.minecraft.util.Language
2019-08-10 02:39:01 +00:00
2019-08-09 01:44:59 +00:00
/**
* @author shadowfacts
*/
class ProgramBlockOutput<Type: Any>(
2019-08-10 02:39:01 +00:00
val identifier: Identifier,
val type: ProgramType<Type>,
val block: ProgramBlock
2019-08-09 01:44:59 +00:00
) {
lateinit var value: Type
private val _destinations = mutableListOf<ProgramBlockInput<Type>>()
val destinations: List<ProgramBlockInput<Type>> = _destinations
fun link(to: ProgramBlockInput<Type>) {
to.source = this
_destinations.add(to)
}
fun unlink(to: ProgramBlockInput<Type>) {
to.source = null
_destinations.remove(to)
}
fun unlinkAll() {
for (dest in destinations) {
dest.source = null
}
_destinations.clear()
}
2019-08-10 23:21:26 +00:00
fun translateName(): String {
return Language.getInstance().translate("programblock.param.${identifier.namespace}.${identifier.path}")
}
2019-08-09 01:44:59 +00:00
}