mirror of
https://github.com/ClassiCube/ClassiCube.git
synced 2025-09-14 10:05:44 -04:00
Remove 'Add new' from hotkeys, just clicking on empty hotkey line does the same thing. Make HUD show behind pause and block menu screen.
This commit is contained in:
parent
c8061b64fd
commit
f1a7a0e513
@ -181,7 +181,7 @@ namespace ClassicalSharp {
|
||||
public override bool HandlesMouseClick( int mouseX, int mouseY, MouseButton button ) {
|
||||
if( button == MouseButton.Left && selectedIndex != -1 ) {
|
||||
game.Inventory.HeldBlock = blocksTable[selectedIndex];
|
||||
game.SetNewScreen( new NormalScreen( game ) );
|
||||
game.SetNewScreen( null );
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@ -189,7 +189,7 @@ namespace ClassicalSharp {
|
||||
public override bool HandlesKeyDown( Key key ) {
|
||||
if( key == game.Mapping( KeyBinding.PauseOrExit ) ||
|
||||
key == game.Mapping( KeyBinding.OpenInventory ) ) {
|
||||
game.SetNewScreen( new NormalScreen( game ) );
|
||||
game.SetNewScreen( null );
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
@ -48,5 +48,9 @@ namespace ClassicalSharp {
|
||||
public override bool HandlesAllInput {
|
||||
get { return true; }
|
||||
}
|
||||
|
||||
public override bool HidesHud {
|
||||
get { return true; }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -76,7 +76,7 @@ namespace ClassicalSharp {
|
||||
|
||||
public override bool HandlesKeyDown( Key key ) {
|
||||
if( key == Key.Escape ) {
|
||||
game.SetNewScreen( new NormalScreen( game ) );
|
||||
game.SetNewScreen( null );
|
||||
} else if( key == Key.Left ) {
|
||||
PageClick( false );
|
||||
} else if( key == Key.Right ) {
|
||||
|
@ -21,7 +21,7 @@ namespace ClassicalSharp {
|
||||
|
||||
graphicsApi.Texturing = true;
|
||||
fpsTextWidget.Render( delta );
|
||||
if( game.activeScreen is NormalScreen ) {
|
||||
if( game.activeScreen == null ) {
|
||||
UpdateHackState( false );
|
||||
DrawPosition();
|
||||
hackStatesWidget.Render( delta );
|
||||
|
@ -35,6 +35,7 @@ namespace ClassicalSharp {
|
||||
}
|
||||
|
||||
bool supressNextPress;
|
||||
const int numButtons = 5;
|
||||
public override bool HandlesKeyPress( char key ) {
|
||||
if( supressNextPress ) {
|
||||
supressNextPress = false;
|
||||
@ -47,7 +48,7 @@ namespace ClassicalSharp {
|
||||
|
||||
public override bool HandlesKeyDown( Key key ) {
|
||||
if( key == Key.Escape ) {
|
||||
game.SetNewScreen( new NormalScreen( game ) );
|
||||
game.SetNewScreen( null );
|
||||
return true;
|
||||
} else if( focusWidget != null ) {
|
||||
FocusKeyDown( key );
|
||||
@ -83,7 +84,7 @@ namespace ClassicalSharp {
|
||||
MakeHotkey( 0, -120, 1 ),
|
||||
MakeHotkey( 0, -80, 2 ),
|
||||
MakeHotkey( 0, -40, 3 ),
|
||||
MakeAddNew( 0, 0 ),
|
||||
MakeHotkey( 0, 0, 4 ),
|
||||
Make( -160, -80, "<", 40, 40, arrowFont, (g, w) => PageClick( false ) ),
|
||||
Make( 160, -80, ">", 40, 40, arrowFont, (g, w) => PageClick( true ) ),
|
||||
|
||||
@ -128,20 +129,12 @@ namespace ClassicalSharp {
|
||||
game, x, y, 240, 30, text, Anchor.Centre, Anchor.Centre,
|
||||
textFont, TextButtonClick );
|
||||
|
||||
button.Metadata = default( Hotkey );
|
||||
if( text != "-----" )
|
||||
button.Metadata = hotkeys.Hotkeys[index];
|
||||
return button;
|
||||
}
|
||||
|
||||
ButtonWidget MakeAddNew( int x, int y ) {
|
||||
ButtonWidget button = ButtonWidget.Create(
|
||||
game, x, y, 240, 30, "Add new", Anchor.Centre, Anchor.Centre,
|
||||
textFont, TextButtonClick );
|
||||
|
||||
button.Metadata = default( Hotkey );
|
||||
return button;
|
||||
}
|
||||
|
||||
string Get( int index ) {
|
||||
if( index >= hotkeys.Hotkeys.Count ) return "-----";
|
||||
|
||||
@ -152,8 +145,8 @@ namespace ClassicalSharp {
|
||||
void Set( int index ) {
|
||||
string text = Get( index + currentIndex );
|
||||
ButtonWidget button = buttons[index];
|
||||
button.SetText( text);
|
||||
button.Metadata = null;
|
||||
button.SetText( text );
|
||||
button.Metadata = default( Hotkey );
|
||||
if( text != "-----" )
|
||||
button.Metadata = hotkeys.Hotkeys[index];
|
||||
}
|
||||
@ -168,12 +161,13 @@ namespace ClassicalSharp {
|
||||
|
||||
int currentIndex;
|
||||
void PageClick( bool forward ) {
|
||||
currentIndex += forward ? 4 : -4;
|
||||
if( currentIndex >= hotkeys.Hotkeys.Count ) currentIndex -= 4;
|
||||
currentIndex += forward ? numButtons : -numButtons;
|
||||
if( currentIndex >= hotkeys.Hotkeys.Count )
|
||||
currentIndex -= numButtons;
|
||||
if( currentIndex < 0 ) currentIndex = 0;
|
||||
|
||||
LostFocus();
|
||||
for( int i = 0; i < 4; i++ )
|
||||
for( int i = 0; i < numButtons; i++ )
|
||||
Set( i );
|
||||
}
|
||||
|
||||
@ -181,12 +175,9 @@ namespace ClassicalSharp {
|
||||
LostFocus();
|
||||
ButtonWidget button = (ButtonWidget)widget;
|
||||
|
||||
if( button.Metadata != null ) {
|
||||
curHotkey = (Hotkey)button.Metadata;
|
||||
origHotkey = curHotkey;
|
||||
// do stuff here
|
||||
CreateEditingWidgets();
|
||||
}
|
||||
curHotkey = (Hotkey)button.Metadata;
|
||||
origHotkey = curHotkey;
|
||||
CreateEditingWidgets();
|
||||
}
|
||||
|
||||
#region Modifying hotkeys
|
||||
@ -254,7 +245,7 @@ namespace ClassicalSharp {
|
||||
curHotkey.MoreInput, currentAction.GetText() );
|
||||
}
|
||||
|
||||
for( int i = 0; i < 4; i++ )
|
||||
for( int i = 0; i < numButtons; i++ )
|
||||
Set( i );
|
||||
DisposeEditingWidgets();
|
||||
}
|
||||
@ -265,7 +256,7 @@ namespace ClassicalSharp {
|
||||
hotkeys.UserRemovedHotkey( origHotkey.BaseKey, origHotkey.Flags );
|
||||
}
|
||||
|
||||
for( int i = 0; i < 4; i++ )
|
||||
for( int i = 0; i < numButtons; i++ )
|
||||
Set( i );
|
||||
DisposeEditingWidgets();
|
||||
}
|
||||
|
@ -5,9 +5,9 @@ using OpenTK.Input;
|
||||
|
||||
namespace ClassicalSharp {
|
||||
|
||||
public class NormalScreen : Screen {
|
||||
public class HudScreen : Screen {
|
||||
|
||||
public NormalScreen( Game game ) : base( game ) {
|
||||
public HudScreen( Game game ) : base( game ) {
|
||||
}
|
||||
|
||||
ChatScreen chat;
|
||||
@ -18,11 +18,13 @@ namespace ClassicalSharp {
|
||||
public override void Render( double delta ) {
|
||||
if( game.HideGui ) return;
|
||||
|
||||
bool showMinimal = game.GetActiveScreen != this;
|
||||
if( chat.HandlesAllInput )
|
||||
chat.RenderBackground();
|
||||
graphicsApi.Texturing = true;
|
||||
chat.Render( delta );
|
||||
hotbar.Render( delta );
|
||||
if( !showMinimal )
|
||||
hotbar.Render( delta );
|
||||
|
||||
//graphicsApi.BeginVbBatch( VertexFormat.Pos3fTex2fCol4b );
|
||||
//graphicsApi.BindTexture( game.TerrainAtlas.TexId );
|
||||
@ -35,11 +37,11 @@ namespace ClassicalSharp {
|
||||
playerList.Dispose();
|
||||
playerList = null;
|
||||
}
|
||||
graphicsApi.Texturing = false;
|
||||
} else {
|
||||
graphicsApi.Texturing = false;
|
||||
DrawCrosshairs();
|
||||
}
|
||||
|
||||
graphicsApi.Texturing = false;
|
||||
if( playerList == null && !showMinimal )
|
||||
DrawCrosshairs();
|
||||
}
|
||||
|
||||
const int crosshairExtent = 15, crosshairWeight = 2;
|
||||
@ -57,6 +59,17 @@ namespace ClassicalSharp {
|
||||
playerFont.Dispose();
|
||||
chat.Dispose();
|
||||
hotbar.Dispose();
|
||||
if( playerList != null )
|
||||
playerList.Dispose();
|
||||
}
|
||||
|
||||
public void GainFocus() {
|
||||
if( game.CursorVisible )
|
||||
game.CursorVisible = false;
|
||||
game.Camera.RegrabMouse();
|
||||
}
|
||||
|
||||
public void LoseFocus() {
|
||||
if( playerList != null ) {
|
||||
playerList.Dispose();
|
||||
}
|
||||
@ -79,9 +92,6 @@ namespace ClassicalSharp {
|
||||
chat.Init();
|
||||
hotbar = new BlockHotbarWidget( game );
|
||||
hotbar.Init();
|
||||
if( game.CursorVisible )
|
||||
game.CursorVisible = false;
|
||||
game.Camera.RegrabMouse();
|
||||
}
|
||||
|
||||
public override bool HandlesAllInput {
|
@ -73,5 +73,9 @@ namespace ClassicalSharp {
|
||||
public override bool HandlesAllInput {
|
||||
get { return true; }
|
||||
}
|
||||
|
||||
public override bool HidesHud {
|
||||
get { return true; }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -66,7 +66,7 @@ namespace ClassicalSharp {
|
||||
|
||||
public override bool HandlesKeyDown( Key key ) {
|
||||
if( key == Key.Escape ) {
|
||||
game.SetNewScreen( new NormalScreen( game ) );
|
||||
game.SetNewScreen( null );
|
||||
} else if( curWidget != null ) {
|
||||
int index = Array.IndexOf<ButtonWidget>( buttons, curWidget );
|
||||
KeyBinding mapping = (KeyBinding)index;
|
||||
|
@ -40,7 +40,7 @@ namespace ClassicalSharp {
|
||||
|
||||
public override bool HandlesKeyDown( Key key ) {
|
||||
if( key == Key.Escape ) {
|
||||
game.SetNewScreen( new NormalScreen( game ) );
|
||||
game.SetNewScreen( null );
|
||||
return true;
|
||||
} else if( (key == Key.Enter || key == Key.KeypadEnter)
|
||||
&& inputWidget != null ) {
|
||||
|
@ -41,19 +41,25 @@ namespace ClassicalSharp {
|
||||
Make( 140, -50, "Chat font size", Anchor.Centre, OnWidgetClick,
|
||||
g => g.Chat.FontSize.ToString(),
|
||||
(g, v) => { g.Chat.FontSize = Int32.Parse( v );
|
||||
Options.Set( OptionsKey.FontSize, v ); } ),
|
||||
Options.Set( OptionsKey.FontSize, v );
|
||||
g.RefreshHud();
|
||||
} ),
|
||||
|
||||
Make( 140, 0, "Chat lines", Anchor.Centre, OnWidgetClick,
|
||||
g => g.ChatLines.ToString(),
|
||||
(g, v) => { g.ChatLines = Int32.Parse( v );
|
||||
Options.Set( OptionsKey.ChatLines, v ); } ),
|
||||
Options.Set( OptionsKey.ChatLines, v );
|
||||
g.RefreshHud();
|
||||
} ),
|
||||
|
||||
Make( 140, 50, "Arial chat font", Anchor.Centre, OnWidgetClick,
|
||||
g => g.Drawer2D.UseBitmappedChat ? "no" : "yes",
|
||||
(g, v) => {
|
||||
g.Drawer2D.UseBitmappedChat = v == "no";
|
||||
Options.Set( OptionsKey.ArialChatFont, v == "yes" );
|
||||
game.Events.RaiseChatFontChanged(); } ),
|
||||
game.Events.RaiseChatFontChanged();
|
||||
g.RefreshHud();
|
||||
} ),
|
||||
|
||||
// Extra stuff
|
||||
!network.IsSinglePlayer ? null :
|
||||
|
@ -40,7 +40,7 @@ namespace ClassicalSharp {
|
||||
(g, w) => g.SetNewScreen( new TexturePackScreen( g ) ) ),
|
||||
// Other
|
||||
Make( 0, 55, "Back to game", Anchor.BottomOrRight,
|
||||
(g, w) => g.SetNewScreen( new NormalScreen( g ) ) ),
|
||||
(g, w) => g.SetNewScreen( null ) ),
|
||||
Make( 0, 5, "Quit game", Anchor.BottomOrRight, (g, w) => g.Exit() ),
|
||||
};
|
||||
}
|
||||
@ -51,7 +51,7 @@ namespace ClassicalSharp {
|
||||
|
||||
public override bool HandlesKeyDown( Key key ) {
|
||||
if( key == Key.Escape )
|
||||
game.SetNewScreen( new NormalScreen( game ) );
|
||||
game.SetNewScreen( null );
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -35,7 +35,7 @@ namespace ClassicalSharp {
|
||||
|
||||
public override bool HandlesKeyDown( Key key ) {
|
||||
if( key == Key.Escape ) {
|
||||
game.SetNewScreen( new NormalScreen( game ) );
|
||||
game.SetNewScreen( null );
|
||||
return true;
|
||||
}
|
||||
return inputWidget.HandlesKeyDown( key );
|
||||
|
@ -17,5 +17,10 @@ namespace ClassicalSharp {
|
||||
public virtual bool BlocksWorld {
|
||||
get { return false; }
|
||||
}
|
||||
|
||||
/// <summary> Whether this screen hides the normal in-game hud. </summary>
|
||||
public virtual bool HidesHud {
|
||||
get { return false; }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -99,7 +99,7 @@
|
||||
<Compile Include="2D\Screens\Menu\OptionsScreen.cs" />
|
||||
<Compile Include="2D\Screens\Menu\SaveLevelScreen.cs" />
|
||||
<Compile Include="2D\Screens\Menu\TexturePackScreen.cs" />
|
||||
<Compile Include="2D\Screens\NormalScreen.cs" />
|
||||
<Compile Include="2D\Screens\HudScreen.cs" />
|
||||
<Compile Include="2D\Screens\Screen.cs" />
|
||||
<Compile Include="2D\Texture.cs" />
|
||||
<Compile Include="2D\Widgets\BlockHotbarWidget.cs" />
|
||||
|
@ -51,6 +51,7 @@ namespace ClassicalSharp {
|
||||
internal int defaultIb;
|
||||
public bool CanUseThirdPersonCamera = true;
|
||||
FpsScreen fpsScreen;
|
||||
internal HudScreen hudScreen;
|
||||
public Events Events = new Events();
|
||||
public InputHandler InputHandler;
|
||||
public ChatLog Chat;
|
||||
@ -166,6 +167,8 @@ namespace ClassicalSharp {
|
||||
Graphics.AlphaTestFunc( CompareFunc.Greater, 0.5f );
|
||||
fpsScreen = new FpsScreen( this );
|
||||
fpsScreen.Init();
|
||||
hudScreen = new HudScreen( this );
|
||||
hudScreen.Init();
|
||||
Culling = new FrustumCulling();
|
||||
EnvRenderer.Init();
|
||||
MapEnvRenderer.Init();
|
||||
@ -185,9 +188,19 @@ namespace ClassicalSharp {
|
||||
UpdateProjection();
|
||||
}
|
||||
|
||||
public void RefreshHud() {
|
||||
hudScreen.Dispose();
|
||||
hudScreen.Init();
|
||||
}
|
||||
|
||||
/// <summary> Gets whether the active screen handles all input. </summary>
|
||||
public bool ScreenLockedInput {
|
||||
get { return activeScreen != null && activeScreen.HandlesAllInput; }
|
||||
get { return activeScreen == null ? hudScreen.HandlesAllInput :
|
||||
activeScreen.HandlesAllInput; } // inlined here.
|
||||
}
|
||||
|
||||
public Screen GetActiveScreen {
|
||||
get { return activeScreen == null ? hudScreen : activeScreen; }
|
||||
}
|
||||
|
||||
const int ticksFrequency = 20;
|
||||
@ -201,9 +214,8 @@ namespace ClassicalSharp {
|
||||
Graphics.BindIb( defaultIb );
|
||||
accumulator += e.Time;
|
||||
Vertices = 0;
|
||||
if( !Focused && (activeScreen == null || !activeScreen.HandlesAllInput) ) {
|
||||
if( !Focused && !ScreenLockedInput )
|
||||
SetNewScreen( new PauseScreen( this ) );
|
||||
}
|
||||
|
||||
base.OnRenderFrame( e );
|
||||
CheckScheduledTasks( e.Time );
|
||||
@ -238,14 +250,12 @@ namespace ClassicalSharp {
|
||||
}
|
||||
|
||||
Graphics.Mode2D( Width, Height, EnvRenderer is StandardEnvRenderer );
|
||||
//OpenTK.Graphics.OpenGL.GL.PolygonMode( 0x0408, 0x1B02 );
|
||||
fpsScreen.Render( e.Time );
|
||||
if( activeScreen != null ) {
|
||||
if( activeScreen == null || !activeScreen.HidesHud )
|
||||
hudScreen.Render( e.Time );
|
||||
if( activeScreen != null )
|
||||
activeScreen.Render( e.Time );
|
||||
}
|
||||
Graphics.Mode3D( EnvRenderer is StandardEnvRenderer );
|
||||
//if( Keyboard[Key.F2] )
|
||||
// OpenTK.Graphics.OpenGL.GL.PolygonMode( 0x0408, 0x1B01 );
|
||||
|
||||
if( screenshotRequested )
|
||||
TakeScreenshot();
|
||||
@ -320,13 +330,19 @@ namespace ClassicalSharp {
|
||||
|
||||
internal Screen activeScreen;
|
||||
public void SetNewScreen( Screen screen ) {
|
||||
InputHandler.ScreenChanged( activeScreen, screen );
|
||||
|
||||
InputHandler.ScreenChanged( activeScreen, screen );
|
||||
if( activeScreen != null )
|
||||
activeScreen.Dispose();
|
||||
activeScreen = screen;
|
||||
|
||||
if( screen == null ) {
|
||||
hudScreen.GainFocus();
|
||||
} else if( activeScreen == null ) {
|
||||
hudScreen.LoseFocus();
|
||||
}
|
||||
|
||||
if( screen != null )
|
||||
screen.Init();
|
||||
activeScreen = screen;
|
||||
}
|
||||
|
||||
public void SetCamera( bool thirdPerson ) {
|
||||
|
@ -212,7 +212,7 @@ namespace ClassicalSharp {
|
||||
#region Event handlers
|
||||
|
||||
void MouseButtonUp( object sender, MouseButtonEventArgs e ) {
|
||||
if( game.activeScreen == null || !game.activeScreen.HandlesMouseUp( e.X, e.Y, e.Button ) ) {
|
||||
if( !game.GetActiveScreen.HandlesMouseUp( e.X, e.Y, e.Button ) ) {
|
||||
if( game.Network.UsingPlayerClick && e.Button <= MouseButton.Middle ) {
|
||||
byte targetId = game.Players.GetClosetPlayer( game.LocalPlayer );
|
||||
ButtonStateChanged( e.Button, false, targetId );
|
||||
@ -221,7 +221,7 @@ namespace ClassicalSharp {
|
||||
}
|
||||
|
||||
void MouseButtonDown( object sender, MouseButtonEventArgs e ) {
|
||||
if( game.activeScreen == null || !game.activeScreen.HandlesMouseClick( e.X, e.Y, e.Button ) ) {
|
||||
if( !game.GetActiveScreen.HandlesMouseClick( e.X, e.Y, e.Button ) ) {
|
||||
bool left = e.Button == MouseButton.Left;
|
||||
bool middle = e.Button == MouseButton.Middle;
|
||||
bool right = e.Button == MouseButton.Right;
|
||||
@ -232,12 +232,12 @@ namespace ClassicalSharp {
|
||||
}
|
||||
|
||||
void MouseMove( object sender, MouseMoveEventArgs e ) {
|
||||
if( game.activeScreen == null || !game.activeScreen.HandlesMouseMove( e.X, e.Y ) ) {
|
||||
if( !game.GetActiveScreen.HandlesMouseMove( e.X, e.Y ) ) {
|
||||
}
|
||||
}
|
||||
|
||||
void MouseWheelChanged( object sender, MouseWheelEventArgs e ) {
|
||||
if( game.activeScreen == null || !game.activeScreen.HandlesMouseScroll( e.Delta ) ) {
|
||||
if( !game.GetActiveScreen.HandlesMouseScroll( e.Delta ) ) {
|
||||
Inventory inv = game.Inventory;
|
||||
if( game.Camera.MouseZoom( e ) || !inv.CanChangeHeldBlock ) return;
|
||||
|
||||
@ -251,7 +251,7 @@ namespace ClassicalSharp {
|
||||
|
||||
void KeyPressHandler( object sender, KeyPressEventArgs e ) {
|
||||
char key = e.KeyChar;
|
||||
if( game.activeScreen == null || !game.activeScreen.HandlesKeyPress( key ) ) {
|
||||
if( !game.GetActiveScreen.HandlesKeyPress( key ) ) {
|
||||
}
|
||||
}
|
||||
|
||||
@ -259,7 +259,7 @@ namespace ClassicalSharp {
|
||||
Key key = e.Key;
|
||||
if( SimulateMouse( key, false ) ) return;
|
||||
|
||||
if( game.activeScreen == null || !game.activeScreen.HandlesKeyUp( key ) ) {
|
||||
if( !game.GetActiveScreen.HandlesKeyUp( key ) ) {
|
||||
}
|
||||
}
|
||||
|
||||
@ -272,7 +272,7 @@ namespace ClassicalSharp {
|
||||
game.Exit();
|
||||
} else if( key == Keys[KeyBinding.Screenshot] ) {
|
||||
game.screenshotRequested = true;
|
||||
} else if( game.activeScreen == null || !game.activeScreen.HandlesKeyDown( key ) ) {
|
||||
} else if( !game.GetActiveScreen.HandlesKeyDown( key ) ) {
|
||||
|
||||
if( !HandleBuiltinKey( key ) && !game.LocalPlayer.HandleKeyDown( key ) ) {
|
||||
HandleHotkey( key );
|
||||
@ -287,8 +287,8 @@ namespace ClassicalSharp {
|
||||
if( Hotkeys.IsHotkey( key, game.Keyboard, out text, out more ) ) {
|
||||
if( !more )
|
||||
game.Network.SendChat( text, false );
|
||||
else if( game.activeScreen is NormalScreen )
|
||||
((NormalScreen)game.activeScreen).OpenTextInputBar( text );
|
||||
else if( game.activeScreen == null )
|
||||
game.hudScreen.OpenTextInputBar( text );
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -132,7 +132,7 @@ namespace ClassicalSharp {
|
||||
}
|
||||
|
||||
void HandleLevelFinalise() {
|
||||
game.SetNewScreen( new NormalScreen( game ) );
|
||||
game.SetNewScreen( null );
|
||||
int mapWidth = reader.ReadInt16();
|
||||
int mapHeight = reader.ReadInt16();
|
||||
int mapLength = reader.ReadInt16();
|
||||
|
@ -76,7 +76,7 @@ namespace ClassicalSharp.Singleplayer {
|
||||
}
|
||||
game.Map.SetData( map, width, height, length );
|
||||
game.Events.RaiseOnNewMapLoaded();
|
||||
game.SetNewScreen( new NormalScreen( game ) );
|
||||
game.SetNewScreen( null );
|
||||
ResetPlayerPosition();
|
||||
game.Chat.Add( "&ePlaying single player", CpeMessage.Status1 );
|
||||
GC.Collect();
|
||||
|
Loading…
x
Reference in New Issue
Block a user