mirror of
https://github.com/afska/gba-link-connection.git
synced 2026-10-01 21:36:53 -05:00
Adding LinkWireless::isServerClosed
This commit is contained in:
@@ -250,6 +250,7 @@ You can also change these compile-time constants:
|
||||
| `getState()` | **LinkWireless::State** | Returns the current state (one of `LinkWireless::State::NEEDS_RESET`, `LinkWireless::State::AUTHENTICATED`, `LinkWireless::State::SEARCHING`, `LinkWireless::State::SERVING`, `LinkWireless::State::CONNECTING`, or `LinkWireless::State::CONNECTED`). |
|
||||
| `isConnected()` | **bool** | Returns `true` if the player count is higher than `1`. |
|
||||
| `isSessionActive()` | **bool** | Returns `true` if the state is `SERVING` or `CONNECTED`. |
|
||||
| `isServerClosed()` | **bool** | Returns `true` if the server was closed with `closeServer()`. |
|
||||
| `playerCount()` | **u8** _(1~5)_ | Returns the number of connected players. |
|
||||
| `currentPlayerId()` | **u8** _(0~4)_ | Returns the current player ID. |
|
||||
| `getLastError([clear])` | **LinkWireless::Error** | If one of the other methods returns `false`, you can inspect this to know the cause. After this call, the last error is cleared if `clear` is `true` (default behavior). |
|
||||
|
||||
@@ -353,24 +353,27 @@ void messageLoop() {
|
||||
if (didPress(KEY_UP, switching)) {
|
||||
#ifdef PROFILING_ENABLED
|
||||
// In the profiler ROM, pressing UP will update the broadcast data
|
||||
if (linkWireless->getState() == LinkWireless::State::SERVING) {
|
||||
if (linkWireless->getState() == LinkWireless::State::SERVING &&
|
||||
!(keys & KEY_START)) {
|
||||
linkWireless->serve("LinkWireless",
|
||||
("N = " + std::to_string(counters[0])).c_str(),
|
||||
counters[0]);
|
||||
if (linkWireless->getLastError() ==
|
||||
LinkWireless::Error::BUSY_TRY_AGAIN) {
|
||||
log("Busy!");
|
||||
log("Busy! Can't update.");
|
||||
waitFor(KEY_DOWN);
|
||||
}
|
||||
}
|
||||
|
||||
// In the profiler ROM, pressing START+UP will close the server
|
||||
if ((keys & KEY_START) &&
|
||||
linkWireless->getState() == LinkWireless::State::SERVING) {
|
||||
linkWireless->closeServer();
|
||||
if (linkWireless->getLastError() ==
|
||||
LinkWireless::Error::BUSY_TRY_AGAIN) {
|
||||
log("Busy!");
|
||||
if (linkWireless->getState() == LinkWireless::State::SERVING &&
|
||||
!linkWireless->isServerClosed() && (keys & KEY_START)) {
|
||||
if (linkWireless->closeServer()) {
|
||||
log("Server closed!");
|
||||
waitFor(KEY_DOWN);
|
||||
} else if (linkWireless->getLastError() ==
|
||||
LinkWireless::Error::BUSY_TRY_AGAIN) {
|
||||
log("Busy! Can't close.");
|
||||
waitFor(KEY_DOWN);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -733,6 +733,11 @@ class LinkWireless {
|
||||
return state == SERVING || state == CONNECTED;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Returns `true` if the server was closed with `closeServer()`.
|
||||
*/
|
||||
[[nodiscard]] bool isServerClosed() { return sessionState.serverClosed; }
|
||||
|
||||
/**
|
||||
* @brief Returns the number of connected players.
|
||||
*/
|
||||
|
||||
@@ -128,6 +128,10 @@ bool C_LinkWireless_isSessionActive(C_LinkWirelessHandle handle) {
|
||||
return static_cast<LinkWireless*>(handle)->isSessionActive();
|
||||
}
|
||||
|
||||
bool C_LinkWireless_isServerClosed(C_LinkWirelessHandle handle) {
|
||||
return static_cast<LinkWireless*>(handle)->isServerClosed();
|
||||
}
|
||||
|
||||
u8 C_LinkWireless_playerCount(C_LinkWirelessHandle handle) {
|
||||
return static_cast<LinkWireless*>(handle)->playerCount();
|
||||
}
|
||||
|
||||
@@ -111,6 +111,7 @@ bool C_LinkWireless_receive(C_LinkWirelessHandle handle,
|
||||
C_LinkWireless_State C_LinkWireless_getState(C_LinkWirelessHandle handle);
|
||||
bool C_LinkWireless_isConnected(C_LinkWirelessHandle handle);
|
||||
bool C_LinkWireless_isSessionActive(C_LinkWirelessHandle handle);
|
||||
bool C_LinkWireless_isServerClosed(C_LinkWirelessHandle handle);
|
||||
u8 C_LinkWireless_playerCount(C_LinkWirelessHandle handle);
|
||||
u8 C_LinkWireless_currentPlayerId(C_LinkWirelessHandle handle);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user