project_files/Android-build/SDL-android-project/src/org/hedgewars/hedgeroid/GameConnection.java
equal
deleted
inserted
replaced
22 import java.net.ConnectException; |
22 import java.net.ConnectException; |
23 |
23 |
24 import org.hedgewars.hedgeroid.Datastructures.GameConfig; |
24 import org.hedgewars.hedgeroid.Datastructures.GameConfig; |
25 import org.hedgewars.hedgeroid.frontlib.Flib; |
25 import org.hedgewars.hedgeroid.frontlib.Flib; |
26 import org.hedgewars.hedgeroid.frontlib.Frontlib; |
26 import org.hedgewars.hedgeroid.frontlib.Frontlib; |
|
27 import org.hedgewars.hedgeroid.frontlib.Frontlib.ByteArrayPtr; |
27 import org.hedgewars.hedgeroid.frontlib.Frontlib.BytesCallback; |
28 import org.hedgewars.hedgeroid.frontlib.Frontlib.BytesCallback; |
28 import org.hedgewars.hedgeroid.frontlib.Frontlib.GameSetupPtr; |
29 import org.hedgewars.hedgeroid.frontlib.Frontlib.GameSetupPtr; |
29 import org.hedgewars.hedgeroid.frontlib.Frontlib.GameconnPtr; |
30 import org.hedgewars.hedgeroid.frontlib.Frontlib.GameconnPtr; |
30 import org.hedgewars.hedgeroid.frontlib.Frontlib.IntCallback; |
31 import org.hedgewars.hedgeroid.frontlib.Frontlib.IntCallback; |
31 import org.hedgewars.hedgeroid.frontlib.Frontlib.StrBoolCallback; |
32 import org.hedgewars.hedgeroid.frontlib.Frontlib.StrBoolCallback; |
39 import android.os.Handler; |
40 import android.os.Handler; |
40 import android.os.HandlerThread; |
41 import android.os.HandlerThread; |
41 import android.os.Looper; |
42 import android.os.Looper; |
42 import android.util.Log; |
43 import android.util.Log; |
43 |
44 |
44 import com.sun.jna.Memory; |
|
45 import com.sun.jna.Pointer; |
45 import com.sun.jna.Pointer; |
46 |
46 |
47 /** |
47 /** |
48 * This class handles both talking to the engine (IPC) for running a game, and |
48 * This class handles both talking to the engine (IPC) for running a game, and |
49 * coordinating with the netconn if it is a netgame, using the frontlib for the |
49 * coordinating with the netconn if it is a netgame, using the frontlib for the |
170 } |
170 } |
171 }; |
171 }; |
172 |
172 |
173 // runs on the IPCThread |
173 // runs on the IPCThread |
174 private final BytesCallback engineMessageCb = new BytesCallback() { |
174 private final BytesCallback engineMessageCb = new BytesCallback() { |
175 public void callback(Pointer context, Pointer buffer, NativeSizeT size) { |
175 public void callback(Pointer context, ByteArrayPtr buffer, NativeSizeT size) { |
176 netplay.sendEngineMessage(buffer.getByteArray(0, size.intValue())); |
176 netplay.sendEngineMessage(buffer.deref(size.intValue())); |
177 } |
177 } |
178 }; |
178 }; |
179 |
179 |
180 // runs on the IPCThread |
180 // runs on the IPCThread |
181 private final StrCallback errorMessageCb = new StrCallback() { |
181 private final StrCallback errorMessageCb = new StrCallback() { |
203 } |
203 } |
204 |
204 |
205 public void onEngineMessage(final byte[] em) { |
205 public void onEngineMessage(final byte[] em) { |
206 handler.post(new Runnable() { |
206 handler.post(new Runnable() { |
207 public void run() { |
207 public void run() { |
208 Memory mem = new Memory(em.length); |
208 ByteArrayPtr ptr = ByteArrayPtr.createJavaOwned(em); |
209 mem.write(0, em, 0, em.length); |
209 Flib.INSTANCE.flib_gameconn_send_enginemsg(conn, ptr, NativeSizeT.valueOf(em.length)); |
210 Flib.INSTANCE.flib_gameconn_send_enginemsg(conn, mem, NativeSizeT.valueOf(em.length)); |
|
211 } |
210 } |
212 }); |
211 }); |
213 } |
212 } |
214 |
213 |
215 public void onChatMessage(final String nick, final String message) { |
214 public void onChatMessage(final String nick, final String message) { |