Rotating character preview & lobby preview change (#19741)

This commit is contained in:
Morb
2023-09-13 04:57:38 +03:00
committed by GitHub
parent 486bba4565
commit 80543c322d
3 changed files with 47 additions and 88 deletions

View File

@@ -88,18 +88,12 @@ namespace Content.Client.Preferences.UI
private readonly List<AntagPreferenceSelector> _antagPreferences;
private readonly List<TraitPreferenceSelector> _traitPreferences;
private Control _previewSpriteControl => CSpriteViewFront;
private Control _previewSpriteSideControl => CSpriteViewSide;
private SpriteView _previewSpriteView => CSpriteView;
private Button _previewRotateLeftButton => CSpriteRotateLeft;
private Button _previewRotateRightButton => CSpriteRotateRight;
private Direction _previewRotation = Direction.North;
private EntityUid? _previewDummy;
/// <summary>
/// Used to avoid unnecessarily re-creating the entity.
/// </summary>
private string? _lastSpecies;
private SpriteView? _previewSprite;
private SpriteView? _previewSpriteSide;
private BoxContainer _rgbSkinColorContainer => CRgbSkinColorContainer;
private ColorSelectorSliders _rgbSkinColorSelector;
@@ -479,6 +473,18 @@ namespace Content.Client.Preferences.UI
#endregion FlavorText
#region Dummy
_previewRotateLeftButton.OnPressed += _ =>
{
_previewRotation = _previewRotation.TurnCw();
_needUpdatePreview = true;
};
_previewRotateRightButton.OnPressed += _ =>
{
_previewRotation = _previewRotation.TurnCcw();
_needUpdatePreview = true;
};
var species = Profile?.Species ?? SharedHumanoidAppearanceSystem.DefaultSpecies;
var dollProto = _prototypeManager.Index<SpeciesPrototype>(species).DollPrototype;
@@ -486,27 +492,7 @@ namespace Content.Client.Preferences.UI
_entMan.DeleteEntity(_previewDummy!.Value);
_previewDummy = _entMan.SpawnEntity(dollProto, MapCoordinates.Nullspace);
_lastSpecies = species;
_previewSprite = new SpriteView
{
Scale = new Vector2(6, 6),
OverrideDirection = Direction.South,
VerticalAlignment = VAlignment.Center,
SizeFlagsStretchRatio = 1
};
_previewSprite.SetEntity(_previewDummy.Value);
_previewSpriteControl.AddChild(_previewSprite);
_previewSpriteSide = new SpriteView
{
Scale = new Vector2(6, 6),
OverrideDirection = Direction.East,
VerticalAlignment = VAlignment.Center,
SizeFlagsStretchRatio = 1
};
_previewSpriteSide.SetEntity(_previewDummy.Value);
_previewSpriteSideControl.AddChild(_previewSpriteSide);
_previewSpriteView.SetEntity(_previewDummy);
#endregion Dummy
#endregion Left
@@ -726,35 +712,7 @@ namespace Content.Client.Preferences.UI
_entMan.DeleteEntity(_previewDummy!.Value);
_previewDummy = _entMan.SpawnEntity(dollProto, MapCoordinates.Nullspace);
_lastSpecies = species;
if (_previewSprite == null)
{
// Front
_previewSprite = new SpriteView
{
Scale = new Vector2(6, 6),
OverrideDirection = Direction.South,
VerticalAlignment = VAlignment.Center,
SizeFlagsStretchRatio = 1
};
_previewSpriteControl.AddChild(_previewSprite);
}
_previewSprite.SetEntity(_previewDummy.Value);
if (_previewSpriteSide == null)
{
_previewSpriteSide = new SpriteView
{
Scale = new Vector2(6, 6),
OverrideDirection = Direction.East,
VerticalAlignment = VAlignment.Center,
SizeFlagsStretchRatio = 1
};
_previewSpriteSideControl.AddChild(_previewSpriteSide);
}
_previewSpriteSide.SetEntity(_previewDummy.Value);
_previewSpriteView.SetEntity(_previewDummy);
_needUpdatePreview = true;
}
@@ -1127,6 +1085,8 @@ namespace Content.Client.Preferences.UI
if (ShowClothes.Pressed)
LobbyCharacterPreviewPanel.GiveDummyJobClothes(_previewDummy!.Value, Profile);
_previewSpriteView.OverrideDirection = (Direction) ((int) _previewRotation % 4 * 2);
}
public void UpdateControls()
@@ -1162,7 +1122,6 @@ namespace Content.Client.Preferences.UI
if (_needUpdatePreview)
{
UpdatePreview();
_needUpdatePreview = false;
}
}