public override void SpawnSetup(Map map, bool respawningAfterLoad) { base.SpawnSetup(map, respawningAfterLoad); netPort = map.GetComponent <Comp.MapVoidEnergyNet>(); compTempControl = GetComp <Comp.VoidNetTempController>(); compFlickable = GetComp <CompFlickable>(); energyCostPerSec = compTempControl.prop.energyCostPerSec; }
public override void Tick() { base.Tick(); if (Wearer == null) { if (onlineComp.Count > 0) { OfflineAll(); } shieldCur = 0; energyCur = 0; shieldInit = shieldInitSec.SecondsToTicks(); terminalInit = terminalInitSec.SecondsToTicks(); PostPostTerminalOff(); return; } oldWearer = Wearer; bool rechargeShield = true; if (energyCostPerSec > 0 && !CostEnergy(energyCostPerSec / 60f)) {//报告离线 if (terminalInit <= 0) { PostPostTerminalOff(); } //离线 terminalInit = terminalInitSec.SecondsToTicks(); } else if (terminalInit-- == 0) {//报告上线 PostPostTerminalOn(); } else if (terminalInit > 0) { //正在启动,不进行护盾充能 rechargeShield = false; } float need; if (rechargeShield) { //给护盾充能 if (shieldMax > 0 && shieldRecharge > 0 && savingRate < energyCur / energyCacheMax) { if (shieldInit-- > 0) { if (!CostEnergy(shieldRecharge / 60f / shieldConvertRate / 3f)) { shieldInit = shieldInitSec.SecondsToTicks(); } } else { need = Mathf.Min(shieldRecharge / 60f, shieldMax - shieldCur) / shieldConvertRate; if (need > 0 && CostEnergy(need)) { shieldCur += shieldRecharge / 60f; } } } } //给自己充能 Comp.MapVoidEnergyNet mapNet = MapNet; if (mapNet == null) { return; } need = Mathf.Min(energyCacheMax - energyCur, energyRecharge / 60f); if (need == 0) { return; } float geted = mapNet.GetEnergy(need); energyCur += geted; need -= geted; if (need <= 0 || (!worldConnect && !DebugSettings.godMode)) { return; } energyCur += WorldNet.GetEnergy(need); }