mirror of
https://github.com/ClassiCube/ClassiCube.git
synced 2025-10-09 14:03:42 -04:00
102 lines
2.5 KiB
C#
102 lines
2.5 KiB
C#
using System;
|
|
using System.Drawing;
|
|
using OpenTK.Input;
|
|
|
|
namespace ClassicalSharp {
|
|
|
|
public class NormalScreen : Screen {
|
|
|
|
public NormalScreen( Game window ) : base( window ) {
|
|
}
|
|
|
|
ChatScreen chat;
|
|
BlockHotbarWidget hotbar;
|
|
Widget playerList;
|
|
Font playerFont;
|
|
|
|
public override void Render( double delta ) {
|
|
GraphicsApi.Texturing = true;
|
|
chat.Render( delta );
|
|
hotbar.Render( delta );
|
|
if( playerList != null ) {
|
|
playerList.Render( delta );
|
|
// NOTE: Should usually be caught by KeyUp, but just in case.
|
|
if( !Window.IsKeyDown( KeyMapping.PlayerList ) ) {
|
|
playerList.Dispose();
|
|
playerList = null;
|
|
}
|
|
}
|
|
GraphicsApi.Texturing = false;
|
|
}
|
|
|
|
public override void Dispose() {
|
|
playerFont.Dispose();
|
|
chat.Dispose();
|
|
hotbar.Dispose();
|
|
if( playerList != null ) {
|
|
playerList.Dispose();
|
|
}
|
|
}
|
|
|
|
public override void OnResize( int oldWidth, int oldHeight, int width, int height ) {
|
|
chat.OnResize( oldWidth, oldHeight, width, height );
|
|
hotbar.OnResize( oldWidth, oldHeight, width, height );
|
|
if( playerList != null ) {
|
|
playerList.OnResize( oldWidth, oldHeight, width, height );
|
|
}
|
|
}
|
|
|
|
public override void Init() {
|
|
playerFont = new Font( "Arial", 12 );
|
|
chat = new ChatScreen( Window );
|
|
chat.Window = Window;
|
|
const int blockSize = 32;
|
|
chat.ChatLogYOffset = blockSize + blockSize;
|
|
chat.ChatInputYOffset = blockSize + blockSize / 2;
|
|
chat.Init();
|
|
hotbar = new BlockHotbarWidget( Window );
|
|
hotbar.Init();
|
|
}
|
|
|
|
public override bool HandlesAllInput {
|
|
get { return chat.HandlesAllInput; }
|
|
}
|
|
|
|
public override bool HandlesKeyPress( char key ) {
|
|
return chat.HandlesKeyPress( key );
|
|
}
|
|
|
|
public override bool HandlesKeyDown( Key key ) {
|
|
if( key == Window.Keys[KeyMapping.PlayerList] ) {
|
|
if( playerList == null ) {
|
|
if( Window.Network.UsingExtPlayerList ) {
|
|
playerList = new ExtPlayerListWidget( Window, playerFont );
|
|
} else {
|
|
playerList = new NormalPlayerListWidget( Window, playerFont );
|
|
}
|
|
playerList.Init();
|
|
}
|
|
}
|
|
if( chat.HandlesKeyDown( key ) ) {
|
|
return true;
|
|
}
|
|
return hotbar.HandlesKeyDown( key );
|
|
}
|
|
|
|
public override bool HandlesKeyUp( Key key ) {
|
|
if( key == Window.Keys[KeyMapping.PlayerList] ) {
|
|
if( playerList != null ) {
|
|
playerList.Dispose();
|
|
playerList = null;
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public override bool HandlesMouseScroll( int delta ) {
|
|
return chat.HandlesMouseScroll( delta );
|
|
}
|
|
}
|
|
}
|