Files
starruler-linux/scripts/server/orders/OddityGateOrder.as
T
2018-07-17 14:15:37 +02:00

64 lines
1.0 KiB
ActionScript

import orders.Order;
tidy class OddityGateOrder : Order {
Oddity@ target;
int moveId = -1;
OddityGateOrder(Oddity& targ) {
@target = targ;
moveId = -1;
}
OddityGateOrder(SaveFile& msg) {
Order::load(msg);
msg >> target;
msg >> moveId;
}
void save(SaveFile& msg) {
Order::save(msg);
msg << target;
msg << moveId;
}
OrderType get_type() {
return OT_OddityGate;
}
string get_name() {
return "Warp with " + target.name;
}
bool get_hasMovement() {
return true;
}
vec3d getMoveDestination(const Object& obj) {
return target.position;
}
OrderStatus tick(Object& obj, double time) {
if(!obj.hasMover)
return OS_COMPLETED;
if(!target.isGate())
return OS_COMPLETED;
if(obj.moveTo(target, moveId, target.radius + obj.radius, enterOrbit=false)) {
vec3d toPos = target.getGateDest();
if(toPos == vec3d())
return OS_COMPLETED;
if(obj.hasLeaderAI) {
obj.teleportTo(toPos);
}
else {
obj.position = toPos;
obj.wake();
}
return OS_COMPLETED;
}
return OS_BLOCKING;
}
};