Add more events to android research
This commit is contained in:
parent
070b962df9
commit
805297564a
@ -3,25 +3,23 @@ package ru.dbotthepony.mc.otm.android
|
|||||||
import it.unimi.dsi.fastutil.io.FastByteArrayOutputStream
|
import it.unimi.dsi.fastutil.io.FastByteArrayOutputStream
|
||||||
import net.minecraft.ChatFormatting
|
import net.minecraft.ChatFormatting
|
||||||
import net.minecraft.nbt.CompoundTag
|
import net.minecraft.nbt.CompoundTag
|
||||||
import net.minecraft.nbt.ListTag
|
|
||||||
import net.minecraft.network.chat.Component
|
import net.minecraft.network.chat.Component
|
||||||
import net.minecraft.resources.ResourceLocation
|
|
||||||
import net.minecraft.server.level.ServerPlayer
|
import net.minecraft.server.level.ServerPlayer
|
||||||
import net.minecraft.world.entity.player.Player
|
import net.minecraft.world.entity.player.Player
|
||||||
import net.minecraftforge.common.MinecraftForge
|
import net.minecraftforge.common.MinecraftForge
|
||||||
import net.minecraftforge.common.util.INBTSerializable
|
import net.minecraftforge.common.util.INBTSerializable
|
||||||
|
import net.minecraftforge.eventbus.api.Cancelable
|
||||||
import net.minecraftforge.eventbus.api.Event
|
import net.minecraftforge.eventbus.api.Event
|
||||||
|
import net.minecraftforge.eventbus.api.Event.HasResult
|
||||||
import ru.dbotthepony.mc.otm.OverdriveThatMatters
|
import ru.dbotthepony.mc.otm.OverdriveThatMatters
|
||||||
import ru.dbotthepony.mc.otm.capability.MatteryPlayerCapability
|
import ru.dbotthepony.mc.otm.capability.MatteryPlayerCapability
|
||||||
import ru.dbotthepony.mc.otm.capability.awareItemsStream
|
import ru.dbotthepony.mc.otm.capability.awareItemsStream
|
||||||
import ru.dbotthepony.mc.otm.core.TextComponent
|
import ru.dbotthepony.mc.otm.core.TextComponent
|
||||||
import ru.dbotthepony.mc.otm.core.TranslatableComponent
|
import ru.dbotthepony.mc.otm.core.TranslatableComponent
|
||||||
import ru.dbotthepony.mc.otm.core.nbt.getCompoundList
|
|
||||||
import ru.dbotthepony.mc.otm.core.registryName
|
import ru.dbotthepony.mc.otm.core.registryName
|
||||||
import ru.dbotthepony.mc.otm.core.nbt.set
|
import ru.dbotthepony.mc.otm.core.nbt.set
|
||||||
import ru.dbotthepony.mc.otm.milliTime
|
import ru.dbotthepony.mc.otm.milliTime
|
||||||
import ru.dbotthepony.mc.otm.network.synchronizer.FieldSynchronizer
|
import ru.dbotthepony.mc.otm.network.synchronizer.FieldSynchronizer
|
||||||
import ru.dbotthepony.mc.otm.registry.MRegistry
|
|
||||||
import ru.dbotthepony.mc.otm.triggers.AndroidResearchTrigger
|
import ru.dbotthepony.mc.otm.triggers.AndroidResearchTrigger
|
||||||
import java.io.InputStream
|
import java.io.InputStream
|
||||||
import kotlin.math.absoluteValue
|
import kotlin.math.absoluteValue
|
||||||
@ -49,20 +47,27 @@ class AndroidResearch(val type: AndroidResearchType, val capability: MatteryPlay
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
onRefunded()
|
onUnResearched()
|
||||||
isResearched = false
|
isResearched = false
|
||||||
}
|
}
|
||||||
|
|
||||||
fun onRefunded() {
|
data class OnResearched(val research: AndroidResearch) : Event()
|
||||||
|
data class OnUnResearched(val research: AndroidResearch) : Event()
|
||||||
|
|
||||||
|
fun onUnResearched() {
|
||||||
for (result in type.results) {
|
for (result in type.results) {
|
||||||
result.onRefunded(this)
|
result.onUnResearched(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MinecraftForge.EVENT_BUS.post(OnUnResearched(this))
|
||||||
}
|
}
|
||||||
|
|
||||||
fun onResearched() {
|
fun onResearched() {
|
||||||
for (result in type.results) {
|
for (result in type.results) {
|
||||||
result.onResearched(this)
|
result.onResearched(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MinecraftForge.EVENT_BUS.post(OnResearched(this))
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -114,16 +119,14 @@ class AndroidResearch(val type: AndroidResearchType, val capability: MatteryPlay
|
|||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
data class OnRefunded(val research: AndroidResearch) : Event()
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Grants all (or some) resources back consumed by [consumeResearchCost].
|
* Grants all (or some) resources back consumed by [consumeResearchCost].
|
||||||
*
|
*
|
||||||
* Returns true whenever player accepted all resources refunded, false otherwise.
|
* Returns true whenever player accepted all resources refunded, false otherwise.
|
||||||
*/
|
*/
|
||||||
fun refund(simulate: Boolean): Boolean {
|
fun refund(): Boolean {
|
||||||
if (simulate) {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
if (type.experienceLevels > 0) {
|
if (type.experienceLevels > 0) {
|
||||||
var experiencePoints = 0
|
var experiencePoints = 0
|
||||||
|
|
||||||
@ -148,6 +151,8 @@ class AndroidResearch(val type: AndroidResearchType, val capability: MatteryPlay
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MinecraftForge.EVENT_BUS.post(OnRefunded(this))
|
||||||
|
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -32,7 +32,7 @@ object AndroidResearchResults {
|
|||||||
feature.strength++
|
feature.strength++
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onRefunded(research: AndroidResearch) {
|
override fun onUnResearched(research: AndroidResearch) {
|
||||||
val feature = research.capability.getFeature(AndroidFeatures.NANOBOTS_ARMOR) ?: return
|
val feature = research.capability.getFeature(AndroidFeatures.NANOBOTS_ARMOR) ?: return
|
||||||
feature.strength--
|
feature.strength--
|
||||||
}
|
}
|
||||||
@ -48,7 +48,7 @@ object AndroidResearchResults {
|
|||||||
feature.speed++
|
feature.speed++
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onRefunded(research: AndroidResearch) {
|
override fun onUnResearched(research: AndroidResearch) {
|
||||||
val feature = research.capability.getFeature(AndroidFeatures.NANOBOTS_ARMOR) ?: return
|
val feature = research.capability.getFeature(AndroidFeatures.NANOBOTS_ARMOR) ?: return
|
||||||
feature.speed--
|
feature.speed--
|
||||||
}
|
}
|
||||||
@ -82,7 +82,7 @@ interface AndroidResearchResult {
|
|||||||
research.capability.addFeature(feature ?: return)
|
research.capability.addFeature(feature ?: return)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onRefunded(research: AndroidResearch) {
|
override fun onUnResearched(research: AndroidResearch) {
|
||||||
research.capability.removeFeature(feature ?: return)
|
research.capability.removeFeature(feature ?: return)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -122,7 +122,7 @@ interface AndroidResearchResult {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onRefunded(research: AndroidResearch) {
|
override fun onUnResearched(research: AndroidResearch) {
|
||||||
val get = research.capability.getFeature(feature ?: return)
|
val get = research.capability.getFeature(feature ?: return)
|
||||||
|
|
||||||
if (get == null) {
|
if (get == null) {
|
||||||
@ -160,7 +160,7 @@ interface AndroidResearchResult {
|
|||||||
/**
|
/**
|
||||||
* Called when research is refunded
|
* Called when research is refunded
|
||||||
*/
|
*/
|
||||||
fun onRefunded(research: AndroidResearch) {}
|
fun onUnResearched(research: AndroidResearch) {}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
private val LOGGER = LogManager.getLogger()
|
private val LOGGER = LogManager.getLogger()
|
||||||
|
@ -492,7 +492,7 @@ class MatteryPlayerCapability(val ply: Player) : ICapabilityProvider, INBTSerial
|
|||||||
instance.unResearch()
|
instance.unResearch()
|
||||||
|
|
||||||
if (refund) {
|
if (refund) {
|
||||||
instance.refund(simulate = false)
|
instance.refund()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user