예제 #1
0
 protected override void TextButtonClick( Game game, Widget widget, MouseButton mouseBtn )
 {
     if( mouseBtn != MouseButton.Left ) return;
     string path = Path.Combine( Program.AppDirectory, "maps" );
     path = Path.Combine( path, ((ButtonWidget)widget).Text );
     if( File.Exists( path ) )
         LoadMap( path );
 }
예제 #2
0
 protected override void TextButtonClick( Game game, Widget widget, MouseButton mouseBtn )
 {
     if( mouseBtn != MouseButton.Left ) return;
     string text = ((ButtonWidget)widget).Text;
     Hotkey original = default(Hotkey);
     if( text != "-----" )
         original = Parse( text );
     game.SetNewScreen( new EditHotkeyScreen( game, original ) );
 }
        public override void Init()
        {
            base.Init();

            widgets = new Widget[] {
                // Column 1
                MakeBool( -1, -150, "Hacks enabled", OptionsKey.HacksEnabled,
                     OnWidgetClick, g => g.LocalPlayer.Hacks.Enabled,
                     (g, v) => { g.LocalPlayer.Hacks.Enabled = v;
                     	g.LocalPlayer.CheckHacksConsistency(); } ),

                Make2( -1, -100, "Speed multiplier", OnWidgetClick,
                     g => g.LocalPlayer.Hacks.SpeedMultiplier.ToString( "F2" ),
                     (g, v) => { g.LocalPlayer.Hacks.SpeedMultiplier = Single.Parse( v );
                     	Options.Set( OptionsKey.Speed, v ); } ),

                MakeBool( -1, -50, "Camera clipping", OptionsKey.CameraClipping,
                     OnWidgetClick, g => g.CameraClipping, (g, v) => g.CameraClipping = v ),

                Make2( -1, 0, "Jump height", OnWidgetClick,
                     g => g.LocalPlayer.JumpHeight.ToString( "F3" ),
                     (g, v) => g.LocalPlayer.physics.CalculateJumpVelocity( Single.Parse( v ) ) ),

                MakeBool( -1, 50, "Double jump", OptionsKey.DoubleJump,
                     OnWidgetClick, g => g.LocalPlayer.Hacks.DoubleJump,
                     (g, v) => g.LocalPlayer.Hacks.DoubleJump = v ),

                // Column 2
                MakeBool( 1, -100, "Modifiable liquids", OptionsKey.ModifiableLiquids,
                         OnWidgetClick, g => g.ModifiableLiquids, (g, v) => g.ModifiableLiquids = v ),

                MakeBool( 1, -50, "Pushback placing", OptionsKey.PushbackPlacing,
                     OnWidgetClick, g => g.LocalPlayer.Hacks.PushbackPlacing,
                     (g, v) => g.LocalPlayer.Hacks.PushbackPlacing = v ),

                MakeBool( 1, 0, "Noclip slide", OptionsKey.NoclipSlide,
                     OnWidgetClick, g => g.LocalPlayer.Hacks.NoclipSlide,
                     (g, v) => g.LocalPlayer.Hacks.NoclipSlide = v ),

                Make2( 1, 50, "Field of view", OnWidgetClick,
                     g => g.Fov.ToString(),
                     (g, v) => { g.Fov = Int32.Parse( v );
                     	Options.Set( OptionsKey.FieldOfView, v );
                     	g.UpdateProjection();
                     } ),

                MakeBack( false, titleFont,
                     (g, w) => g.SetNewScreen( new OptionsGroupScreen( g ) ) ),
                null, null,
            };

            MakeValidators();
            MakeDescriptions();
            game.Events.HackPermissionsChanged += CheckHacksAllowed;
            CheckHacksAllowed( null, null );
        }
        public override void Init()
        {
            base.Init();
            INetworkProcessor network = game.Network;

            widgets = new Widget[] {
                // Column 1
                MakeBool( -1, -150, "Music", OptionsKey.UseMusic,
                     OnWidgetClick, g => g.UseMusic,
                     (g, v) => { g.UseMusic = v; g.AudioPlayer.SetMusic( g.UseMusic ); }),

                MakeBool( -1, -100, "Invert mouse", OptionsKey.InvertMouse,
                         OnWidgetClick, g => g.InvertMouse, (g, v) => g.InvertMouse = v ),

                Make2( -1, -50, "View distance", OnWidgetClick,
                     g => g.ViewDistance.ToString(),
                     (g, v) => g.SetViewDistance( Int32.Parse( v ), true ) ),

                !network.IsSinglePlayer ? null :
                    MakeBool( -1, 0, "Block physics", OptionsKey.SingleplayerPhysics, OnWidgetClick,
                         g => ((SinglePlayerServer)network).physics.Enabled,
                         (g, v) => ((SinglePlayerServer)network).physics.Enabled = v),

                // Column 2
                MakeBool( 1, -150, "Sound", OptionsKey.UseSound,
                     OnWidgetClick, g => g.UseSound,
                     (g, v) => { g.UseSound = v; g.AudioPlayer.SetSound( g.UseSound ); }),

                MakeBool( 1, -100, "Show FPS", OptionsKey.ShowFPS,
                     OnWidgetClick, g => g.ShowFPS, (g, v) => g.ShowFPS = v ),

                MakeBool( 1, -50, "View bobbing", OptionsKey.ViewBobbing,
                     OnWidgetClick, g => g.ViewBobbing, (g, v) => g.ViewBobbing = v ),

                Make2( 1, 0, "FPS mode", OnWidgetClick,
                     g => g.FpsLimit.ToString(),
                     (g, v) => { object raw = Enum.Parse( typeof(FpsLimitMethod), v );
                     	g.SetFpsLimitMethod( (FpsLimitMethod)raw );
                     	Options.Set( OptionsKey.FpsLimit, v ); } ),

                !game.ClassicHacks ? null :
                    MakeBool( 0, 60, "Hacks enabled", OptionsKey.HacksEnabled,
                         OnWidgetClick, g => g.LocalPlayer.Hacks.Enabled,
                         (g, v) => { g.LocalPlayer.Hacks.Enabled = v;
                         	g.LocalPlayer.CheckHacksConsistency(); } ),

                MakeControlsWidget(),

                MakeBack( "Done", 25, titleFont, (g, w) => g.SetNewScreen( new PauseScreen( g ) ) ),
                null, null,
            };
            MakeValidators();
        }
 protected bool HandleMouseClick( Widget[] widgets, int mouseX, int mouseY, MouseButton button )
 {
     // iterate backwards (because last elements rendered are shown over others)
     for( int i = widgets.Length - 1; i >= 0; i-- ) {
         Widget widget = widgets[i];
         if( widget != null && widget.Bounds.Contains( mouseX, mouseY ) ) {
             if( widget.OnClick != null && !widget.Disabled )
                 widget.OnClick( game, widget, button );
             return true;
         }
     }
     return false;
 }
예제 #6
0
        protected override void WidgetSelected( Widget widget )
        {
            ButtonWidget button = widget as ButtonWidget;
            if( selectedWidget == widget || button == null ||
               button == widgets[widgets.Length - 1] ) return;

            selectedWidget = button;
            if( descWidget != null ) descWidget.Dispose();
            if( button == null ) return;

            string text = descriptions[Array.IndexOf<Widget>(widgets, button)];
            descWidget = ChatTextWidget.Create( game, 0, 100, text, Anchor.Centre, Anchor.Centre, regularFont );
        }
        public override void Init()
        {
            base.Init();
            descriptions = normDescriptions;
            originKey = KeyBinding.Forward;
            widgets = new Widget[descriptions.Length + 7];
            MakeKeys( KeyBinding.Forward, 0, 8, -150, -220 );
            MakeKeys( KeyBinding.OpenInventory, 8, 2, 150, -220 );
            index += 3; // Skip SendChat, PauseOrExit, PlayerList
            MakeKeys( KeyBinding.Speed, 13, 5, 150, -220 + 2 * btnDistance );

            widgets[index++] = MakeBack( false, titleFont,
                                        (g, w) => g.SetNewScreen( new ClassicOptionsScreen( g ) ) );
        }
 public override void Init()
 {
     base.Init();
     descriptions = normDescriptions;
     originKey = KeyBinding.Speed;
     widgets = new Widget[descriptions.Length + 2];
     MakeKeys( KeyBinding.Speed, 0, 7, -150, -180 );
     MakeKeys( KeyBinding.Screenshot, 7, 7, 150, -180 );
     widgets[index++] = MakeBack( "Back to menu", 5, titleFont,
                                 (g, w) => g.SetNewScreen( new OptionsGroupScreen( g ) ) );
     widgets[index++] = ButtonWidget.Create(
         game, 0, 170, 300, 35, "Mouse key bindings",
         Anchor.Centre, Anchor.Centre, titleFont, NextClick );
 }
        public override void Init()
        {
            base.Init();

            widgets = new Widget[] {
                // Column 1
                Make2( -1, -150, "Clouds col", OnWidgetClick,
                     g => g.World.CloudsCol.ToRGBHexString(),
                     (g, v) => g.World.SetCloudsColour( FastColour.Parse( v ) ) ),

                Make2( -1, -100, "Sky col", OnWidgetClick,
                     g => g.World.SkyCol.ToRGBHexString(),
                     (g, v) => g.World.SetSkyColour( FastColour.Parse( v ) ) ),

                Make2( -1, -50, "Fog col", OnWidgetClick,
                     g => g.World.FogCol.ToRGBHexString(),
                     (g, v) => g.World.SetFogColour( FastColour.Parse( v ) ) ),

                Make2( -1, 0, "Clouds speed", OnWidgetClick,
                     g => g.World.CloudsSpeed.ToString( "F2" ),
                     (g, v) => g.World.SetCloudsSpeed( Single.Parse( v ) ) ),

                Make2( -1, 50, "Clouds height", OnWidgetClick,
                     g => g.World.CloudHeight.ToString(),
                     (g, v) => g.World.SetCloudsLevel( Int32.Parse( v ) ) ),

                // Column 2
                Make2( 1, -100, "Sunlight col", OnWidgetClick,
                     g => g.World.Sunlight.ToRGBHexString(),
                     (g, v) => g.World.SetSunlight( FastColour.Parse( v ) ) ),

                Make2( 1, -50, "Shadow col", OnWidgetClick,
                     g => g.World.Shadowlight.ToRGBHexString(),
                     (g, v) => g.World.SetShadowlight( FastColour.Parse( v ) ) ),

                Make2( 1, 0, "Weather", OnWidgetClick,
                     g => g.World.Weather.ToString(),
                     (g, v) => g.World.SetWeather( (Weather)Enum.Parse( typeof(Weather), v ) ) ),

                Make2( 1, 50, "Water level", OnWidgetClick,
                     g => g.World.EdgeHeight.ToString(),
                     (g, v) => g.World.SetEdgeLevel( Int32.Parse( v ) ) ),

                MakeBack( false, titleFont,
                         (g, w) => g.SetNewScreen( new OptionsGroupScreen( g ) ) ),
                null, null, null,
            };
            MakeDefaultValues();
            MakeValidators();
        }
        public override void Init()
        {
            base.Init();
            INetworkProcessor network = game.Network;

            widgets = new Widget[] {
                // Column 1
                !network.IsSinglePlayer ? null :
                    Make2( -1, -100, "Click distance", OnWidgetClick,
                         g => g.LocalPlayer.ReachDistance.ToString(),
                         (g, v) => g.LocalPlayer.ReachDistance = Single.Parse( v ) ),

                MakeBool( -1, -50, "Music", OptionsKey.UseMusic,
                     OnWidgetClick, g => g.UseMusic,
                     (g, v) => { g.UseMusic = v; g.AudioPlayer.SetMusic( g.UseMusic ); }),

                MakeBool( -1, 0, "Sound", OptionsKey.UseSound,
                     OnWidgetClick, g => g.UseSound,
                     (g, v) => { g.UseSound = v; g.AudioPlayer.SetSound( g.UseSound ); }),

                MakeBool( -1, 50, "View bobbing", OptionsKey.ViewBobbing,
                         OnWidgetClick, g => g.ViewBobbing, (g, v) => g.ViewBobbing = v ),

                // Column 2
                !network.IsSinglePlayer ? null :
                    MakeBool( 1, -100, "Block physics", OptionsKey.SingleplayerPhysics, OnWidgetClick,
                             g => ((SinglePlayerServer)network).physics.Enabled,
                             (g, v) => ((SinglePlayerServer)network).physics.Enabled = v ),

                MakeBool( 1, -50, "Auto close launcher", OptionsKey.AutoCloseLauncher, OnWidgetClick,
                         g => Options.GetBool( OptionsKey.AutoCloseLauncher, false ),
                         (g, v) => Options.Set( OptionsKey.AutoCloseLauncher, v ) ),

                MakeBool( 1, 0, "Invert mouse", OptionsKey.InvertMouse,
                         OnWidgetClick, g => g.InvertMouse, (g, v) => g.InvertMouse = v ),

                Make2( 1, 50, "Mouse sensitivity", OnWidgetClick,
                     g => g.MouseSensitivity.ToString(),
                     (g, v) => { g.MouseSensitivity = Int32.Parse( v );
                     	Options.Set( OptionsKey.Sensitivity, v ); } ),

                MakeBack( false, titleFont,
                         (g, w) => g.SetNewScreen( new OptionsGroupScreen( g ) ) ),
                null, null,
            };
            MakeValidators();
            MakeDescriptions();
        }
        protected override void TextButtonClick( Game game, Widget widget, MouseButton mouseBtn )
        {
            if( mouseBtn != MouseButton.Left ) return;
            string file = ((ButtonWidget)widget).Text;
            string dir = Path.Combine( Program.AppDirectory, TexturePackExtractor.Dir );
            string path = Path.Combine( dir, file );
            if( !File.Exists( path ) ) return;

            int index = currentIndex;
            game.DefaultTexturePack = file;
            game.World.TextureUrl = null;
            TexturePackExtractor extractor = new TexturePackExtractor();
            extractor.Extract( path, game );
            Recreate();
            SetCurrentIndex( index );
        }
        public override void Init()
        {
            base.Init();

            widgets = new Widget[] {
                // Column 1
                MakeBool( -1, -100, "Simple arms anim", OptionsKey.SimpleArmsAnim,
                         OnWidgetClick, g => g.SimpleArmsAnim, (g, v) => g.SimpleArmsAnim = v ),

                MakeBool( -1, -50, "Classic gui textures", OptionsKey.UseClassicGui,
                         OnWidgetClick, g => g.UseClassicGui, (g, v) => g.UseClassicGui = v ),

                MakeBool( -1, 0, "Classic player list", OptionsKey.UseClassicTabList,
                         OnWidgetClick, g => g.UseClassicTabList, (g, v) => g.UseClassicTabList = v ),

                MakeBool( -1, 50, "Classic options", OptionsKey.UseClassicOptions,
                         OnWidgetClick, g => g.UseClassicOptions, (g, v) => g.UseClassicOptions = v ),

                // Column 2
                MakeBool( 1, -100, "Allow custom blocks", OptionsKey.AllowCustomBlocks,
                         OnWidgetClick, g => g.AllowCustomBlocks, (g, v) => g.AllowCustomBlocks = v ),

                MakeBool( 1, -50, "Use CPE", OptionsKey.UseCPE,
                         OnWidgetClick, g => g.UseCPE, (g, v) => g.UseCPE = v ),

                MakeBool( 1, 0, "Use server textures", OptionsKey.AllowServerTextures,
                         OnWidgetClick, g => g.AllowServerTextures, (g, v) => g.AllowServerTextures = v ),

                MakeBack( false, titleFont,
                     (g, w) => g.SetNewScreen( new PauseScreen( g ) ) ),
                null, null,
            };

            validators = new MenuInputValidator[] {
                new BooleanValidator(),
                new BooleanValidator(),
                new BooleanValidator(),
                new BooleanValidator(),

                new BooleanValidator(),
                new BooleanValidator(),
                new BooleanValidator(),
            };
            infoWidget = ChatTextWidget.Create( game, 0, 100, "&eButtons on the right require a client restart",
                                           Anchor.Centre, Anchor.Centre, regularFont );
        }
        protected bool HandleMouseMove( Widget[] widgets, int mouseX, int mouseY )
        {
            if( lastX == mouseX && lastY == mouseY )
                return true;
            for( int i = 0; i < widgets.Length; i++ ) {
                if( widgets[i] == null || !widgets[i].Active ) continue;
                widgets[i].Active = false;
            }

            for( int i = widgets.Length - 1; i >= 0; i-- ) {
                Widget widget = widgets[i];
                if( widget != null && widget.Bounds.Contains( mouseX, mouseY ) ) {
                    widget.Active = true;
                    lastX = mouseX; lastY = mouseY;
                    WidgetSelected( widget );
                    return true;
                }
            }
            lastX = mouseX; lastY = mouseY;
            WidgetSelected( null );
            return false;
        }
        public override void Init()
        {
            base.Init();
            INetworkProcessor network = game.Network;
            extHelpY = 50;

            widgets = new Widget[] {

                Make2( -1, -50, "FPS mode", OnWidgetClick,
                     g => g.FpsLimit.ToString(),
                     (g, v) => { object raw = Enum.Parse( typeof(FpsLimitMethod), v );
                     	g.SetFpsLimitMethod( (FpsLimitMethod)raw );
                     	Options.Set( OptionsKey.FpsLimit, v ); } ),

                Make2( -1, 0, "View distance", OnWidgetClick,
                     g => g.ViewDistance.ToString(),
                     (g, v) => g.SetViewDistance( Int32.Parse( v ), true ) ),

                Make2( 1, -50, "Names", OnWidgetClick,
                     g => g.Players.NamesMode.ToString(),
                     (g, v) => { object raw = Enum.Parse( typeof(NameMode), v );
                     	g.Players.NamesMode = (NameMode)raw;
                     	Options.Set( OptionsKey.NamesMode, v ); } ),

                Make2( 1, 0, "Shadows", OnWidgetClick,
                     g => g.Players.ShadowMode.ToString(),
                     (g, v) => { object raw = Enum.Parse( typeof(EntityShadow), v );
                     	g.Players.ShadowMode = (EntityShadow)raw;
                     	Options.Set( OptionsKey.EntityShadow, v ); } ),

                MakeBack( false, titleFont,
                         (g, w) => g.SetNewScreen( new OptionsGroupScreen( g ) ) ),
                null, null,
            };
            MakeValidators();
            MakeDescriptions();
        }
예제 #15
0
        void MakeNormal()
        {
            widgets = new Widget[] {
                Make( -1, -100, "Misc options",
                     (g, w) => g.SetNewScreen( new MiscOptionsScreen( g ) ) ),
                Make( -1, -50, "Gui options",
                     (g, w) => g.SetNewScreen( new GuiOptionsScreen( g ) ) ),
                Make( -1, 0, "Graphics options",
                     (g, w) => g.SetNewScreen( new GraphicsOptionsScreen( g ) ) ),
                Make( -1, 50, "Key bindings",
                     (g, w) => g.SetNewScreen( new NormalKeyBindingsScreen( g ) ) ),
                Make( 1, -50, "Hacks settings",
                     (g, w) => g.SetNewScreen( new HacksSettingsScreen( g ) ) ),
                Make( 1, 0, "Env settings",
                     (g, w) => g.SetNewScreen( new EnvSettingsScreen( g ) ) ),
                Make( 1, 50, "Nostalgia options",
                     (g, w) => g.SetNewScreen( new NostalgiaScreen( g ) ) ),

                MakeBack( false, titleFont,
                         (g, w) => g.SetNewScreen( new PauseScreen( g ) ) ),
            };
        }
 void OnYesClick( Game g, Widget w, MouseButton mouseBtn )
 {
     if( mouseBtn != MouseButton.Left ) return;
     if( yesClick != null )
         yesClick( this );
     Dispose();
     CloseScreen();
 }
 void OnYesAlwaysClick( Game g, Widget w, MouseButton mouseBtn )
 {
     if( mouseBtn != MouseButton.Left ) return;
     OnYesClick( g, w, mouseBtn );
     string url = ((string)Metadata).Substring( 3 );
     if( !game.AcceptedUrls.HasEntry( url ) )
         game.AcceptedUrls.AddEntry( url );
 }
        void OnNoClick( Game g, Widget w, MouseButton mouseBtn )
        {
            if( mouseBtn != MouseButton.Left ) return;
            if( confirmNo && !confirmMode ) {
                InitConfirmButtons( false ); return;
            }

            if( noClick != null )
                noClick( this );
            Dispose();
            CloseScreen();
        }
        void OnNoAlwaysClick( Game g, Widget w, MouseButton mouseBtn )
        {
            if( mouseBtn != MouseButton.Left ) return;
            if( confirmNo && !confirmMode ) {
                InitConfirmButtons( true ); return;
            }

            OnNoClick( g, w, mouseBtn );
            string url = ((string)Metadata).Substring( 3 );
            if( !game.DeniedUrls.HasEntry( url ) )
                game.DeniedUrls.AddEntry( url );
        }
 void GoBackClick( Game g, Widget w, MouseButton mouseBtn )
 {
     if( mouseBtn != MouseButton.Left ) return;
     InitStandardButtons();
     confirmMode = false;
     SetText( lastTitle, lastBody );
 }
예제 #21
0
        public override void Init()
        {
            game.Keyboard.KeyRepeat = true;
            base.Init();
            regularFont = new Font( game.FontName, 16, FontStyle.Regular );

            inputWidget = MenuInputWidget.Create(
                game, 0, -30, 500, 30, "", Anchor.Centre, Anchor.Centre,
                regularFont, titleFont, new PathValidator() );

            widgets = new Widget[] {
                ButtonWidget.Create( game, 0, 20, 301, 40, "Save", Anchor.Centre,
                                    Anchor.Centre, titleFont, SaveClassic ),
                ButtonWidget.Create( game, -150, 120, 201, 40, "Save schematic", Anchor.Centre,
                                    Anchor.Centre, titleFont, SaveSchematic ),
                ChatTextWidget.Create( game, 110, 120, "&eCan be imported into MCEdit", Anchor.Centre,
                                    Anchor.Centre, regularFont ),
                null,
                MakeBack( false, titleFont,
                         (g, w) => g.SetNewScreen( new PauseScreen( g ) ) ),
            };
        }
예제 #22
0
 void SaveSchematic( Game game, Widget widget, MouseButton mouseBtn )
 {
     DoSave( widget, mouseBtn, ".schematic" );
 }
예제 #23
0
 protected abstract void TextButtonClick( Game game, Widget widget, MouseButton mouseBtn );
        void OkButtonClick( Game game, Widget widget, MouseButton mouseBtn )
        {
            if( mouseBtn != MouseButton.Left ) return;
            string text = inputWidget.GetText();
            if( text.Length == 0 ) {
                MakeDescWidget( "Please enter a filename" );
                return;
            }
            string file = Path.ChangeExtension( text, ".cw" );
            text = Path.Combine( Program.AppDirectory, "maps" );
            text = Path.Combine( text, file );

            if( File.Exists( text ) ) {
                widgets[1] = ButtonWidget.Create( game, 0, 90, 260, 30, "Overwrite existing?",
                                                 Anchor.Centre, Anchor.Centre, titleFont, OverwriteButtonClick );
            } else {
                // NOTE: We don't immediately save here, because otherwise the 'saving...'
                // will not be rendered in time because saving is done on the main thread.
                MakeDescWidget( "Saving.." );
                textPath = text;
                RemoveOverwriteButton();
            }
        }
 void DefaultButtonClick( Game game, Widget widget, MouseButton mouseBtn )
 {
     if( mouseBtn != MouseButton.Left ) return;
     int index = Array.IndexOf<Widget>( widgets, targetWidget );
     string defValue = defaultValues[index];
     inputWidget.SetText( defValue );
 }
        void OverwriteButtonClick( Game game, Widget widget, MouseButton mouseBtn )
        {
            if( mouseBtn != MouseButton.Left ) return;
            string text = inputWidget.GetText();
            string file = Path.ChangeExtension( text, ".cw" );
            text = Path.Combine( Program.AppDirectory, "maps" );
            text = Path.Combine( text, file );

            MakeDescWidget( "Saving.." );
            textPath = text;
            RemoveOverwriteButton();
        }
예제 #27
0
        void ReconnectClick( Game g, Widget w, MouseButton mouseBtn )
        {
            if( mouseBtn != MouseButton.Left ) return;
            string connectString = "Connecting to " + game.IPAddress + ":" + game.Port +  "..";
            foreach( IGameComponent comp in game.Components )
                comp.Reset( game );
            game.BlockInfo.Reset( game );

            game.SetNewScreen( new LoadingMapScreen( game, connectString, "Waiting for handshake" ) );
            game.Network.Connect( game.IPAddress, game.Port );
        }
예제 #28
0
        void MakeNormal()
        {
            widgets = new Widget[] {
                Make( -1, -50, "Options",
                     (g, w) => g.SetNewScreen( new OptionsGroupScreen( g ) ) ),
                Make( 1, -50, "Generate level",
                         (g, w) => g.SetNewScreen( new GenLevelScreen( g ) ) ),
                Make( 1, 0, "Load level",
                         (g, w) => g.SetNewScreen( new LoadLevelScreen( g ) ) ),
                Make( 1, 50, "Save level",
                     (g, w) => g.SetNewScreen( new SaveLevelScreen( g ) ) ),
                Make( -1, 0, "Select texture pack",
                     (g, w) => g.SetNewScreen( new TexturePackScreen( g ) ) ),
                Make( -1, 50, "Hotkeys",
                     (g, w) => g.SetNewScreen( new HotkeyScreen( g ) ) ),

                // Other
                ButtonWidget.Create( game, 5, 5, 120, 40, "Quit game",
                                    Anchor.BottomOrRight, Anchor.BottomOrRight,
                                    titleFont, LeftOnly( (g, w) => g.Exit() ) ),
                MakeBack( true, titleFont, (g, w) => g.SetNewScreen( null ) ),
            };
        }
        public override void Init()
        {
            base.Init();

            widgets = new Widget[] {
                // Column 1
                MakeBool( -1, -150, "Block in hand", OptionsKey.ShowBlockInHand,
                     OnWidgetClick, g => g.ShowBlockInHand, (g, v) => g.ShowBlockInHand = v ),

                MakeBool( -1, -100, "Show FPS", OptionsKey.ShowFPS,
                         OnWidgetClick, g => g.ShowFPS, (g, v) => g.ShowFPS = v ),

                Make2( -1, -50, "Hotbar scale", OnWidgetClick,
                     g => g.HotbarScale.ToString( "F1" ),
                     (g, v) => { g.HotbarScale = Single.Parse( v );
                     	Options.Set( OptionsKey.HotbarScale, v );
                     	g.RefreshHud();
                     } ),

                Make2( -1, 0, "Inventory scale", OnWidgetClick,
                     g => g.InventoryScale.ToString( "F1" ),
                     (g, v) => { g.InventoryScale = Single.Parse( v );
                     	Options.Set( OptionsKey.InventoryScale, v );
                     	g.RefreshHud();
                     } ),

                MakeBool( -1, 50, "Tab auto-complete", OptionsKey.TabAutocomplete,
                         OnWidgetClick, g => g.TabAutocomplete, (g, v) => g.TabAutocomplete = v ),

                // Column 2
                MakeBool( 1, -150, "Clickable chat", OptionsKey.ClickableChat,
                     OnWidgetClick, g => g.ClickableChat, (g, v) => g.ClickableChat = v ),

                Make2( 1, -100, "Chat scale", OnWidgetClick,
                     g => g.ChatScale.ToString( "F1" ),
                     (g, v) => { g.ChatScale = Single.Parse( v );
                     	Options.Set( OptionsKey.ChatScale, v );
                     	g.RefreshHud();
                     } ),

                Make2( 1, -50, "Chat lines", OnWidgetClick,
                     g => g.ChatLines.ToString(),
                     (g, v) => { g.ChatLines = Int32.Parse( v );
                     	Options.Set( OptionsKey.ChatLines, v );
                     	g.RefreshHud();
                     } ),

                MakeBool( 1, 0, "Use font", OptionsKey.ArialChatFont,
                     OnWidgetClick, g => !g.Drawer2D.UseBitmappedChat,
                     (g, v) => { g.Drawer2D.UseBitmappedChat = !v; HandleFontChange(); } ),

                Make2( 1, 50, "Font", OnWidgetClick,
                     g => g.FontName,
                     (g, v) => { g.FontName = v;
                     	Options.Set( OptionsKey.FontName, v );
                     	HandleFontChange();
                     } ),

                MakeBack( false, titleFont,
                         (g, w) => g.SetNewScreen( new OptionsGroupScreen( g ) ) ),
                null, null,
            };
            MakeValidators();
            MakeDescriptions();
        }
예제 #30
0
        void MakeClassic()
        {
            widgets = new Widget[] {
                MakeClassic( 0, -100, "Options",
                            (g, w) => g.SetNewScreen( new ClassicOptionsScreen( g ) ) ),
                MakeClassic( 0, -50, "Generate level",
                            (g, w) => g.SetNewScreen( new GenLevelScreen( g ) ) ),
                MakeClassic( 0, 0, "Load level",
                            (g, w) => g.SetNewScreen( new LoadLevelScreen( g ) ) ),
                MakeClassic( 0, 50, "Save level",
                            (g, w) => g.SetNewScreen( new SaveLevelScreen( g ) ) ),

                MakeBack( true, titleFont, (g, w) => g.SetNewScreen( null ) ),

                game.ClassicMode ? null :
                    MakeClassic( 0, 150, "Nostalgia options",
                                (g, w) => g.SetNewScreen( new NostalgiaScreen( g ) ) ),
            };
        }