Character head & gender settings are saved. Closes #474
This commit is contained in:
@@ -561,14 +561,18 @@ namespace Barotrauma
|
||||
var playYourself = new GUITickBox(new Rectangle(0, 0, 20, 20), TextManager.Get("PlayYourself"), Alignment.TopLeft, myPlayerFrame);
|
||||
playYourself.Selected = GameMain.NetworkMember.CharacterInfo != null;
|
||||
playYourself.OnSelected = TogglePlayYourself;
|
||||
playYourself.UserData = "playyourself";
|
||||
|
||||
GUIButton toggleHead = new GUIButton(new Rectangle(0, 50, 15, 15), "<", "", myPlayerFrame);
|
||||
toggleHead.UserData = -1;
|
||||
toggleHead.OnClicked = ToggleHead;
|
||||
toggleHead = new GUIButton(new Rectangle(60, 50, 15, 15), ">", "", myPlayerFrame);
|
||||
toggleHead.UserData = 1;
|
||||
toggleHead.OnClicked = ToggleHead;
|
||||
playYourself.UserData = "playyourself";
|
||||
|
||||
GUIButton toggleHead = new GUIButton(new Rectangle(0, 50, 15, 15), "<", "", myPlayerFrame)
|
||||
{
|
||||
UserData = -1,
|
||||
OnClicked = ToggleHead
|
||||
};
|
||||
toggleHead = new GUIButton(new Rectangle(60, 50, 15, 15), ">", "", myPlayerFrame)
|
||||
{
|
||||
UserData = 1,
|
||||
OnClicked = ToggleHead
|
||||
};
|
||||
|
||||
new GUITextBlock(new Rectangle(100, 30, 200, 30), TextManager.Get("Gender"), "", myPlayerFrame);
|
||||
|
||||
@@ -631,7 +635,10 @@ namespace Barotrauma
|
||||
{
|
||||
if (tickBox.Selected)
|
||||
{
|
||||
GameMain.NetworkMember.CharacterInfo = new CharacterInfo(Character.HumanConfigFile, GameMain.NetworkMember.Name, Gender.None, null);
|
||||
GameMain.NetworkMember.CharacterInfo =
|
||||
new CharacterInfo(Character.HumanConfigFile, GameMain.NetworkMember.Name, GameMain.Config.CharacterGender, null);
|
||||
GameMain.NetworkMember.CharacterInfo.HeadSpriteId = GameMain.Config.CharacterHeadIndex;
|
||||
|
||||
UpdatePlayerFrame(GameMain.NetworkMember.CharacterInfo);
|
||||
}
|
||||
else
|
||||
@@ -1249,14 +1256,12 @@ namespace Barotrauma
|
||||
|
||||
private bool ToggleHead(GUIButton button, object userData)
|
||||
{
|
||||
int dir = (int)userData;
|
||||
|
||||
if (GameMain.NetworkMember.CharacterInfo == null) return true;
|
||||
|
||||
int dir = (int)userData;
|
||||
GameMain.NetworkMember.CharacterInfo.HeadSpriteId += dir;
|
||||
|
||||
GameMain.Config.CharacterHeadIndex = GameMain.NetworkMember.CharacterInfo.HeadSpriteId;
|
||||
UpdatePlayerHead(GameMain.NetworkMember.CharacterInfo);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -1264,7 +1269,7 @@ namespace Barotrauma
|
||||
{
|
||||
Gender gender = (Gender)obj;
|
||||
GameMain.NetworkMember.CharacterInfo.Gender = gender;
|
||||
|
||||
GameMain.Config.CharacterGender = GameMain.NetworkMember.CharacterInfo.Gender;
|
||||
UpdatePlayerHead(GameMain.NetworkMember.CharacterInfo);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -25,7 +25,7 @@ namespace Barotrauma
|
||||
public bool EnableSplashScreen { get; set; }
|
||||
|
||||
//public bool FullScreenEnabled { get; set; }
|
||||
|
||||
|
||||
private KeyOrMouse[] keyMapping;
|
||||
|
||||
private WindowMode windowMode;
|
||||
@@ -51,8 +51,37 @@ namespace Barotrauma
|
||||
}
|
||||
}
|
||||
|
||||
private bool unsavedSettings;
|
||||
private int characterHeadIndex;
|
||||
public int CharacterHeadIndex
|
||||
{
|
||||
get { return characterHeadIndex; }
|
||||
set
|
||||
{
|
||||
if (value == characterHeadIndex) return;
|
||||
// Begin saving coroutine. Remove any existing save coroutines if one is running.
|
||||
if (CoroutineManager.IsCoroutineRunning("saveCoroutine")) { CoroutineManager.StopCoroutines("saveCoroutine"); }
|
||||
CoroutineManager.StartCoroutine(ApplyUnsavedChanges(), "saveCoroutine");
|
||||
|
||||
characterHeadIndex = value;
|
||||
}
|
||||
}
|
||||
|
||||
private Gender characterGender;
|
||||
public Gender CharacterGender
|
||||
{
|
||||
get { return characterGender; }
|
||||
set
|
||||
{
|
||||
if (value == characterGender) return;
|
||||
// Begin saving coroutine. Remove any existing save coroutines if one is running.
|
||||
if (CoroutineManager.IsCoroutineRunning("saveCoroutine")) { CoroutineManager.StopCoroutines("saveCoroutine"); }
|
||||
CoroutineManager.StartCoroutine(ApplyUnsavedChanges(), "saveCoroutine");
|
||||
|
||||
characterGender = value;
|
||||
}
|
||||
}
|
||||
|
||||
private bool unsavedSettings;
|
||||
public bool UnsavedSettings
|
||||
{
|
||||
get
|
||||
@@ -230,18 +259,15 @@ namespace Barotrauma
|
||||
case "keymapping":
|
||||
foreach (XAttribute attribute in subElement.Attributes())
|
||||
{
|
||||
InputType inputType;
|
||||
if (Enum.TryParse(attribute.Name.ToString(), true, out inputType))
|
||||
if (Enum.TryParse(attribute.Name.ToString(), true, out InputType inputType))
|
||||
{
|
||||
int mouseButton;
|
||||
if (int.TryParse(attribute.Value.ToString(), out mouseButton))
|
||||
if (int.TryParse(attribute.Value.ToString(), out int mouseButton))
|
||||
{
|
||||
keyMapping[(int)inputType] = new KeyOrMouse(mouseButton);
|
||||
}
|
||||
else
|
||||
{
|
||||
Keys key;
|
||||
if (Enum.TryParse(attribute.Value.ToString(), true, out key))
|
||||
if (Enum.TryParse(attribute.Value.ToString(), true, out Keys key))
|
||||
{
|
||||
keyMapping[(int)inputType] = new KeyOrMouse(key);
|
||||
}
|
||||
@@ -258,6 +284,9 @@ namespace Barotrauma
|
||||
break;
|
||||
case "player":
|
||||
defaultPlayerName = subElement.GetAttributeString("name", "");
|
||||
characterHeadIndex = subElement.GetAttributeInt("headindex", Rand.Int(10));
|
||||
characterGender = subElement.GetAttributeString("gender", Rand.Range(0.0f, 1.0f) < 0.5f ? "male" : "female")
|
||||
.ToLowerInvariant() == "male" ? Gender.Male : Gender.Female;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -363,8 +392,10 @@ namespace Barotrauma
|
||||
gameplay.Add(jobPreferences);
|
||||
doc.Root.Add(gameplay);
|
||||
|
||||
var playerElement = new XElement("player");
|
||||
playerElement.Add(new XAttribute("name", defaultPlayerName ?? ""));
|
||||
var playerElement = new XElement("player",
|
||||
new XAttribute("name", defaultPlayerName ?? ""),
|
||||
new XAttribute("headindex", characterHeadIndex),
|
||||
new XAttribute("gender", characterGender));
|
||||
doc.Root.Add(playerElement);
|
||||
|
||||
doc.Save(filePath);
|
||||
|
||||
Reference in New Issue
Block a user