Open source Star Ruler 2 source code!
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
import orbitals;
|
||||
from nodes.FleetPlane import SHOW_FLEET_PLANES;
|
||||
|
||||
const double MAX_SIZE = 500.0;
|
||||
|
||||
final class OrbitalNodeScript {
|
||||
const Orbital@ obj;
|
||||
const OrbitalModule@ def;
|
||||
double fleetPlane = 0.0;
|
||||
|
||||
OrbitalNodeScript(Node& node) {
|
||||
node.transparent = true;
|
||||
node.memorable = true;
|
||||
}
|
||||
|
||||
void establish(Node& node, Orbital& orbital, uint type) {
|
||||
@obj = orbital;
|
||||
@def = getOrbitalModule(type);
|
||||
}
|
||||
|
||||
void setFleetPlane(double radius) {
|
||||
fleetPlane = radius;
|
||||
}
|
||||
|
||||
void render(Node& node) {
|
||||
if(def is null)
|
||||
return;
|
||||
|
||||
if(fleetPlane != 0 && node.sortDistance < 2000.0 && node.sortDistance >= 150.0 && SHOW_FLEET_PLANES) {
|
||||
Color color(0xffffff14);
|
||||
if(node.sortDistance < 250.0)
|
||||
color.a = double(color.a) * (node.sortDistance - 150.0) / 100.0;
|
||||
renderPlane(material::FleetCircle, node.abs_position, fleetPlane, color);
|
||||
}
|
||||
|
||||
node.applyTransform();
|
||||
|
||||
def.material.switchTo();
|
||||
def.model.draw();
|
||||
|
||||
/*if(obj.Shield > 0) {*/
|
||||
/* shader::SHIELD_STRENGTH = float(obj.Shield / obj.MaxShield);*/
|
||||
/* material::Shield.switchTo();*/
|
||||
/* def.model.draw();*/
|
||||
/*}*/
|
||||
|
||||
undoTransform();
|
||||
|
||||
if(node.sortDistance > 600.0 && def.distantIcon.valid) {
|
||||
double size = obj.radius * def.iconSize;
|
||||
size *= node.sortDistance * 0.09;
|
||||
size = min(size, MAX_SIZE);
|
||||
if(obj.selected)
|
||||
size *= 1.1;
|
||||
|
||||
Empire@ owner = obj.owner;
|
||||
Color col;
|
||||
if(owner !is null)
|
||||
col = owner.color;
|
||||
renderBillboard(def.distantIcon.sheet, def.distantIcon.index, node.abs_position, size, 0.0, col);
|
||||
}
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user