本文整理汇总了C#中ProtoCrewMember.UnregisterExperienceTraits方法的典型用法代码示例。如果您正苦于以下问题:C# ProtoCrewMember.UnregisterExperienceTraits方法的具体用法?C# ProtoCrewMember.UnregisterExperienceTraits怎么用?C# ProtoCrewMember.UnregisterExperienceTraits使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ProtoCrewMember
的用法示例。
在下文中一共展示了ProtoCrewMember.UnregisterExperienceTraits方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: RemoveKerbal
//Removes a frozen kerbal from the vessel.
private bool RemoveKerbal(ProtoCrewMember kerbal, int SeatIndx)
{
try
{
Utilities.Log_Debug("RemoveKerbal " + kerbal.name + " seat " + SeatIndx);
FrznCrewMbr tmpcrew = _StoredCrewList.Find(a => a.CrewName == kerbal.name); // Find the thawed kerbal in the frozen kerbal list.
if (tmpcrew == null)
{
FrznCrewMbr frzncrew = new FrznCrewMbr(kerbal.name, SeatIndx, vessel.id, vessel.name);
Utilities.Log_Debug("Adding _StoredCrewList entry");
_StoredCrewList.Add(frzncrew);
}
else
{
Utilities.Log("Found Kerbal in the stored frozen crew list for this part.");
Utilities.Log("Crewmember:" + tmpcrew.CrewName + " Seat:" + tmpcrew.SeatIdx);
}
// Update the saved frozen kerbals dictionary
KerbalInfo kerbalInfo = new KerbalInfo(Planetarium.GetUniversalTime());
kerbalInfo.vesselID = CrntVslID;
kerbalInfo.vesselName = CrntVslName;
kerbalInfo.type = ProtoCrewMember.KerbalType.Unowned;
kerbalInfo.status = ProtoCrewMember.RosterStatus.Dead;
if (partHasInternals)
{
kerbalInfo.seatName = part.internalModel.seats[SeatIndx].seatTransformName;
kerbalInfo.seatIdx = SeatIndx;
}
else
{
kerbalInfo.seatName = "Unknown";
kerbalInfo.seatIdx = -1;
}
kerbalInfo.partID = CrntPartID;
kerbalInfo.experienceTraitName = kerbal.experienceTrait.Title;
Utilities.Log_Debug("Adding New Frozen Crew to dictionary");
try
{
if (!DeepFreeze.Instance.DFgameSettings.KnownFrozenKerbals.ContainsKey(kerbal.name))
{
DeepFreeze.Instance.DFgameSettings.KnownFrozenKerbals.Add(kerbal.name, kerbalInfo);
}
if (DeepFreeze.Instance.DFsettings.debugging) DeepFreeze.Instance.DFgameSettings.DmpKnownFznKerbals();
}
catch (Exception ex)
{
Utilities.Log("Unable to add to knownfrozenkerbals frozen crewmember " + kerbal.name);
Utilities.Log("Err: " + ex);
ScreenMessages.PostScreenMessage("DeepFreezer mechanical failure", 5.0f, ScreenMessageStyle.UPPER_CENTER);
return false;
}
if (partHasInternals && ExternalDoorActive)
Utilities.setHelmetshaders(kerbal.KerbalRef, true);
// remove the CrewMember from the part crewlist and unregister their traits, because they are frozen, and this is the only way to trick the game.
kerbal.UnregisterExperienceTraits(part);
part.protoModuleCrew.Remove(kerbal);
if (partHasInternals)
{
if (part.internalModel.seats[SeatIndx].kerbalRef != kerbal.KerbalRef)
{
part.internalModel.seats[SeatIndx].kerbalRef = kerbal.KerbalRef;
setseatstaticoverlay(part.internalModel.seats[SeatIndx]);
}
part.internalModel.seats[SeatIndx].taken = true; // Set their seat to Taken, because they are really still there. :)
seatTakenbyFrznKerbal[SeatIndx] = true;
}
// Set our newly frozen Popsicle, er Kerbal, to Unowned type (usually a Crew) and Dead status.
kerbal.type = ProtoCrewMember.KerbalType.Unowned;
kerbal.rosterStatus = ProtoCrewMember.RosterStatus.Dead;
if (kerbal.KerbalRef != null)
{
//Remove them from the GUIManager Portrait cams.
DFPortraits.DestroyPortrait(kerbal.KerbalRef);
}
return true;
}
catch (Exception ex)
{
Debug.Log("Remove Kerbal " + kerbal.name + " for DeepFreeze failed");
Debug.Log("Err: " + ex);
return false;
}
}