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