mirror of
https://github.com/MightyPirates/OpenComputers.git
synced 2025-09-19 12:17:17 -04:00
Update handlers for agent based events.
This commit is contained in:
parent
664bfcfeca
commit
fb0a9a33dd
@ -356,7 +356,8 @@ class TextBuffer(val host: EnvironmentHost) extends prefab.ManagedEnvironment wi
|
||||
data.color(row)(col) = (packedForeground | packedBackground).toShort
|
||||
}
|
||||
}
|
||||
// TODO Better for bandwidth to send packed shorts here. Would need a special case for handling on client, though...
|
||||
// Better for bandwidth to send packed shorts here. Would need a special case for handling on client,
|
||||
// though, so let's be wasteful for once...
|
||||
proxy.onBufferRawSetBackground(col, row, color)
|
||||
}
|
||||
|
||||
@ -369,7 +370,8 @@ class TextBuffer(val host: EnvironmentHost) extends prefab.ManagedEnvironment wi
|
||||
data.color(row)(col) = (packedForeground | packedBackground).toShort
|
||||
}
|
||||
}
|
||||
// TODO Better for bandwidth to send packed shorts here. Would need a special case for handling on client, though...
|
||||
// Better for bandwidth to send packed shorts here. Would need a special case for handling on client,
|
||||
// though, so let's be wasteful for once...
|
||||
proxy.onBufferRawSetForeground(col, row, color)
|
||||
}
|
||||
|
||||
|
@ -1,15 +1,20 @@
|
||||
package li.cil.oc.common.event
|
||||
|
||||
import cpw.mods.fml.common.eventhandler.SubscribeEvent
|
||||
import li.cil.oc.api
|
||||
import li.cil.oc.api.event.RobotPlaceInAirEvent
|
||||
import li.cil.oc.api.network.Component
|
||||
import li.cil.oc.server.component.UpgradeAngel
|
||||
|
||||
import scala.collection.convert.WrapAsScala._
|
||||
|
||||
object AngelUpgradeHandler {
|
||||
@SubscribeEvent
|
||||
def onPlaceInAir(e: RobotPlaceInAirEvent) {
|
||||
// TODO Generalize Agent interface for access to their components.
|
||||
// val startComponents = 1 + e.robot.containerCount + e.robot.inventorySize
|
||||
// e.setAllowed(((1 to e.robot.containerCount) ++ (startComponents until startComponents + e.robot.componentCount)).
|
||||
// exists(slot => api.Items.get(e.robot.getStackInSlot(slot)) == api.Items.get("angelUpgrade")))
|
||||
val machineNode = e.agent.machine.node
|
||||
machineNode.reachableNodes.exists {
|
||||
case component: Component if component.canBeSeenFrom(machineNode) =>
|
||||
component.host.isInstanceOf[UpgradeAngel]
|
||||
case _ => false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -55,13 +55,11 @@ object ChunkloaderUpgradeHandler extends LoadingCallback {
|
||||
|
||||
@SubscribeEvent
|
||||
def onMove(e: RobotMoveEvent.Post) {
|
||||
// TODO Generalize Agent interface for access to their components.
|
||||
// for (slot <- 0 until e.robot.getSizeInventory) {
|
||||
// e.robot.getComponentInSlot(slot) match {
|
||||
// case loader: UpgradeChunkloader => updateLoadedChunk(loader)
|
||||
// case _ =>
|
||||
// }
|
||||
// }
|
||||
val machineNode = e.agent.machine.node
|
||||
machineNode.reachableNodes.foreach(_.host match {
|
||||
case loader: UpgradeChunkloader => updateLoadedChunk(loader)
|
||||
case _ =>
|
||||
})
|
||||
}
|
||||
|
||||
def updateLoadedChunk(loader: UpgradeChunkloader) {
|
||||
|
@ -6,9 +6,12 @@ import li.cil.oc.Settings
|
||||
import li.cil.oc.api.event._
|
||||
import li.cil.oc.api.internal.Agent
|
||||
import li.cil.oc.api.internal.Robot
|
||||
import li.cil.oc.api.network.Node
|
||||
import li.cil.oc.server.component
|
||||
import org.lwjgl.opengl.GL11
|
||||
|
||||
import scala.collection.convert.WrapAsScala._
|
||||
|
||||
object ExperienceUpgradeHandler {
|
||||
@SubscribeEvent
|
||||
def onRobotAnalyze(e: RobotAnalyzeEvent) {
|
||||
@ -32,10 +35,13 @@ object ExperienceUpgradeHandler {
|
||||
|
||||
@SubscribeEvent
|
||||
def onRobotAttackEntityPost(e: RobotAttackEntityEvent.Post) {
|
||||
// TODO Generalize Agent interface for access to their components.
|
||||
// if (e.robot.getComponentInSlot(e.robot.selectedSlot()) != null && e.target.isDead) {
|
||||
// addExperience(e.robot, Settings.get.robotActionXp)
|
||||
// }
|
||||
e.agent match {
|
||||
case robot: Robot =>
|
||||
if (robot.getComponentInSlot(robot.selectedSlot()) != null && e.target.isDead) {
|
||||
addExperience(robot, Settings.get.robotActionXp)
|
||||
}
|
||||
case _ =>
|
||||
}
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
@ -74,40 +80,28 @@ object ExperienceUpgradeHandler {
|
||||
|
||||
private def getLevel(agent: Agent) = {
|
||||
var level = 0
|
||||
// TODO Generalize Agent interface for access to their components.
|
||||
// for (index <- 0 until agent.getSizeInventory) {
|
||||
// agent.getComponentInSlot(index) match {
|
||||
// case upgrade: component.UpgradeExperience =>
|
||||
// level += upgrade.level
|
||||
// case _ =>
|
||||
// }
|
||||
// }
|
||||
foreachUpgrade(agent.machine.node, upgrade => level += upgrade.level)
|
||||
level
|
||||
}
|
||||
|
||||
private def getLevelAndExperience(agent: Agent) = {
|
||||
var level = 0
|
||||
var experience = 0.0
|
||||
// TODO Generalize Agent interface for access to their components.
|
||||
// for (index <- 0 until agent.getSizeInventory) {
|
||||
// agent.getComponentInSlot(index) match {
|
||||
// case upgrade: component.UpgradeExperience =>
|
||||
// level += upgrade.level
|
||||
// experience += upgrade.experience
|
||||
// case _ =>
|
||||
// }
|
||||
// }
|
||||
foreachUpgrade(agent.machine.node, upgrade => {
|
||||
level += upgrade.level
|
||||
experience += upgrade.experience
|
||||
})
|
||||
(level, experience)
|
||||
}
|
||||
|
||||
private def addExperience(agent: Agent, amount: Double) {
|
||||
// TODO Generalize Agent interface for access to their components.
|
||||
// for (index <- 0 until agent.getSizeInventory) {
|
||||
// agent.getComponentInSlot(index) match {
|
||||
// case upgrade: component.UpgradeExperience =>
|
||||
// upgrade.addExperience(amount)
|
||||
// case _ =>
|
||||
// }
|
||||
// }
|
||||
foreachUpgrade(agent.machine.node, upgrade => upgrade.addExperience(amount))
|
||||
}
|
||||
|
||||
private def foreachUpgrade(node: Node, f: (component.UpgradeExperience) => Unit): Unit = {
|
||||
node.reachableNodes.foreach(_.host match {
|
||||
case upgrade: component.UpgradeExperience => f(upgrade)
|
||||
case _ =>
|
||||
})
|
||||
}
|
||||
}
|
||||
|
@ -5,16 +5,15 @@ import li.cil.oc.api
|
||||
import li.cil.oc.api.event.RobotMoveEvent
|
||||
import li.cil.oc.server.component.WirelessNetworkCard
|
||||
|
||||
import scala.collection.convert.WrapAsScala._
|
||||
|
||||
object WirelessNetworkCardHandler {
|
||||
@SubscribeEvent
|
||||
def onMove(e: RobotMoveEvent.Post) {
|
||||
// TODO Generalize Agent interface for access to their components.
|
||||
// val startComponents = 1 + e.robot.containerCount + e.robot.inventorySize
|
||||
// for (slot <- (1 to e.robot.containerCount) ++ (startComponents until startComponents + e.robot.componentCount)) {
|
||||
// e.robot.getComponentInSlot(slot) match {
|
||||
// case card: WirelessNetworkCard => api.Network.updateWirelessNetwork(card)
|
||||
// case _ =>
|
||||
// }
|
||||
// }
|
||||
val machineNode = e.agent.machine.node
|
||||
machineNode.reachableNodes.foreach(_.host match {
|
||||
case card: WirelessNetworkCard => api.Network.updateWirelessNetwork(card)
|
||||
case _ =>
|
||||
})
|
||||
}
|
||||
}
|
||||
|
@ -189,9 +189,9 @@ class TabletWrapper(var stack: ItemStack, var player: EntityPlayer) extends Comp
|
||||
|
||||
override def facing = RotationHelper.fromYaw(player.rotationYaw)
|
||||
|
||||
override def toLocal(value: ForgeDirection) = value // TODO do we care?
|
||||
override def toLocal(value: ForgeDirection) = value // -T-O-D-O- do we care? no we don't
|
||||
|
||||
override def toGlobal(value: ForgeDirection) = value // TODO do we care?
|
||||
override def toGlobal(value: ForgeDirection) = value // -T-O-D-O- do we care? no we don't
|
||||
|
||||
def readFromNBT() {
|
||||
if (stack.hasTagCompound) {
|
||||
|
@ -258,7 +258,6 @@ class Player(val robot: tileentity.Robot) extends FakePlayer(robot.world.asInsta
|
||||
return 0
|
||||
}
|
||||
|
||||
// TODO Is this already handled via the event?
|
||||
if (MinecraftServer.getServer.isBlockProtected(world, x, y, z, this)) {
|
||||
return 0
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user