Marco
adf8c86692
1. A game is only identified by a passphrase (not a lobby id) 2. We can store multiple passphrase/playerID combinations
66 lines
1.5 KiB
Dart
66 lines
1.5 KiB
Dart
import 'package:shared_preferences/shared_preferences.dart';
|
|
import 'package:uuid/uuid.dart';
|
|
|
|
class GameInfo {
|
|
final UuidValue? playerID;
|
|
final String? passphrase;
|
|
|
|
const GameInfo({
|
|
required this.playerID,
|
|
required this.passphrase,
|
|
});
|
|
|
|
factory GameInfo.empty() {
|
|
return const GameInfo(playerID: null, passphrase: null);
|
|
}
|
|
|
|
factory GameInfo.fromJson(Map<String, dynamic> json) {
|
|
final playerid = UuidValue.fromString(json['playerID']);
|
|
final passphrase = json['passphrase'];
|
|
|
|
return GameInfo(playerID: playerid, passphrase: passphrase);
|
|
}
|
|
|
|
Map<String, dynamic> toJson() {
|
|
String? pid;
|
|
|
|
if (playerID != null) {
|
|
pid = playerID.toString();
|
|
}
|
|
|
|
return {
|
|
'playerID': pid,
|
|
'passphrase': passphrase,
|
|
};
|
|
}
|
|
|
|
void store() async {
|
|
final SharedPreferences prefs = await SharedPreferences.getInstance();
|
|
|
|
await prefs.setString(passphrase!, playerID.toString());
|
|
}
|
|
|
|
static Future<GameInfo?> get(String phrase) async {
|
|
final SharedPreferences prefs = await SharedPreferences.getInstance();
|
|
var playerID = prefs.getString(phrase);
|
|
|
|
if (playerID == null) return null;
|
|
|
|
return GameInfo(
|
|
playerID: UuidValue.fromString(playerID!), passphrase: phrase);
|
|
}
|
|
}
|
|
|
|
class WebsocketMessageIdentifyPlayer {
|
|
final String playerID;
|
|
final String? passphrase;
|
|
|
|
const WebsocketMessageIdentifyPlayer({
|
|
required this.playerID,
|
|
required this.passphrase,
|
|
});
|
|
|
|
Map<String, dynamic> toJson() =>
|
|
{'playerID': playerID, 'passphrase': passphrase};
|
|
}
|