Many cleanups according to ReSharper suggestions (Mostly redundant code)
Minor Bug fixes
This commit is contained in:
1 parent
9aa81b7ba2
commit
dcbbc5caf3
96 files changed
+2702
-3322
No files matched your search
@@ -122,16 +122,14 @@ namespace VocaluxeLib.PartyModes.TicTacToe
|
||||
base.LoadTheme(xmlPath);
|
||||
|
||||
_CreateFields();
|
||||
Buttons[_ButtonField].Visible = false;
|
||||
_Buttons[_ButtonField].Visible = false;
|
||||
}
|
||||
|
||||
public override void DataToScreen(object receivedData)
|
||||
{
|
||||
SDataToScreenMain config = new SDataToScreenMain();
|
||||
|
||||
try
|
||||
{
|
||||
config = (SDataToScreenMain)receivedData;
|
||||
SDataToScreenMain config = (SDataToScreenMain)receivedData;
|
||||
_GameData = config;
|
||||
}
|
||||
catch (Exception e)
|
||||
@@ -167,11 +165,11 @@ namespace VocaluxeLib.PartyModes.TicTacToe
|
||||
case Keys.Enter:
|
||||
if (!_ExitPopupVisible)
|
||||
{
|
||||
if (Buttons[_ButtonNextRound].Selected)
|
||||
if (_Buttons[_ButtonNextRound].Selected)
|
||||
_NextRound();
|
||||
if (Buttons[_ButtonBack].Selected && _GameData.CurrentRoundNr == 1 && _Status != EStatus.FieldSelected)
|
||||
if (_Buttons[_ButtonBack].Selected && _GameData.CurrentRoundNr == 1 && _Status != EStatus.FieldSelected)
|
||||
_Back();
|
||||
if (Buttons[_ButtonExit].Selected && (_GameData.CurrentRoundNr > 1 || _Status == EStatus.FieldSelected) && _Status != EStatus.None)
|
||||
if (_Buttons[_ButtonExit].Selected && (_GameData.CurrentRoundNr > 1 || _Status == EStatus.FieldSelected) && _Status != EStatus.None)
|
||||
_ShowPopup(true);
|
||||
else if (_Status == EStatus.None)
|
||||
_EndParty();
|
||||
@@ -198,21 +196,21 @@ namespace VocaluxeLib.PartyModes.TicTacToe
|
||||
}
|
||||
if (_Status == EStatus.FieldSelected)
|
||||
{
|
||||
if (Buttons[_ButtonJokerRandomT1].Selected)
|
||||
if (_Buttons[_ButtonJokerRandomT1].Selected)
|
||||
_UseJoker(0, 0);
|
||||
if (Buttons[_ButtonJokerRandomT2].Selected)
|
||||
if (_Buttons[_ButtonJokerRandomT2].Selected)
|
||||
_UseJoker(1, 0);
|
||||
if (Buttons[_ButtonJokerRetryT1].Selected)
|
||||
if (_Buttons[_ButtonJokerRetryT1].Selected)
|
||||
_UseJoker(0, 1);
|
||||
if (Buttons[_ButtonJokerRetryT2].Selected)
|
||||
if (_Buttons[_ButtonJokerRetryT2].Selected)
|
||||
_UseJoker(1, 1);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (Buttons[_ButtonPopupYes].Selected)
|
||||
if (_Buttons[_ButtonPopupYes].Selected)
|
||||
_EndParty();
|
||||
if (Buttons[_ButtonPopupNo].Selected)
|
||||
if (_Buttons[_ButtonPopupNo].Selected)
|
||||
_ShowPopup(false);
|
||||
}
|
||||
break;
|
||||
@@ -225,15 +223,15 @@ namespace VocaluxeLib.PartyModes.TicTacToe
|
||||
{
|
||||
base.HandleMouse(mouseEvent);
|
||||
|
||||
if (mouseEvent.LB && IsMouseOver(mouseEvent))
|
||||
if (mouseEvent.LB && _IsMouseOver(mouseEvent))
|
||||
{
|
||||
if (!_ExitPopupVisible)
|
||||
{
|
||||
if (Buttons[_ButtonNextRound].Selected)
|
||||
if (_Buttons[_ButtonNextRound].Selected)
|
||||
_NextRound();
|
||||
if (Buttons[_ButtonBack].Selected)
|
||||
if (_Buttons[_ButtonBack].Selected)
|
||||
_Back();
|
||||
if (Buttons[_ButtonExit].Selected)
|
||||
if (_Buttons[_ButtonExit].Selected)
|
||||
{
|
||||
if (_Status == EStatus.None)
|
||||
_EndParty();
|
||||
@@ -263,21 +261,21 @@ namespace VocaluxeLib.PartyModes.TicTacToe
|
||||
}
|
||||
if (_Status == EStatus.FieldSelected)
|
||||
{
|
||||
if (Buttons[_ButtonJokerRandomT1].Selected)
|
||||
if (_Buttons[_ButtonJokerRandomT1].Selected)
|
||||
_UseJoker(0, 0);
|
||||
if (Buttons[_ButtonJokerRandomT2].Selected)
|
||||
if (_Buttons[_ButtonJokerRandomT2].Selected)
|
||||
_UseJoker(1, 0);
|
||||
if (Buttons[_ButtonJokerRetryT1].Selected)
|
||||
if (_Buttons[_ButtonJokerRetryT1].Selected)
|
||||
_UseJoker(0, 1);
|
||||
if (Buttons[_ButtonJokerRetryT2].Selected)
|
||||
if (_Buttons[_ButtonJokerRetryT2].Selected)
|
||||
_UseJoker(1, 1);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (Buttons[_ButtonPopupYes].Selected)
|
||||
if (_Buttons[_ButtonPopupYes].Selected)
|
||||
_EndParty();
|
||||
if (Buttons[_ButtonPopupNo].Selected)
|
||||
if (_Buttons[_ButtonPopupNo].Selected)
|
||||
_ShowPopup(false);
|
||||
}
|
||||
}
|
||||
@@ -312,15 +310,15 @@ namespace VocaluxeLib.PartyModes.TicTacToe
|
||||
{
|
||||
_BuildWinnerPossibilities();
|
||||
_SelectedField = -1;
|
||||
Buttons[_ButtonBack].Visible = true;
|
||||
Buttons[_ButtonExit].Visible = false;
|
||||
SetInteractionToButton(Buttons[_ButtonBack]);
|
||||
_Buttons[_ButtonBack].Visible = true;
|
||||
_Buttons[_ButtonExit].Visible = false;
|
||||
_SetInteractionToButton(_Buttons[_ButtonBack]);
|
||||
}
|
||||
else
|
||||
{
|
||||
Buttons[_ButtonBack].Visible = false;
|
||||
Buttons[_ButtonExit].Visible = true;
|
||||
SetInteractionToButton(Buttons[_ButtonExit]);
|
||||
_Buttons[_ButtonBack].Visible = false;
|
||||
_Buttons[_ButtonExit].Visible = true;
|
||||
_SetInteractionToButton(_Buttons[_ButtonExit]);
|
||||
}
|
||||
|
||||
_Status = EStatus.FieldChoosing;
|
||||
@@ -332,37 +330,37 @@ namespace VocaluxeLib.PartyModes.TicTacToe
|
||||
if (_GameData.CurrentRoundNr <= _GameData.NumFields && winner == 0)
|
||||
{
|
||||
_UpdateTeamChoosingMessage();
|
||||
Texts[_TextNextPlayerT1].Visible = false;
|
||||
Texts[_TextNextPlayerT2].Visible = false;
|
||||
Texts[_TextNextPlayerNameT1].Visible = false;
|
||||
Texts[_TextNextPlayerNameT2].Visible = false;
|
||||
Statics[_StaticAvatarT1].Visible = false;
|
||||
Statics[_StaticAvatarT2].Visible = false;
|
||||
Buttons[_ButtonJokerRandomT1].Visible = false;
|
||||
Buttons[_ButtonJokerRandomT2].Visible = false;
|
||||
Buttons[_ButtonJokerRetryT1].Visible = false;
|
||||
Buttons[_ButtonJokerRetryT2].Visible = false;
|
||||
Buttons[_ButtonNextRound].Visible = false;
|
||||
Texts[_TextFinishMessage].Visible = false;
|
||||
_Texts[_TextNextPlayerT1].Visible = false;
|
||||
_Texts[_TextNextPlayerT2].Visible = false;
|
||||
_Texts[_TextNextPlayerNameT1].Visible = false;
|
||||
_Texts[_TextNextPlayerNameT2].Visible = false;
|
||||
_Statics[_StaticAvatarT1].Visible = false;
|
||||
_Statics[_StaticAvatarT2].Visible = false;
|
||||
_Buttons[_ButtonJokerRandomT1].Visible = false;
|
||||
_Buttons[_ButtonJokerRandomT2].Visible = false;
|
||||
_Buttons[_ButtonJokerRetryT1].Visible = false;
|
||||
_Buttons[_ButtonJokerRetryT2].Visible = false;
|
||||
_Buttons[_ButtonNextRound].Visible = false;
|
||||
_Texts[_TextFinishMessage].Visible = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
_Status = EStatus.None;
|
||||
Buttons[_ButtonNextRound].Visible = false;
|
||||
Texts[_TextFinishMessage].Visible = true;
|
||||
Texts[_TextTeamChoosing].Visible = false;
|
||||
_Buttons[_ButtonNextRound].Visible = false;
|
||||
_Texts[_TextFinishMessage].Visible = true;
|
||||
_Texts[_TextTeamChoosing].Visible = false;
|
||||
if (winner > 0)
|
||||
{
|
||||
Texts[_TextFinishMessage].Color = CBase.Theme.GetPlayerColor(winner);
|
||||
Texts[_TextFinishMessage].Text = CBase.Language.Translate("TR_SCREENMAIN_WINNER", _PartyModeID) + " " + CBase.Language.Translate("TR_TEAM", _PartyModeID) + " " +
|
||||
_Texts[_TextFinishMessage].Color = CBase.Theme.GetPlayerColor(winner);
|
||||
_Texts[_TextFinishMessage].Text = CBase.Language.Translate("TR_SCREENMAIN_WINNER", _PartyModeID) + " " + CBase.Language.Translate("TR_TEAM", _PartyModeID) + " " +
|
||||
winner;
|
||||
}
|
||||
else
|
||||
{
|
||||
Texts[_TextFinishMessage].Color = new SColorF(1, 1, 1, 1);
|
||||
Texts[_TextFinishMessage].Text = CBase.Language.Translate("TR_SCREENMAIN_NOWINNER", _PartyModeID);
|
||||
_Texts[_TextFinishMessage].Color = new SColorF(1, 1, 1, 1);
|
||||
_Texts[_TextFinishMessage].Text = CBase.Language.Translate("TR_SCREENMAIN_NOWINNER", _PartyModeID);
|
||||
}
|
||||
SetInteractionToButton(Buttons[_ButtonExit]);
|
||||
_SetInteractionToButton(_Buttons[_ButtonExit]);
|
||||
}
|
||||
|
||||
_ShowPopup(false);
|
||||
@@ -391,10 +389,10 @@ namespace VocaluxeLib.PartyModes.TicTacToe
|
||||
for (int i = 0; i < 25; i++)
|
||||
{
|
||||
CField f = new CField();
|
||||
f.Button = GetNewButton(Buttons[_ButtonField]);
|
||||
f.Button = GetNewButton(_Buttons[_ButtonField]);
|
||||
f.Button.Visible = false;
|
||||
f.Content = new CRound();
|
||||
AddButton(f.Button);
|
||||
_AddButton(f.Button);
|
||||
_Fields.Add(f);
|
||||
}
|
||||
}
|
||||
@@ -448,9 +446,9 @@ namespace VocaluxeLib.PartyModes.TicTacToe
|
||||
for (int i = 0; i < _GameData.Rounds.Count; i++)
|
||||
{
|
||||
_Fields[i].Button.Enabled = true;
|
||||
_Fields[i].Button.Texture = Buttons[_ButtonField].Texture;
|
||||
_Fields[i].Button.Color = Buttons[_ButtonField].Color;
|
||||
_Fields[i].Button.SelColor = Buttons[_ButtonField].SelColor;
|
||||
_Fields[i].Button.Texture = _Buttons[_ButtonField].Texture;
|
||||
_Fields[i].Button.Color = _Buttons[_ButtonField].Color;
|
||||
_Fields[i].Button.SelColor = _Buttons[_ButtonField].SelColor;
|
||||
_Fields[i].Content = _GameData.Rounds[i];
|
||||
if (_Fields[i].Content.Finished)
|
||||
{
|
||||
@@ -515,25 +513,25 @@ namespace VocaluxeLib.PartyModes.TicTacToe
|
||||
_GameData.Rounds[_SelectedField].SingerTeam2 = singerTeam2;
|
||||
_UpdateFieldContents();
|
||||
|
||||
Texts[_TextNextPlayerT1].Visible = true;
|
||||
Texts[_TextNextPlayerT2].Visible = true;
|
||||
Texts[_TextNextPlayerNameT1].Visible = true;
|
||||
Texts[_TextNextPlayerNameT2].Visible = true;
|
||||
_Texts[_TextNextPlayerT1].Visible = true;
|
||||
_Texts[_TextNextPlayerT2].Visible = true;
|
||||
_Texts[_TextNextPlayerNameT1].Visible = true;
|
||||
_Texts[_TextNextPlayerNameT2].Visible = true;
|
||||
SProfile[] profiles = CBase.Profiles.GetProfiles();
|
||||
Texts[_TextNextPlayerNameT1].Text = profiles[_GameData.ProfileIDsTeam1[_GameData.Rounds[_SelectedField].SingerTeam1]].PlayerName;
|
||||
Texts[_TextNextPlayerNameT2].Text = profiles[_GameData.ProfileIDsTeam2[_GameData.Rounds[_SelectedField].SingerTeam2]].PlayerName;
|
||||
Statics[_StaticAvatarT1].Visible = true;
|
||||
Statics[_StaticAvatarT2].Visible = true;
|
||||
Statics[_StaticAvatarT1].Texture = profiles[_GameData.ProfileIDsTeam1[_GameData.Rounds[_SelectedField].SingerTeam1]].Avatar.Texture;
|
||||
Statics[_StaticAvatarT2].Texture = profiles[_GameData.ProfileIDsTeam2[_GameData.Rounds[_SelectedField].SingerTeam2]].Avatar.Texture;
|
||||
_Texts[_TextNextPlayerNameT1].Text = profiles[_GameData.ProfileIDsTeam1[_GameData.Rounds[_SelectedField].SingerTeam1]].PlayerName;
|
||||
_Texts[_TextNextPlayerNameT2].Text = profiles[_GameData.ProfileIDsTeam2[_GameData.Rounds[_SelectedField].SingerTeam2]].PlayerName;
|
||||
_Statics[_StaticAvatarT1].Visible = true;
|
||||
_Statics[_StaticAvatarT2].Visible = true;
|
||||
_Statics[_StaticAvatarT1].Texture = profiles[_GameData.ProfileIDsTeam1[_GameData.Rounds[_SelectedField].SingerTeam1]].Avatar.Texture;
|
||||
_Statics[_StaticAvatarT2].Texture = profiles[_GameData.ProfileIDsTeam2[_GameData.Rounds[_SelectedField].SingerTeam2]].Avatar.Texture;
|
||||
|
||||
_UpdateJokerButtons();
|
||||
|
||||
Buttons[_ButtonNextRound].Visible = true;
|
||||
Buttons[_ButtonExit].Visible = true;
|
||||
Buttons[_ButtonBack].Visible = false;
|
||||
_Buttons[_ButtonNextRound].Visible = true;
|
||||
_Buttons[_ButtonExit].Visible = true;
|
||||
_Buttons[_ButtonBack].Visible = false;
|
||||
|
||||
SetInteractionToButton(Buttons[_ButtonNextRound]);
|
||||
_SetInteractionToButton(_Buttons[_ButtonNextRound]);
|
||||
}
|
||||
|
||||
private void _FieldSelectedAgain()
|
||||
@@ -554,25 +552,25 @@ namespace VocaluxeLib.PartyModes.TicTacToe
|
||||
_GameData.Rounds[_SelectedField].SingerTeam2 = _GameData.Rounds[_OldSelectedField].SingerTeam2;
|
||||
_UpdateFieldContents();
|
||||
|
||||
Texts[_TextNextPlayerT1].Visible = true;
|
||||
Texts[_TextNextPlayerT2].Visible = true;
|
||||
Texts[_TextNextPlayerNameT1].Visible = true;
|
||||
Texts[_TextNextPlayerNameT2].Visible = true;
|
||||
_Texts[_TextNextPlayerT1].Visible = true;
|
||||
_Texts[_TextNextPlayerT2].Visible = true;
|
||||
_Texts[_TextNextPlayerNameT1].Visible = true;
|
||||
_Texts[_TextNextPlayerNameT2].Visible = true;
|
||||
SProfile[] profiles = CBase.Profiles.GetProfiles();
|
||||
Texts[_TextNextPlayerNameT1].Text = profiles[_GameData.ProfileIDsTeam1[_GameData.Rounds[_SelectedField].SingerTeam1]].PlayerName;
|
||||
Texts[_TextNextPlayerNameT2].Text = profiles[_GameData.ProfileIDsTeam2[_GameData.Rounds[_SelectedField].SingerTeam2]].PlayerName;
|
||||
Statics[_StaticAvatarT1].Visible = true;
|
||||
Statics[_StaticAvatarT2].Visible = true;
|
||||
Statics[_StaticAvatarT1].Texture = profiles[_GameData.ProfileIDsTeam1[_GameData.Rounds[_SelectedField].SingerTeam1]].Avatar.Texture;
|
||||
Statics[_StaticAvatarT2].Texture = profiles[_GameData.ProfileIDsTeam2[_GameData.Rounds[_SelectedField].SingerTeam2]].Avatar.Texture;
|
||||
_Texts[_TextNextPlayerNameT1].Text = profiles[_GameData.ProfileIDsTeam1[_GameData.Rounds[_SelectedField].SingerTeam1]].PlayerName;
|
||||
_Texts[_TextNextPlayerNameT2].Text = profiles[_GameData.ProfileIDsTeam2[_GameData.Rounds[_SelectedField].SingerTeam2]].PlayerName;
|
||||
_Statics[_StaticAvatarT1].Visible = true;
|
||||
_Statics[_StaticAvatarT2].Visible = true;
|
||||
_Statics[_StaticAvatarT1].Texture = profiles[_GameData.ProfileIDsTeam1[_GameData.Rounds[_SelectedField].SingerTeam1]].Avatar.Texture;
|
||||
_Statics[_StaticAvatarT2].Texture = profiles[_GameData.ProfileIDsTeam2[_GameData.Rounds[_SelectedField].SingerTeam2]].Avatar.Texture;
|
||||
|
||||
_UpdateJokerButtons();
|
||||
|
||||
Buttons[_ButtonNextRound].Visible = true;
|
||||
Buttons[_ButtonExit].Visible = true;
|
||||
Buttons[_ButtonBack].Visible = false;
|
||||
_Buttons[_ButtonNextRound].Visible = true;
|
||||
_Buttons[_ButtonExit].Visible = true;
|
||||
_Buttons[_ButtonBack].Visible = false;
|
||||
|
||||
SetInteractionToButton(Buttons[_ButtonNextRound]);
|
||||
_SetInteractionToButton(_Buttons[_ButtonNextRound]);
|
||||
}
|
||||
|
||||
private void _UseJoker(int teamNr, int jokerNum)
|
||||
@@ -610,29 +608,29 @@ namespace VocaluxeLib.PartyModes.TicTacToe
|
||||
|
||||
private void _UpdateTeamChoosingMessage()
|
||||
{
|
||||
Texts[_TextTeamChoosing].Color = CBase.Theme.GetPlayerColor(_GameData.Team + 1);
|
||||
Texts[_TextTeamChoosing].Text = CBase.Language.Translate("TR_TEAM", _PartyModeID) + " " + (_GameData.Team + 1) + "! " +
|
||||
_Texts[_TextTeamChoosing].Color = CBase.Theme.GetPlayerColor(_GameData.Team + 1);
|
||||
_Texts[_TextTeamChoosing].Text = CBase.Language.Translate("TR_TEAM", _PartyModeID) + " " + (_GameData.Team + 1) + "! " +
|
||||
CBase.Language.Translate("TR_SCREENMAIN_TEAM_CHOOSE", _PartyModeID);
|
||||
if (_Status == EStatus.JokerRetry || _Status == EStatus.FieldChoosing)
|
||||
Texts[_TextTeamChoosing].Visible = true;
|
||||
_Texts[_TextTeamChoosing].Visible = true;
|
||||
else
|
||||
Texts[_TextTeamChoosing].Visible = false;
|
||||
_Texts[_TextTeamChoosing].Visible = false;
|
||||
}
|
||||
|
||||
private void _UpdateJokerButtons()
|
||||
{
|
||||
Buttons[_ButtonJokerRandomT1].Visible = true;
|
||||
Buttons[_ButtonJokerRandomT2].Visible = true;
|
||||
Buttons[_ButtonJokerRandomT1].Text.Text = _GameData.NumJokerRandom[0].ToString();
|
||||
Buttons[_ButtonJokerRandomT2].Text.Text = _GameData.NumJokerRandom[1].ToString();
|
||||
Buttons[_ButtonJokerRandomT1].Enabled = _GameData.NumJokerRandom[0] > 0;
|
||||
Buttons[_ButtonJokerRandomT2].Enabled = _GameData.NumJokerRandom[1] > 0;
|
||||
Buttons[_ButtonJokerRetryT1].Visible = true;
|
||||
Buttons[_ButtonJokerRetryT2].Visible = true;
|
||||
Buttons[_ButtonJokerRetryT1].Text.Text = _GameData.NumJokerRetry[0].ToString();
|
||||
Buttons[_ButtonJokerRetryT2].Text.Text = _GameData.NumJokerRetry[1].ToString();
|
||||
Buttons[_ButtonJokerRetryT1].Enabled = _GameData.NumJokerRetry[0] > 0;
|
||||
Buttons[_ButtonJokerRetryT2].Enabled = _GameData.NumJokerRetry[1] > 0;
|
||||
_Buttons[_ButtonJokerRandomT1].Visible = true;
|
||||
_Buttons[_ButtonJokerRandomT2].Visible = true;
|
||||
_Buttons[_ButtonJokerRandomT1].Text.Text = _GameData.NumJokerRandom[0].ToString();
|
||||
_Buttons[_ButtonJokerRandomT2].Text.Text = _GameData.NumJokerRandom[1].ToString();
|
||||
_Buttons[_ButtonJokerRandomT1].Enabled = _GameData.NumJokerRandom[0] > 0;
|
||||
_Buttons[_ButtonJokerRandomT2].Enabled = _GameData.NumJokerRandom[1] > 0;
|
||||
_Buttons[_ButtonJokerRetryT1].Visible = true;
|
||||
_Buttons[_ButtonJokerRetryT2].Visible = true;
|
||||
_Buttons[_ButtonJokerRetryT1].Text.Text = _GameData.NumJokerRetry[0].ToString();
|
||||
_Buttons[_ButtonJokerRetryT2].Text.Text = _GameData.NumJokerRetry[1].ToString();
|
||||
_Buttons[_ButtonJokerRetryT1].Enabled = _GameData.NumJokerRetry[0] > 0;
|
||||
_Buttons[_ButtonJokerRetryT2].Enabled = _GameData.NumJokerRetry[1] > 0;
|
||||
}
|
||||
|
||||
private void _NextRound()
|
||||
@@ -658,13 +656,13 @@ namespace VocaluxeLib.PartyModes.TicTacToe
|
||||
{
|
||||
_ExitPopupVisible = visible;
|
||||
|
||||
Statics[_StaticPopupBG].Visible = _ExitPopupVisible;
|
||||
Texts[_TextPopupReallyExit].Visible = _ExitPopupVisible;
|
||||
Buttons[_ButtonPopupYes].Visible = _ExitPopupVisible;
|
||||
Buttons[_ButtonPopupNo].Visible = _ExitPopupVisible;
|
||||
_Statics[_StaticPopupBG].Visible = _ExitPopupVisible;
|
||||
_Texts[_TextPopupReallyExit].Visible = _ExitPopupVisible;
|
||||
_Buttons[_ButtonPopupYes].Visible = _ExitPopupVisible;
|
||||
_Buttons[_ButtonPopupNo].Visible = _ExitPopupVisible;
|
||||
|
||||
if (_ExitPopupVisible)
|
||||
SetInteractionToButton(Buttons[_ButtonPopupNo]);
|
||||
_SetInteractionToButton(_Buttons[_ButtonPopupNo]);
|
||||
}
|
||||
|
||||
private void _Back()
|
||||
|
||||
Reference in new issue
Block a user