/// <summary> /// 加载所有资源信息 /// </summary> void LoadResourceInfo() { Resource_Info jinshucanhai = new Resource_Info("金属残骸", "no", CommonData.ResourceType.JinShuCanHai); Resource_Info shiyou = new Resource_Info("石油", "no", ResourceType.ShiYou); Resource_Info wasi = new Resource_Info("瓦斯", "no", ResourceType.WaSi); Resource_Info kuangshi = new Resource_Info("矿石", "no", ResourceType.KuangShi); Resource_Info lieyanshi = new Resource_Info("烈焰石", "no", ResourceType.LieYanShi); Resource_Info mingjiehua = new Resource_Info("冥界花", "no", ResourceType.MingJieHua); Resource_Info huxiaoshi = new Resource_Info("呼啸石", "no", ResourceType.HuXiaoShi); _resList.Add(0, jinshucanhai); _resList.Add(1, shiyou); _resList.Add(2, wasi); _resList.Add(3, kuangshi); _resList.Add(4, lieyanshi); _resList.Add(5, mingjiehua); _resList.Add(6, huxiaoshi); }
public void FixedUpdate() { // do nothing in the editor if (Lib.IsEditor()) { return; } // if the module is either non-deployable or deployed if (deploy.Length == 0 || deployed) { // get resource handler Resource_Info ec = ResourceCache.Info(vessel, "ElectricCharge"); // consume ec ec.Consume(ec_rate * Kerbalism.elapsed_s); } }
public void FixedUpdate() { // do nothing in the editor if (Lib.IsEditor()) { return; } // do nothing if vessel is invalid if (!Cache.VesselInfo(vessel).is_valid) { return; } // get ec handler Resource_Info ec = ResourceCache.Info(vessel, "ElectricCharge"); // if experiment is active if (recording) { // detect conditions // - comparing against amount in previous step bool has_ec = ec.amount > double.Epsilon; bool has_operator = operator_cs.Check(vessel); string sit = Science.Situation(vessel, situations); // deduce issues issue = string.Empty; if (sit.Length == 0) { issue = "invalid situation"; } else if (!has_operator) { issue = "no operator"; } else if (!has_ec) { issue = "missing <b>EC</b>"; } // if there are no issues if (issue.Length == 0) { // generate subject id string subject_id = Science.Generate_Subject(experiment, vessel.mainBody, sit, Science.Biome(vessel, sit), Science.Multiplier(vessel, sit)); // record in drive if (transmissible) { DB.Vessel(vessel).drive.Record_File(subject_id, data_rate * Kerbalism.elapsed_s); } else { DB.Vessel(vessel).drive.Record_Sample(subject_id, data_rate * Kerbalism.elapsed_s); } // consume ec ec.Consume(ec_rate * Kerbalism.elapsed_s); } } }
public static void BackgroundUpdate(Vessel v, ProtoPartModuleSnapshot m, Experiment exp, Resource_Info ec, double elapsed_s) { // if experiment is active if (Lib.Proto.GetBool(m, "recording")) { // detect conditions // - comparing against amount in previous step bool has_ec = ec.amount > double.Epsilon; bool has_operator = new CrewSpecs(exp.crew).Check(v); string sit = Science.Situation(v, exp.situations); // deduce issues string issue = string.Empty; if (sit.Length == 0) { issue = "invalid situation"; } else if (!has_operator) { issue = "no operator"; } else if (!has_ec) { issue = "missing <b>EC</b>"; } Lib.Proto.Set(m, "issue", issue); // if there are no issues if (issue.Length == 0) { // generate subject id string subject_id = Science.Generate_Subject(exp.experiment, v.mainBody, sit, Science.Biome(v, sit), Science.Multiplier(v, sit)); // record in drive if (exp.transmissible) { DB.Vessel(v).drive.Record_File(subject_id, exp.data_rate * elapsed_s); } else { DB.Vessel(v).drive.Record_Sample(subject_id, exp.data_rate * elapsed_s); } // consume ec ec.Consume(exp.ec_rate * elapsed_s); } } }
public static void BackgroundUpdate(Vessel vessel, ProtoPartSnapshot p, ProtoPartModuleSnapshot m, GravityRing ring, Resource_Info ec, double elapsed_s) { // if the module is either non-deployable or deployed if (ring.deploy.Length == 0 || Lib.Proto.GetBool(m, "deployed")) { // consume ec ec.Consume(ring.ec_rate * elapsed_s); } }
public static void BackgroundUpdate(Vessel v, ProtoPartSnapshot p, ProtoPartModuleSnapshot antenna, Vessel_Info vi, Resource_Info ec, double elapsed_s) { if (Features.Deploy) { bool isDeploy; bool has_ec = ec.amount > double.Epsilon; ProtoPartModuleSnapshot deployModule = p.FindModule("AntennaDeploy"); ProtoPartModuleSnapshot anim; if (deployModule == null) { Lib.Debug("AntennaDeploy is null. Load vessel to try fix it"); return; } // if it is transmitting, leave with Kerbalism if (Features.Science && (vi.transmitting.Length > 0 || vi.relaying.Length > 0)) { return; } if (has_ec) { if (Features.Signal) { anim = p.FindModule("ModuleAnimationGroup"); if (anim != null) { isDeploy = Lib.Proto.GetBool(anim, "isDeployed"); } else { isDeploy = true; } if (!Settings.ExtendedAntenna || isDeploy) { Lib.Proto.Set(antenna, "extended", true); ec.Consume(Lib.Proto.GetDouble(deployModule, "ecCost") * elapsed_s); } } else if (Features.KCommNet) { anim = p.FindModule("ModuleDeployableAntenna"); if (anim != null) { isDeploy = Lib.Proto.GetString(anim, "deployState") == "EXTENDED"; } else { isDeploy = true; } if (isDeploy) { Lib.Proto.Set(antenna, "canComm", true); ec.Consume(Lib.Proto.GetDouble(deployModule, "ecCost") * elapsed_s); } } } else { if (Features.Signal) { Lib.Proto.Set(antenna, "extended", false); } else if (Features.KCommNet) { Lib.Proto.Set(antenna, "canComm", false); } } } }