81 lines
1.7 KiB
ActionScript
81 lines
1.7 KiB
ActionScript
import construction.Constructible;
|
|
import resources;
|
|
|
|
tidy class ExportConstructible : Constructible {
|
|
Object@ exportTo;
|
|
double givenLabor = 0.0;
|
|
|
|
ExportConstructible(Object& obj, Object& exportTo) {
|
|
@this.exportTo = exportTo;
|
|
totalLabor = INT_MAX;
|
|
}
|
|
|
|
ExportConstructible(SaveFile& file) {
|
|
Constructible::load(file);
|
|
file >> exportTo;
|
|
file >> givenLabor;
|
|
}
|
|
|
|
bool repeat(Object& obj) {
|
|
return false;
|
|
}
|
|
|
|
void save(SaveFile& file) {
|
|
Constructible::save(file);
|
|
file << exportTo;
|
|
file << givenLabor;
|
|
}
|
|
|
|
ConstructibleType get_type() {
|
|
return CT_Export;
|
|
}
|
|
|
|
string get_name() {
|
|
return format(locale::EXPORT_LABOR, exportTo.name);
|
|
}
|
|
|
|
bool start(Object& obj) {
|
|
if(started)
|
|
return true;
|
|
if(!Constructible::start(obj))
|
|
return false;
|
|
return true;
|
|
}
|
|
|
|
void remove(Object& obj) {
|
|
Constructible::remove(obj);
|
|
if(givenLabor != 0)
|
|
exportTo.modLaborIncome(-givenLabor);
|
|
}
|
|
|
|
bool get_canComplete() {
|
|
return false;
|
|
}
|
|
|
|
TickResult tick(Object& obj, double time) override {
|
|
if(!exportTo.valid || !obj.canExportLabor || !exportTo.canImportLabor || exportTo.owner !is obj.owner)
|
|
return TR_Remove;
|
|
double income = max(obj.laborIncome, curLabor / max(time, 0.001));
|
|
if(obj.queuePosition(id) != 0)
|
|
income = 0.0;
|
|
curLabor = 0;
|
|
if(income != givenLabor) {
|
|
exportTo.modLaborIncome(income - givenLabor);
|
|
givenLabor = income;
|
|
}
|
|
return exportTo.isUsingLabor ? TR_UsedLabor : TR_UnusedLabor;
|
|
}
|
|
|
|
void move(Object& obj, uint toPosition) {
|
|
if(toPosition != 0 && givenLabor > 0 && exportTo.valid) {
|
|
exportTo.modLaborIncome(-givenLabor);
|
|
givenLabor = 0;
|
|
}
|
|
}
|
|
|
|
void write(Message& msg) {
|
|
Constructible::write(msg);
|
|
msg << exportTo;
|
|
}
|
|
};
|