• Advertisement
Sign in to follow this  

Slick2D, Nifty GUI interaction problem

This topic is 2178 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hello all!

I'm trying to get Nifty to work with Slick2D. So far everything is going great, except that I can't seem to figure out how to properly interact with the GUI. I'm trying the example in the nifty manual http://sourceforge.n....0.pdf/download
but it doesn't seem to entirely work. The Element controller is being called for bind(...), init(...) and onStartScreen() as it should, as I can see their println output, but the next() method isn't being called when I click on the GUI element that I assigned the controller to, nor the screen controller as no println is shown.
It's supposed to be called when I click the mouse button on it from the <interact onClick="next()" /> in the XML.

Here is my code:

My Element controller:

public class ElementController implements Controller {

private Element element;

@Override
public void bind(Nifty nifty, Screen screen, Element element, Properties parameter, Attributes controlDefinitionAttributes) {
this.element = element;
System.out.println("bind() called for element: " + element);
}

@Override
public void init(Properties parameter, Attributes controlDefinitionAttributes) {
System.out.println("init() called for element: " + element);
}

@Override
public void onStartScreen() {
System.out.println("onStartScreen() alled for element: " + element);
}

@Override
public void onFocus(boolean getFocus) {
System.out.println("onFocus() called for element: " + element + ", with: " +
getFocus);
}

@Override
public boolean inputEvent(NiftyInputEvent inputEvent) {
return false;
}

public void next() {
System.out.println("next() clicked for element: " + element);
}
}


MyScreenController:

class MyScreenController implements ScreenController {
public void bind(Nifty nifty, Screen screen) {}
public void onEndScreen() {}
public void onStartScreen() {}
public void next() {
System.out.println("next() called from MyScreenController");
}
}


And my XML file:

<?xml version="1.0" encoding="UTF-8"?>
<nifty xmlns="http://nifty-gui.sourceforge.net/nifty-1.3.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://niftygui.sourceforge.net/nifty-1.3.xsd http://nifty-gui.sourceforge.net/nifty-1.3.xsd">
<screen id="start" controller="predaN00b.theThing.V0004.MyScreenController">
<layer childLayout="center" controller="predaN00b.theThing.V0004.ElementController">
<panel width="100px" height="100px" childLayout="vertical" backgroundColor="#ff0f">
<text font="aurulent-sans-16.fnt" color="#ffff" text="Hello World!">
<interact onClick="next()" />
</text>
</panel>
</layer>
</screen>
</nifty>


My main class, in case it's needed:
My main class:

public class MainGameState extends BasicGame {

public Nifty nifty;

public MainGame() {
super("Test");
}

public void init(GameContainer container, StateBasedGame game) throws SlickException {

nifty = new Nifty(new SlickRenderDevice(container), new NullSoundDevice(), new PlainSlickInputSystem(), new AccurateTimeProvider());

nifty.addXml("/xml/MainState.xml");
nifty.gotoScreen("start");

}

public void update(GameContainer container, StateBasedGame game, int delta) throws SlickException {
nifty.update();
}

public void render(GameContainer container, StateBasedGame game, Graphics graphics) throws SlickException {
nifty.render(false);
}

public static void main(String[] args) throws SlickException {
AppGameContainer app = new AppGameContainer(new MainGame());
app.setAlwaysRender(true);
app.setDisplayMode( 1260 , 720, false); //window size
app.start();
}
}

Share this post


Link to post
Share on other sites
Advertisement
Bumpy bump.

It's weird.. I'm using the PlainSlickInputSystem, which should not only let Nifty get the input events, but also prevent any from going to my game, which after putting a listener, I discovered was still getting the inputs instead of Nifty..

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement