protected void ShowBodyTypeDialog(CustomPawn customPawn) { ProviderBodyTypes provider = PrepareCarefully.Instance.Providers.BodyTypes; List <BodyType> bodyTypes = provider.GetBodyTypesForPawn(customPawn); Dialog_Options <BodyType> dialog = new Dialog_Options <BodyType>(bodyTypes) { NameFunc = (BodyType bodyType) => { return(provider.GetBodyTypeLabel(bodyType)); }, SelectedFunc = (BodyType bodyType) => { return(customPawn.BodyType == bodyType); }, SelectAction = (BodyType bodyType) => { customPawn.BodyType = bodyType; this.pawnLayerLabel = provider.GetBodyTypeLabel(bodyType); }, CloseAction = () => { } }; Find.WindowStack.Add(dialog); }
protected void SelectNextBodyType(CustomPawn customPawn, int direction) { ProviderBodyTypes provider = PrepareCarefully.Instance.Providers.BodyTypes; List <BodyType> bodyTypes = provider.GetBodyTypesForPawn(customPawn); int index = bodyTypes.IndexOf(customPawn.BodyType); if (index == -1) { Log.Warning("Could not find the current pawn's body type in list of available options: " + customPawn.BodyType); return; } index += direction; if (index < 0) { index = bodyTypes.Count - 1; } else if (index >= bodyTypes.Count) { index = 0; } customPawn.BodyType = bodyTypes[index]; this.pawnLayerLabel = provider.GetBodyTypeLabel(customPawn.BodyType); }