From 6b5da07aa70976b333b8a5a03e8e5af95f9e4dcb Mon Sep 17 00:00:00 2001 From: johns <> Date: Sun, 25 Feb 2001 23:21:23 +0000 Subject: [PATCH] Moved resources subtraction to command execution. --- src/action/command.cpp | 44 ++++++++++++++++++++++++++++++++---------- 1 file changed, 34 insertions(+), 10 deletions(-) diff --git a/src/action/command.cpp b/src/action/command.cpp index cc5d04bba..8feb06cca 100644 --- a/src/action/command.cpp +++ b/src/action/command.cpp @@ -807,15 +807,23 @@ global void CommandReturnGoods(Unit* unit,int flush) ** Building starts training an unit. ** ** @param unit pointer to unit. -** @param what unit type to train. +** @param type unit type to train. ** @param flush if true, flush command queue. */ -global void CommandTrainUnit(Unit* unit,UnitType* what,int flush) +global void CommandTrainUnit(Unit* unit,UnitType* type,int flush) { #ifdef NEW_ORDERS DebugLevel0Fn("FIXME: not written\n"); #else + // + // Check if enough resources remains? (NETWORK!) + // + if( !PlayerCheckFood(unit->Player,type) + || PlayerCheckUnitType(unit->Player,type) ) { + return; + } + PlayerSubUnitType(unit->Player,type); // // Not already training? @@ -839,10 +847,10 @@ global void CommandTrainUnit(Unit* unit,UnitType* what,int flush) // if( command->Data.Train.Count>=MAX_UNIT_TRAIN ) { DebugLevel0Fn("Unit queue full!\n"); - PlayerAddUnitType(unit->Player,what); + //PlayerAddUnitType(unit->Player,type); return; } - command->Data.Train.What[command->Data.Train.Count++]=what; + command->Data.Train.What[command->Data.Train.Count++]=type; } else { // @@ -850,10 +858,10 @@ global void CommandTrainUnit(Unit* unit,UnitType* what,int flush) // if( unit->Command.Data.Train.Count>=MAX_UNIT_TRAIN ) { DebugLevel0Fn("Unit queue full!\n"); - PlayerAddUnitType(unit->Player,what); + PlayerAddUnitType(unit->Player,type); return; } - unit->Command.Data.Train.What[unit->Command.Data.Train.Count++]=what; + unit->Command.Data.Train.What[unit->Command.Data.Train.Count++]=type; // // Update interface. @@ -923,10 +931,10 @@ global void CommandCancelTraining(Unit* unit,int slot) ** Building starts upgrading to. ** ** @param unit pointer to unit. -** @param what upgrade to what +** @param type upgrade to type ** @param flush if true, flush command queue. */ -global void CommandUpgradeTo(Unit* unit,UnitType* what,int flush) +global void CommandUpgradeTo(Unit* unit,UnitType* type,int flush) { #ifdef NEW_ORDERS Order* order; @@ -939,14 +947,22 @@ global void CommandUpgradeTo(Unit* unit,UnitType* what,int flush) order->Y=-1; order->Goal=NoUnitP; order->Type=NULL; - order->Arg1=what; + order->Arg1=type; #else + // + // Check if enough resources remains? (NETWORK!) + // + if( PlayerCheckUnitType(unit->Player,type) ) { + return; + } + PlayerSubUnitType(unit->Player,type); + unit->NextCount=1; unit->NextFlush=1; unit->NextCommand[0].Action=UnitActionUpgradeTo; unit->NextCommand[0].Data.UpgradeTo.Ticks=0; - unit->NextCommand[0].Data.UpgradeTo.What=what; + unit->NextCommand[0].Data.UpgradeTo.What=type; unit->Wait=1; // FIXME: correct this unit->Reset=1; @@ -1023,6 +1039,14 @@ global void CommandResearch(Unit* unit,Upgrade* what,int flush) order->Type=NULL; order->Arg1=what; #else + // + // Check if enough resources remains? (NETWORK!) + // + if( PlayerCheckCosts(unit->Player,what->Costs) ) { + return; + } + PlayerSubCosts(unit->Player,what->Costs); + unit->NextCount=1; unit->NextFlush=1;