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);
 }