73
75
case PLCMD_STARTSTOPBUILDING: return new Cmd_StartStopBuilding (des);
74
76
case PLCMD_ENHANCEBUILDING: return new Cmd_EnhanceBuilding (des);
75
77
case PLCMD_SETWAREPRIORITY: return new Cmd_SetWarePriority (des);
76
case PLCMD_SETTARGETQUANTITY: return new Cmd_SetTargetQuantity (des);
77
case PLCMD_RESETTARGETQUANTITY: return new Cmd_ResetTargetQuantity (des);
78
case PLCMD_SETWARETARGETQUANTITY:
79
return new Cmd_SetWareTargetQuantity (des);
80
case PLCMD_RESETWARETARGETQUANTITY:
81
return new Cmd_ResetWareTargetQuantity (des);
82
case PLCMD_SETWORKERTARGETQUANTITY:
83
return new Cmd_SetWareTargetQuantity (des);
84
case PLCMD_RESETWORKERTARGETQUANTITY:
85
return new Cmd_ResetWareTargetQuantity (des);
78
86
case PLCMD_CHANGETRAININGOPTIONS: return new Cmd_ChangeTrainingOptions(des);
79
87
case PLCMD_DROPSOLDIER: return new Cmd_DropSoldier (des);
80
88
case PLCMD_CHANGESOLDIERCAPACITY: return new Cmd_ChangeSoldierCapacity(des);
687
695
m_permanent(_permanent), m_temporary(_temporary)
690
void Cmd_SetTargetQuantity::execute(Game & game)
698
void Cmd_SetWareTargetQuantity::execute(Game & game)
692
700
Player & player = game.player(sender());
694
702
(economy () < player.get_nr_economies() and
695
703
ware_type() < player.tribe().get_nrwares())
697
player.get_economy_by_number(economy())->set_target_quantity
704
player.get_economy_by_number(economy())->set_ware_target_quantity
698
705
(ware_type(), m_permanent, m_temporary, duetime());
702
#define PLAYER_CMD_SETTARGETQUANTITY_VERSION 1
708
#define PLAYER_CMD_SETWARETARGETQUANTITY_VERSION 1
704
void Cmd_SetTargetQuantity::Write
710
void Cmd_SetWareTargetQuantity::Write
705
711
(FileWrite & fw, Editor_Game_Base & egbase, Map_Map_Object_Saver & mos)
707
fw.Unsigned16(PLAYER_CMD_SETTARGETQUANTITY_VERSION);
713
fw.Unsigned16(PLAYER_CMD_SETWARETARGETQUANTITY_VERSION);
708
714
Cmd_ChangeTargetQuantity::Write(fw, egbase, mos);
709
715
fw.Unsigned32(m_permanent);
710
716
fw.Unsigned32(m_temporary);
713
void Cmd_SetTargetQuantity::Read
719
void Cmd_SetWareTargetQuantity::Read
714
720
(FileRead & fr, Editor_Game_Base & egbase, Map_Map_Object_Loader & mol)
717
723
uint16_t const packet_version = fr.Unsigned16();
718
if (packet_version == PLAYER_CMD_SETTARGETQUANTITY_VERSION) {
724
if (packet_version == PLAYER_CMD_SETWARETARGETQUANTITY_VERSION) {
719
725
Cmd_ChangeTargetQuantity::Read(fr, egbase, mol);
720
726
m_permanent = fr.Unsigned32();
721
727
m_temporary = fr.Unsigned32();
723
729
throw game_data_error
724
730
(_("unknown/unhandled version %u"), packet_version);
725
731
} catch (_wexception const & e) {
726
throw game_data_error(_("set target quantity: %s"), e.what());
732
throw game_data_error(_("set ware target quantity: %s"), e.what());
730
Cmd_SetTargetQuantity::Cmd_SetTargetQuantity(StreamRead & des)
736
Cmd_SetWareTargetQuantity::Cmd_SetWareTargetQuantity(StreamRead & des)
732
738
Cmd_ChangeTargetQuantity(des),
733
739
m_permanent (des.Unsigned32()),
734
740
m_temporary (des.Unsigned32())
737
void Cmd_SetTargetQuantity::serialize(StreamWrite & ser)
743
void Cmd_SetWareTargetQuantity::serialize(StreamWrite & ser)
739
ser.Unsigned8 (PLCMD_SETTARGETQUANTITY);
745
ser.Unsigned8 (PLCMD_SETWARETARGETQUANTITY);
740
746
Cmd_ChangeTargetQuantity::serialize(ser);
741
747
ser.Unsigned32(m_permanent);
742
748
ser.Unsigned32(m_temporary);
746
Cmd_ResetTargetQuantity::Cmd_ResetTargetQuantity
752
Cmd_ResetWareTargetQuantity::Cmd_ResetWareTargetQuantity
747
753
(int32_t const _duetime, Player_Number const _sender,
748
754
uint32_t const _economy,
749
755
Ware_Index const _ware_type)
762
768
int32_t const count =
763
769
tribe.get_ware_descr(ware_type())->default_target_quantity();
764
player.get_economy_by_number(economy())->set_target_quantity
770
player.get_economy_by_number(economy())->set_ware_target_quantity
765
771
(ware_type(), count, count, 0);
769
#define PLAYER_CMD_RESETTARGETQUANTITY_VERSION 1
775
#define PLAYER_CMD_RESETWARETARGETQUANTITY_VERSION 1
771
void Cmd_ResetTargetQuantity::Write
777
void Cmd_ResetWareTargetQuantity::Write
772
778
(FileWrite & fw, Editor_Game_Base & egbase, Map_Map_Object_Saver & mos)
774
fw.Unsigned16(PLAYER_CMD_SETTARGETQUANTITY_VERSION);
780
fw.Unsigned16(PLAYER_CMD_RESETWARETARGETQUANTITY_VERSION);
775
781
Cmd_ChangeTargetQuantity::Write(fw, egbase, mos);
778
void Cmd_ResetTargetQuantity::Read
784
void Cmd_ResetWareTargetQuantity::Read
779
785
(FileRead & fr, Editor_Game_Base & egbase, Map_Map_Object_Loader & mol)
782
788
uint16_t const packet_version = fr.Unsigned16();
783
if (packet_version == PLAYER_CMD_RESETTARGETQUANTITY_VERSION) {
789
if (packet_version == PLAYER_CMD_RESETWARETARGETQUANTITY_VERSION)
784
790
Cmd_ChangeTargetQuantity::Read(fr, egbase, mol);
786
792
throw game_data_error
787
793
(_("unknown/unhandled version %u"), packet_version);
788
794
} catch (_wexception const & e) {
793
Cmd_ResetTargetQuantity::Cmd_ResetTargetQuantity(StreamRead & des)
794
: Cmd_ChangeTargetQuantity(des)
797
void Cmd_ResetTargetQuantity::serialize(StreamWrite & ser)
799
ser.Unsigned8 (PLCMD_RESETTARGETQUANTITY);
799
Cmd_ResetWareTargetQuantity::Cmd_ResetWareTargetQuantity(StreamRead & des)
800
: Cmd_ChangeTargetQuantity(des)
803
void Cmd_ResetWareTargetQuantity::serialize(StreamWrite & ser)
805
ser.Unsigned8 (PLCMD_RESETWARETARGETQUANTITY);
806
Cmd_ChangeTargetQuantity::serialize(ser);
810
Cmd_SetWorkerTargetQuantity::Cmd_SetWorkerTargetQuantity
811
(int32_t const _duetime, Player_Number const _sender,
812
uint32_t const _economy,
813
Ware_Index const _ware_type,
814
uint32_t const _permanent, uint32_t const _temporary)
816
Cmd_ChangeTargetQuantity(_duetime, _sender, _economy, _ware_type),
817
m_permanent(_permanent), m_temporary(_temporary)
820
void Cmd_SetWorkerTargetQuantity::execute(Game & game)
822
Player & player = game.player(sender());
824
(economy () < player.get_nr_economies() and
825
ware_type() < player.tribe().get_nrwares())
826
player.get_economy_by_number(economy())->set_worker_target_quantity
827
(ware_type(), m_permanent, m_temporary, duetime());
830
#define PLAYER_CMD_SETWORKERTARGETQUANTITY_VERSION 1
832
void Cmd_SetWorkerTargetQuantity::Write
833
(FileWrite & fw, Editor_Game_Base & egbase, Map_Map_Object_Saver & mos)
835
fw.Unsigned16(PLAYER_CMD_SETWORKERTARGETQUANTITY_VERSION);
836
Cmd_ChangeTargetQuantity::Write(fw, egbase, mos);
837
fw.Unsigned32(m_permanent);
838
fw.Unsigned32(m_temporary);
841
void Cmd_SetWorkerTargetQuantity::Read
842
(FileRead & fr, Editor_Game_Base & egbase, Map_Map_Object_Loader & mol)
845
uint16_t const packet_version = fr.Unsigned16();
846
if (packet_version == PLAYER_CMD_SETWORKERTARGETQUANTITY_VERSION) {
847
Cmd_ChangeTargetQuantity::Read(fr, egbase, mol);
848
m_permanent = fr.Unsigned32();
849
m_temporary = fr.Unsigned32();
851
throw game_data_error
852
(_("unknown/unhandled version %u"), packet_version);
853
} catch (_wexception const & e) {
854
throw game_data_error(_("set worker target quantity: %s"), e.what());
858
Cmd_SetWorkerTargetQuantity::Cmd_SetWorkerTargetQuantity(StreamRead & des)
860
Cmd_ChangeTargetQuantity(des),
861
m_permanent (des.Unsigned32()),
862
m_temporary (des.Unsigned32())
865
void Cmd_SetWorkerTargetQuantity::serialize(StreamWrite & ser)
867
ser.Unsigned8 (PLCMD_SETWORKERTARGETQUANTITY);
868
Cmd_ChangeTargetQuantity::serialize(ser);
869
ser.Unsigned32(m_permanent);
870
ser.Unsigned32(m_temporary);
874
Cmd_ResetWorkerTargetQuantity::Cmd_ResetWorkerTargetQuantity
875
(int32_t const _duetime, Player_Number const _sender,
876
uint32_t const _economy,
877
Ware_Index const _ware_type)
879
Cmd_ChangeTargetQuantity(_duetime, _sender, _economy, _ware_type)
882
void Cmd_ResetWorkerTargetQuantity::execute(Game & game)
884
Player & player = game.player(sender());
885
Tribe_Descr const & tribe = player.tribe();
887
(economy () < player.get_nr_economies() and
888
ware_type() < tribe.get_nrwares())
890
int32_t const count =
891
tribe.get_ware_descr(ware_type())->default_target_quantity();
892
player.get_economy_by_number(economy())->set_worker_target_quantity
893
(ware_type(), count, count, 0);
897
#define PLAYER_CMD_RESETWORKERTARGETQUANTITY_VERSION 1
899
void Cmd_ResetWorkerTargetQuantity::Write
900
(FileWrite & fw, Editor_Game_Base & egbase, Map_Map_Object_Saver & mos)
902
fw.Unsigned16(PLAYER_CMD_RESETWORKERTARGETQUANTITY_VERSION);
903
Cmd_ChangeTargetQuantity::Write(fw, egbase, mos);
906
void Cmd_ResetWorkerTargetQuantity::Read
907
(FileRead & fr, Editor_Game_Base & egbase, Map_Map_Object_Loader & mol)
910
uint16_t const packet_version = fr.Unsigned16();
911
if (packet_version == PLAYER_CMD_RESETWORKERTARGETQUANTITY_VERSION) {
912
Cmd_ChangeTargetQuantity::Read(fr, egbase, mol);
914
throw game_data_error
915
(_("unknown/unhandled version %u"), packet_version);
916
} catch (_wexception const & e) {
917
throw game_data_error("reset worker target quantity: %s", e.what());
921
Cmd_ResetWorkerTargetQuantity::Cmd_ResetWorkerTargetQuantity(StreamRead & des)
922
: Cmd_ChangeTargetQuantity(des)
925
void Cmd_ResetWorkerTargetQuantity::serialize(StreamWrite & ser)
927
ser.Unsigned8 (PLCMD_RESETWORKERTARGETQUANTITY);
800
928
Cmd_ChangeTargetQuantity::serialize(ser);