100 lines
2.2 KiB
ActionScript
100 lines
2.2 KiB
ActionScript
import ftl;
|
|
import empire_data;
|
|
|
|
uint majorEmpireCount = 0;
|
|
|
|
uint getMajorEmpireCount() {
|
|
return majorEmpireCount;
|
|
}
|
|
|
|
void recvPeriodic(Empire& emp, Message& msg) {
|
|
if(!msg.readBit())
|
|
return;
|
|
msg >> emp.visionMask >> emp.hostileMask;
|
|
emp.cacheVision();
|
|
msg >> emp.GlobalLoyalty.value;
|
|
emp.Victory = msg.readSignedSmall();
|
|
emp.readResources(msg);
|
|
if(msg.readBit())
|
|
emp.readAbilityDelta(msg);
|
|
emp.readNotifications(msg, true);
|
|
emp.readResearch(msg);
|
|
emp.readInfluenceManager(msg);
|
|
emp.readAttributes(msg);
|
|
emp.readObjects(msg);
|
|
emp.readSyncedStates(msg);
|
|
emp.readEvents(msg);
|
|
emp.readDelta(msg);
|
|
emp.readAttitudes(msg, false);
|
|
}
|
|
|
|
void syncInitial(Empire& emp, Message& msg) {
|
|
emp.readNotifications(msg, false);
|
|
emp.readInfluenceManager(msg);
|
|
emp.readAttributes(msg);
|
|
emp.readObjects(msg);
|
|
emp.readResearch(msg);
|
|
emp.readSyncedStates(msg);
|
|
emp.readAbilities(msg);
|
|
emp.readTraits(msg);
|
|
emp.readAttitudes(msg, true);
|
|
emp.readEvents(msg);
|
|
|
|
msg >> emp.major;
|
|
msg >> emp.backgroundDef;
|
|
msg >> emp.portraitDef;
|
|
msg >> emp.flagDef;
|
|
msg >> emp.flagID;
|
|
msg >> emp.RaceName;
|
|
msg >> emp.ColonizerModel;
|
|
msg >> emp.ColonizerMaterial;
|
|
|
|
@emp.background = getMaterial(emp.backgroundDef);
|
|
|
|
auto@ flag = getEmpireFlag(emp.flagDef);
|
|
if(flag is null)
|
|
@flag = getEmpireFlag(emp.id % getEmpireFlagCount());
|
|
@emp.flag = flag.flag;
|
|
|
|
@emp.portrait = getMaterial(emp.portraitDef);
|
|
if(emp.portrait is material::error)
|
|
@emp.portrait = getEmpirePortrait(randomi(0, getEmpirePortraitCount()-1)).portrait;
|
|
}
|
|
|
|
void recvPeriodic(Message& msg) {
|
|
uint cnt = getEmpireCount();
|
|
for(uint i = 0; i < cnt; ++i)
|
|
recvPeriodic(getEmpire(i), msg);
|
|
}
|
|
|
|
void init() {
|
|
spectatorEmpire.visionMask = 0;
|
|
spectatorEmpire.ContactMask.value = int(~0);
|
|
}
|
|
|
|
void tick(double time) {
|
|
uint cnt = getEmpireCount();
|
|
for(uint i = 0; i < cnt; ++i) {
|
|
Empire@ emp = getEmpire(i);
|
|
emp.influenceTick(time);
|
|
}
|
|
}
|
|
|
|
void syncInitial(Message& msg) {
|
|
uint cnt = getEmpireCount();
|
|
for(uint i = 0; i < cnt; ++i) {
|
|
Empire@ emp = getEmpire(i);
|
|
syncInitial(emp, msg);
|
|
if(emp.major)
|
|
++majorEmpireCount;
|
|
}
|
|
}
|
|
|
|
void allowPlayEmpire(Empire@ emp) {
|
|
if(emp is spectatorEmpire)
|
|
spectatorEmpire.visionMask = ~0;
|
|
@playerEmpire = emp;
|
|
CURRENT_PLAYER.linkEmpire(emp);
|
|
playingEmpire(emp);
|
|
}
|