public bool tryTakePicture(Part camera) { //MerillData.log("takePicture! " + camera.vessel.situation + " at " + MerillUtil.getDetailedSituation(camera.vessel) + " == " + situationForShoot + // " && " + camera.vessel.mainBody.name + " == " + body2Shoot.name + " use kerbal?"+useKerbal // + ", state:" + base.state); if (MerillUtil.getDetailedSituation(camera.vessel) == situationForShoot && camera.vessel.mainBody == body2Shoot && base.state == ParameterState.Incomplete) { //IsControllable? //MerillData.log("camera isCommandable=" + camera.vessel.isCommandable); //MerillData.log("camera IsControllable=" + camera.vessel.IsControllable); if (!camera.vessel.IsControllable) { return(false); } //manned? if (useKerbal) { MerillData.log("camera manned=" + (camera.vessel.GetCrewCount() > 0)); if (camera.vessel.GetCrewCount() == 0) { return(false); } } //else //{ //} //consume all scienceSlot bool findAtLeastASlot = false; if (camera.parent != null) { MerillData.log("cameraparameter : parent for science slot is " + camera.parent.name); while (camera.parent.RequestResource("ScienceSlot", 1) == 1) { findAtLeastASlot = true; MerillData.log("cameraparameter : find a slot, consumed it " + findAtLeastASlot); } } MerillData.log("cameraparameter : slot? " + findAtLeastASlot); float energyReceived = 0; //consume elctricity if (!findAtLeastASlot) { energyReceived = camera.RequestResource("ElectricCharge", 800); MerillData.log("cameraparameter : find elec charge of " + energyReceived); if (energyReceived < 790) { ScreenMessages.PostScreenMessage(MerillData.str_camera_noEnergy, 10f, ScreenMessageStyle.UPPER_LEFT); return(false); } } //error: can't fins at least a slot if (!findAtLeastASlot) { ScreenMessages.PostScreenMessage(MerillData.str_camera_noSlot, 10f, ScreenMessageStyle.UPPER_LEFT); return(false); } MerillData.log("takePicture! OKKKKK " + ReputationCompletion); //todo: check antenna //add build point upgrade if (ReputationCompletion > 0) { KerbalConstructionTime.KCT_GameStates.TotalUpgradePoints += (int)ReputationCompletion; } ScreenMessages.PostScreenMessage("[KCT] " + (int)ReputationCompletion + " Upgrade Point Added!", 4.0f, ScreenMessageStyle.UPPER_LEFT); SetComplete(); return(true); } return(false); }
public bool isSituationOk(Part camera) { return(MerillUtil.getDetailedSituation(camera.vessel) == situationForShoot && camera.vessel.mainBody == body2Shoot && base.state == ParameterState.Incomplete); }