feat: add secure troop management
This commit is contained in:
@@ -50,11 +50,31 @@ const zTroopJoin = z.object({
|
||||
troopId: zFiniteNumber,
|
||||
});
|
||||
|
||||
const zTroopCreate = z.object({
|
||||
type: z.literal('troopCreate'),
|
||||
generalId: zFiniteNumber,
|
||||
troopName: z.string(),
|
||||
});
|
||||
|
||||
const zTroopExit = z.object({
|
||||
type: z.literal('troopExit'),
|
||||
generalId: zFiniteNumber,
|
||||
});
|
||||
|
||||
const zTroopKick = z.object({
|
||||
type: z.literal('troopKick'),
|
||||
generalId: zFiniteNumber,
|
||||
troopId: zFiniteNumber,
|
||||
targetGeneralId: zFiniteNumber,
|
||||
});
|
||||
|
||||
const zTroopRename = z.object({
|
||||
type: z.literal('troopRename'),
|
||||
generalId: zFiniteNumber,
|
||||
troopId: zFiniteNumber,
|
||||
troopName: z.string(),
|
||||
});
|
||||
|
||||
const zDieOnPrestart = z.object({
|
||||
type: z.literal('dieOnPrestart'),
|
||||
generalId: zFiniteNumber,
|
||||
@@ -262,6 +282,14 @@ const normalizeTroopJoin: CommandNormalizer<'troopJoin'> = (envelope) => {
|
||||
return { ...command, requestId: envelope.requestId };
|
||||
};
|
||||
|
||||
const normalizeTroopCreate: CommandNormalizer<'troopCreate'> = (envelope) => {
|
||||
const command = parseWith(zTroopCreate, envelope.command);
|
||||
if (!command) {
|
||||
return null;
|
||||
}
|
||||
return { ...command, requestId: envelope.requestId };
|
||||
};
|
||||
|
||||
const normalizeTroopExit: CommandNormalizer<'troopExit'> = (envelope) => {
|
||||
const command = parseWith(zTroopExit, envelope.command);
|
||||
if (!command) {
|
||||
@@ -270,6 +298,22 @@ const normalizeTroopExit: CommandNormalizer<'troopExit'> = (envelope) => {
|
||||
return { ...command, requestId: envelope.requestId };
|
||||
};
|
||||
|
||||
const normalizeTroopKick: CommandNormalizer<'troopKick'> = (envelope) => {
|
||||
const command = parseWith(zTroopKick, envelope.command);
|
||||
if (!command) {
|
||||
return null;
|
||||
}
|
||||
return { ...command, requestId: envelope.requestId };
|
||||
};
|
||||
|
||||
const normalizeTroopRename: CommandNormalizer<'troopRename'> = (envelope) => {
|
||||
const command = parseWith(zTroopRename, envelope.command);
|
||||
if (!command) {
|
||||
return null;
|
||||
}
|
||||
return { ...command, requestId: envelope.requestId };
|
||||
};
|
||||
|
||||
const normalizeDieOnPrestart: CommandNormalizer<'dieOnPrestart'> = (envelope) => {
|
||||
const command = parseWith(zDieOnPrestart, envelope.command);
|
||||
if (!command) {
|
||||
@@ -445,8 +489,11 @@ const normalizeShutdown: CommandNormalizer<'shutdown'> = (envelope) => {
|
||||
const normalizers: CommandNormalizerMap = {
|
||||
auctionFinalize: normalizeAuctionFinalize,
|
||||
auctionBid: normalizeAuctionBid,
|
||||
troopCreate: normalizeTroopCreate,
|
||||
troopJoin: normalizeTroopJoin,
|
||||
troopExit: normalizeTroopExit,
|
||||
troopKick: normalizeTroopKick,
|
||||
troopRename: normalizeTroopRename,
|
||||
dieOnPrestart: normalizeDieOnPrestart,
|
||||
buildNationCandidate: normalizeBuildNationCandidate,
|
||||
instantRetreat: normalizeInstantRetreat,
|
||||
|
||||
Reference in New Issue
Block a user