Marco
7a51e71767
Additionally, we set some groundwork for storing the game data (lobby id, player id, passphrase) in permanent storage in order to reconnect with it later.
81 lines
2.2 KiB
Dart
81 lines
2.2 KiB
Dart
import 'package:shared_preferences/shared_preferences.dart';
|
|
import 'package:uuid/uuid.dart';
|
|
|
|
class PlayerInfo {
|
|
final UuidValue? playerID;
|
|
final UuidValue? lobbyID;
|
|
final String? passphrase;
|
|
|
|
const PlayerInfo({
|
|
required this.playerID,
|
|
required this.lobbyID,
|
|
required this.passphrase,
|
|
});
|
|
|
|
factory PlayerInfo.fromJson(Map<String, dynamic> json) {
|
|
final playerid = UuidValue.fromString(json['playerID']);
|
|
final lobbyid = UuidValue.fromString(json['lobbyID']);
|
|
final passphrase = json['passphrase'];
|
|
|
|
return PlayerInfo(
|
|
playerID: playerid, lobbyID: lobbyid, passphrase: passphrase);
|
|
}
|
|
|
|
Map<String, dynamic> toJson() => {
|
|
'playerID': playerID,
|
|
'lobbyID': lobbyID,
|
|
'passphrase': passphrase,
|
|
};
|
|
|
|
void store() async {
|
|
final SharedPreferences prefs = await SharedPreferences.getInstance();
|
|
|
|
await prefs.setBool("contains", true);
|
|
await prefs.setString("playerID", playerID.toString());
|
|
await prefs.setString("lobbyID", lobbyID.toString());
|
|
await prefs.setString("passphrase", passphrase.toString());
|
|
}
|
|
|
|
void delete() async {
|
|
final SharedPreferences prefs = await SharedPreferences.getInstance();
|
|
|
|
await prefs.setBool("contains", false);
|
|
}
|
|
|
|
Future<PlayerInfo?> get() async {
|
|
final SharedPreferences prefs = await SharedPreferences.getInstance();
|
|
var contains = prefs.getBool("contains");
|
|
var playerID = prefs.getString("playerID");
|
|
var lobbyID = prefs.getString("lobbyID");
|
|
var passphrase = prefs.getString("passphrase");
|
|
|
|
if (contains == null ||
|
|
!contains ||
|
|
playerID == null ||
|
|
lobbyID == null ||
|
|
passphrase == null) {
|
|
return null;
|
|
}
|
|
|
|
return PlayerInfo(
|
|
playerID: UuidValue.fromString(playerID),
|
|
lobbyID: UuidValue.fromString(lobbyID),
|
|
passphrase: passphrase);
|
|
}
|
|
}
|
|
|
|
class WebsocketMessageIdentifyPlayer {
|
|
final String playerID;
|
|
final String lobbyID;
|
|
final String? passphrase;
|
|
|
|
const WebsocketMessageIdentifyPlayer({
|
|
required this.playerID,
|
|
required this.lobbyID,
|
|
required this.passphrase,
|
|
});
|
|
|
|
Map<String, dynamic> toJson() =>
|
|
{'lobbyID': lobbyID, 'playerID': playerID, 'passphrase': passphrase};
|
|
}
|