Java-Gaming.org
Play Revenge of the Titans! The situation is critical. We need fancy commanders to defend Earth, the moon, Mars!
Featured games (78)
games approved by the League of Dukes
Games in Showcase (408)
games submitted by our members
Games in WIP (293)
games currently in development
News: Read the Java Gaming Resources, or peek at the official Java tutorials
 
    Home     Help   Search   Login   Register   
Pages: [1]
  ignore  |  Print  
  Kryonet listener to Slick2d  (Read 535 times)
0 Members and 1 Guest are viewing this topic.
Offline Reck

Senior Newbie





« Posted 2012-12-03 16:18:50 »

When KryoNet recieves the LoginAnswer package, i want to set the field of NFTClient String name (Line 4) to the ((LoginAnswer)object).name variable (Line 21) in order to use it in the Render method. How can i do that?
 
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
30  
31  
32  
33  
34  
35  
36  
37  
38  
39  
40  
41  
42  
43  
44  
45  
46  
47  
48  
49  
50  
51  
52  
53  
54  
55  
56  
57  
58  
59  
60  
61  
62  
public class NFTClient extends BasicGame {

    Client client;
    String name;

    public NFTClient() {
        super("Client");
        client = new Client();
        client.start();

        Network.register(client);

        // ThreadedListener runs the listener methods on a different thread.
       client.addListener(new Listener.ThreadedListener(new Listener() {
            public void connected(Connection connection) {
            }

            public void received(Connection connection, Object object) {

                if (object instanceof LoginAnswer) {
                    String name = ((LoginAnswer) object).name;
                }

            }

            public void disconnected(Connection connection) {
                System.exit(0);
            }
        }));

        try {
            client.connect(5000, "localhost", Network.port);
            // Server communication after connection can go here, or in Listener#connected().
           System.out.println("heJ");
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }

    @Override
    public void init(GameContainer gc) throws SlickException {
    }

    public void render(GameContainer gc, Graphics g) throws SlickException {
        g.drawString(this.name);
    }

    @Override
    public void update(GameContainer gc, int delta) throws SlickException {
    }

    public static void main(String[] args) throws SlickException {

        Log.set(Log.LEVEL_DEBUG);
        AppGameContainer app = new AppGameContainer(new NFTClient());

        app.setDisplayMode(768, 512, false);
        app.setTargetFrameRate(60);
        app.start();

    }
}
Offline Reck

Senior Newbie





« Reply #1 - Posted 2012-12-03 18:40:24 »

This is just bugging me, i can't seem to find anything on the subject anywhere.

I really hope someone here can help out! :-)
Offline Cero
« Reply #2 - Posted 2012-12-03 18:44:47 »

Im not exactly sure what you want, but it would seem that line 21 should be simply
1  
this.name = ((LoginAnswer) object).name;

Games published by our own members! Check 'em out!
Legends of Yore - The Casual Retro Roguelike
Offline Reck

Senior Newbie





« Reply #3 - Posted 2012-12-03 18:48:50 »

Im not exactly sure what you want, but it would seem that line 21 should be simply
1  
this.name = ((LoginAnswer) object).name;


That is exactly what i want, however that is not working. It seems that the codeblock in the Listener behaves like its own class.
Netbeans suggests adding the field name in the Listener. (Line 15 that is)
I sure hope there's a way to "break out" of this block
Offline Cero
« Reply #4 - Posted 2012-12-03 23:22:07 »

ah yeah one of the annoying things about listeners
I use some workarounds which aren't - I'm sure someone else here knows how to do this properly

Offline matheus23

JGO Wizard


Medals: 72
Projects: 3


You think about my Avatar right now!


« Reply #5 - Posted 2012-12-05 20:40:40 »

I sure hope there's a way to "break out" of this block

Yes. There is a way to "break out". You have an inner class there. The listener is indeed a new class.

To get access to the object of the class you defined the inner class (the listener) in, simply use
SuperClass.this.field
, so in this case
NFTClient.this.name = ((LoginAnswer) object).name;
.

I guess this should work Smiley

See my:
    My development Blog:     | Or look at my RPG | Or simply my coding
http://matheusdev.tumblr.comRuins of Revenge  |      On Github
Pages: [1]
  ignore  |  Print  
 
 

Play Revenge of the Titans! The situation is critical. We need fancy commanders to defend Earth, the moon, Mars!
 
Play Revenge of the Titans! The situation is critical. We need fancy commanders to defend Earth, the moon, Mars and Titan!

Add your game by posting it in the WIP section,
or publish it in Showcase.

The first screenshot will be displayed as a thumbnail.

The invasion has landed! On Mars! And you're there to beat 'em!
cubemaster21 (108 views)
2013-05-17 21:29:12

alaslipknot (117 views)
2013-05-16 21:24:48

gouessej (146 views)
2013-05-16 00:53:38

gouessej (141 views)
2013-05-16 00:17:58

theagentd (154 views)
2013-05-15 15:01:13

theagentd (138 views)
2013-05-15 15:00:54

StreetDoggy (182 views)
2013-05-14 15:56:26

kutucuk (206 views)
2013-05-12 17:10:36

kutucuk (205 views)
2013-05-12 15:36:09

UnluckyDevil (212 views)
2013-05-12 05:09:57
Complex number cookbook
by Roquen
2013-04-24 12:47:31

2D Dynamic Lighting
by Oskuro
2013-04-17 16:46:12

2D Dynamic Lighting
by Oskuro
2013-04-17 16:45:57

2D Dynamic Lighting
by Oskuro
2013-04-17 16:23:20

Noise (bandpassed white)
by Roquen
2013-04-05 17:36:01

Noise (bandpassed white)
by Roquen
2013-04-03 16:17:38

Java Data structures
by Roquen
2013-03-29 13:21:12

Topic Request
by kutucuk
2013-03-22 21:42:01
Powered by MySQL Powered by PHP Powered by SMF 1.1.18 | SMF © 2013, Simple Machines | Managed by Enhanced Four Valid XHTML 1.0! Valid CSS!
Page created in 0.075 seconds with 21 queries.