Added image design related packets

This commit is contained in:
Ziggy
2022-08-19 16:01:22 +02:00
parent 64860d8c66
commit c751ed57bb
6 changed files with 277 additions and 2 deletions

View File

@@ -0,0 +1,89 @@
package com.projectswg.common.network.packets.swg.zone.object_controller
import com.projectswg.common.data.customization.CustomizationString
import com.projectswg.common.network.NetBuffer
class ImageDesignChangeMessage : ObjectController {
constructor(receiverId: Long) : super(receiverId, CRC)
constructor(data: NetBuffer) : super(CRC) {
decode(data)
}
companion object {
const val CRC = 0x0238
}
var designerId = 0L
var clientId = 0L
var salonId = 0L
var hairChanged = false
var hair = ""
var hairCustomization = CustomizationString()
var designType = 0
var startingTime = 0
var moneyDemanded = 0
var moneyOffered = 0
var designerCommitted = false
var clientAccepted = false
var statMigration = false
var bodySkillMod = 0
var faceSkillMod = 0
var markingsSkillMod = 0
var hairSkillMod = 0
var morphParameters: MutableList<MorphParameter> = ArrayList()
var indexParameters: MutableList<IndexParameter> = ArrayList()
var holoemote = ""
override fun decode(data: NetBuffer) {
decodeHeader(data)
designerId = data.long
clientId = data.long
salonId = data.long
hairChanged = data.boolean
hair = data.ascii
hairCustomization.decode(data)
designType = data.int
startingTime = data.int
moneyDemanded = data.int
moneyOffered = data.int
designerCommitted = data.boolean
clientAccepted = data.int != 0
statMigration = data.boolean
bodySkillMod = data.int
faceSkillMod = data.int
markingsSkillMod = data.int
hairSkillMod = data.int
morphParameters = data.getList(MorphParameter::class.java)
indexParameters = data.getList(IndexParameter::class.java)
holoemote = data.ascii
}
override fun encode(): NetBuffer {
val data = NetBuffer.allocate(HEADER_LENGTH + 26)
encodeHeader(data)
data.addLong(designerId)
data.addLong(clientId)
data.addLong(salonId)
data.addBoolean(hairChanged)
data.addAscii(hair)
data.addEncodable(hairCustomization)
data.addInt(designType)
data.addInt(startingTime)
data.addInt(moneyDemanded)
data.addInt(moneyOffered)
data.addBoolean(designerCommitted)
data.addInt(if (clientAccepted) 1 else 0)
data.addBoolean(statMigration)
data.addInt(bodySkillMod)
data.addInt(faceSkillMod)
data.addInt(markingsSkillMod)
data.addInt(hairSkillMod)
data.addList(morphParameters)
data.addList(indexParameters)
data.addAscii(holoemote)
return data
}
}

View File

@@ -0,0 +1,89 @@
package com.projectswg.common.network.packets.swg.zone.object_controller
import com.projectswg.common.data.customization.CustomizationString
import com.projectswg.common.network.NetBuffer
class ImageDesignEndMessage : ObjectController {
constructor(receiverId: Long) : super(receiverId, CRC)
constructor(data: NetBuffer) : super(CRC) {
decode(data)
}
companion object {
const val CRC = 0x0239
}
var designerId = 0L
var clientId = 0L
var salonId = 0L
var hairChanged = false
var hair = ""
var hairCustomization = CustomizationString()
var designType = 0
var startingTime = 0
var moneyDemanded = 0
var moneyOffered = 0
var designerCommitted = false
var clientAccepted = false
var statMigration = false
var bodySkillMod = 0
var faceSkillMod = 0
var markingsSkillMod = 0
var hairSkillMod = 0
var morphParameters: MutableList<MorphParameter> = ArrayList()
var indexParameters: MutableList<IndexParameter> = ArrayList()
var holoemote = ""
override fun decode(data: NetBuffer) {
decodeHeader(data)
designerId = data.long
clientId = data.long
salonId = data.long
hairChanged = data.boolean
hair = data.ascii
hairCustomization.decode(data)
designType = data.int
startingTime = data.int
moneyDemanded = data.int
moneyOffered = data.int
designerCommitted = data.boolean
clientAccepted = data.int != 0
statMigration = data.boolean
bodySkillMod = data.int
faceSkillMod = data.int
markingsSkillMod = data.int
hairSkillMod = data.int
morphParameters = data.getList(MorphParameter::class.java)
indexParameters = data.getList(IndexParameter::class.java)
holoemote = data.ascii
}
override fun encode(): NetBuffer {
val data = NetBuffer.allocate(HEADER_LENGTH + 26)
encodeHeader(data)
data.addLong(designerId)
data.addLong(clientId)
data.addLong(salonId)
data.addBoolean(hairChanged)
data.addAscii(hair)
data.addEncodable(hairCustomization)
data.addInt(designType)
data.addInt(startingTime)
data.addInt(moneyDemanded)
data.addInt(moneyOffered)
data.addBoolean(designerCommitted)
data.addInt(if (clientAccepted) 1 else 0)
data.addBoolean(statMigration)
data.addInt(bodySkillMod)
data.addInt(faceSkillMod)
data.addInt(markingsSkillMod)
data.addInt(hairSkillMod)
data.addList(morphParameters)
data.addList(indexParameters)
data.addAscii(holoemote)
return data
}
}

View File

@@ -0,0 +1,40 @@
package com.projectswg.common.network.packets.swg.zone.object_controller
import com.projectswg.common.network.NetBuffer
class ImageDesignStartMessage : ObjectController {
constructor(receiverId: Long) : super(receiverId, CRC)
constructor(data: NetBuffer) : super(CRC) {
decode(data)
}
companion object {
const val CRC = 0x023A
}
var designerId = 0L
var clientId = 0L
var salonId = 0L
var holoEmote = ""
override fun decode(data: NetBuffer) {
decodeHeader(data)
designerId = data.long
clientId = data.long
salonId = data.long
holoEmote = data.ascii
}
override fun encode(): NetBuffer {
val data = NetBuffer.allocate(HEADER_LENGTH + 26 + holoEmote.length)
encodeHeader(data)
data.addLong(designerId)
data.addLong(clientId)
data.addLong(salonId)
data.addAscii(holoEmote)
return data
}
}

View File

@@ -0,0 +1,27 @@
package com.projectswg.common.network.packets.swg.zone.object_controller
import com.projectswg.common.encoding.Encodable
import com.projectswg.common.network.NetBuffer
class IndexParameter : Encodable {
var name = ""
var value = 0
override fun decode(data: NetBuffer) {
name = data.ascii
value = data.int
}
override fun encode(): ByteArray {
val data = NetBuffer.allocate(length)
data.addAscii(name)
data.addInt(value)
return data.array()
}
override val length: Int
get() = 6 + name.length
}

View File

@@ -0,0 +1,27 @@
package com.projectswg.common.network.packets.swg.zone.object_controller
import com.projectswg.common.encoding.Encodable
import com.projectswg.common.network.NetBuffer
class MorphParameter : Encodable {
var name = ""
var value = 0f
override fun decode(data: NetBuffer) {
name = data.ascii
value = data.float
}
override fun encode(): ByteArray {
val data = NetBuffer.allocate(length)
data.addAscii(name)
data.addFloat(value)
return data.array()
}
override val length: Int
get() = 6 + name.length
}

View File

@@ -40,6 +40,7 @@ import com.projectswg.common.network.NetBuffer;
import com.projectswg.common.network.packets.SWGPacket;
import com.projectswg.common.network.packets.swg.zone.object_controller.combat.CombatAction;
import com.projectswg.common.network.packets.swg.zone.object_controller.combat.CombatSpam;
import org.jetbrains.annotations.NotNull;
public abstract class ObjectController extends SWGPacket {
@@ -72,7 +73,6 @@ public abstract class ObjectController extends SWGPacket {
Log.e("Attempting to process invalid controller");
objectId = data.getLong();
data.getInt();
return;
}
protected final void encodeHeader(NetBuffer data) {
@@ -85,7 +85,7 @@ public abstract class ObjectController extends SWGPacket {
}
@Override
public abstract void decode(NetBuffer data);
public abstract void decode(@NotNull NetBuffer data);
@Override
public abstract NetBuffer encode();
@@ -132,6 +132,9 @@ public abstract class ObjectController extends SWGPacket {
case 0x01DB: return new BiographyUpdate(data);
case 0x0229: return new BuffAddUpdate(data);
case 0x022A: return new BuffRemoveUpdate(data);
case ImageDesignStartMessage.CRC: return new ImageDesignStartMessage(data);
case ImageDesignChangeMessage.CRC: return new ImageDesignChangeMessage(data);
case ImageDesignEndMessage.CRC: return new ImageDesignEndMessage(data);
case 0x043D: return new GroupOpenLotteryWindow(data);
case 0x043E: return new GroupCloseLotteryWindow(data);
case 0x0440: return new GroupRequestLotteryItems(data);