bool BWrepAction::ProcessActionParameters(const unsigned char * ¤t, int& read, unsigned char& size)
{
switch(m_ordertype)
{
case 0x00: //0x00
case 0x01:
case 0x02:
case 0x03:
case 0x04:
case 0x05: //0x05
case 0x06:
case 0x07:
case 0x08:
break;
case 0x09:
{
//select
int bytes = 1+((int)*current)*sizeof(unsigned short);
ASSIGNCLASSV(Select,bytes);
}
case 0x0A:
{
//shift select
int bytes = 1+((int)*current)*sizeof(unsigned short);
ASSIGNCLASSV(ShiftSelect,bytes);
}
case 0x0B:
{
//shift deselect
int bytes = 1+((int)*current)*sizeof(unsigned short);
ASSIGNCLASSV(ShiftDeselect,bytes);
}
case 0x0C: ASSIGNCLASS(Build);
case 0x0D: ASSIGNCLASS(Vision);
case 0x0E: ASSIGNCLASS(Ally);
case 0x0f:
case 0x10: //0x10
case 0x11:
case 0x12:
break;
case 0x13: ASSIGNCLASS(HotKey);
case 0x14: ASSIGNCLASS(Move);
case 0x15: ASSIGNCLASS(Attack);
case 0x16:
case 0x17:
break;
case 0x18: ASSIGNCLASS_NP(Cancel);
case 0x19: ASSIGNCLASS_NP(CancelHatch);
case 0x1A: ASSIGNCLASS(Stop);
case 0x1b:
case 0x1c:
case 0x1d:
break;
case 0x1E: ASSIGNCLASS(ReturnCargo);
case 0x1F: ASSIGNCLASS(Train);
case 0x20: ASSIGNCLASS(CancelTrain);
case 0x21: ASSIGNCLASSV(Cloak,size);
case 0x22: ASSIGNCLASSV(Decloak,size);
case 0x23: ASSIGNCLASS(Hatch);
case 0x24:
break;
case 0x25: ASSIGNCLASS(Unsiege);
case 0x26: ASSIGNCLASS(Siege);
case 0x27: ASSIGNCLASS_NP(BuildInterceptor);
case 0x28: ASSIGNCLASS(UnloadAll);
case 0x29: ASSIGNCLASS(Unload);
case 0x2A: ASSIGNCLASS_NP(MergeArchon);
case 0x2B: ASSIGNCLASS(HoldPosition);
case 0x2C: ASSIGNCLASS(Burrow);
case 0x2D: ASSIGNCLASS(Unburrow);
case 0x2e: ASSIGNCLASS_NP(CancelNuke);
case 0x2f: ASSIGNCLASS(Lift);
case 0x30: ASSIGNCLASS(Research);
case 0x31: ASSIGNCLASS_NP(CancelResearch);
case 0x32: ASSIGNCLASS(Upgrade);
case 0x33:
case 0x34:
break;
case 0x35: ASSIGNCLASS(Morph);
case 0x36: ASSIGNCLASS_NP(Stimpack);
case 0x37:
case 0x38:
case 0x39:
case 0x3a: //0x3a
case 0x3b:
case 0x3c:
case 0x3d:
case 0x3e:
case 0x3f:
case 0x40: //0x40
case 0x41:
case 0x42:
case 0x43:
case 0x44:
case 0x45: //0x45
case 0x46:
case 0x47:
case 0x48:
case 0x49:
case 0x4a: //0x4a
case 0x4b:
case 0x4c:
case 0x4d:
case 0x4e:
case 0x4f:
case 0x50: //0x50
case 0x51:
case 0x52:
case 0x53:
case 0x54:
case 0x55:
case 0x56:
break;
case 0x57:ASSIGNCLASS(LeftGame);
case 0x58:
case 0x59:
break;
case 0x5A:ASSIGNCLASS_NP(MergeDarkArchon);
default:
assert(0);
}
//assert(m_ordertype==0x33 || m_ordertype==0x34 || m_ordertype==0x0F || m_ordertype==0x12);
ASSIGNCLASSV(Unknown,size);
return false;
}