mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-06-14 19:18:55 -07:00
Smarter rooms (#2484)
* Added VIP only room * Added DONATOR room. * Extended Room to include privilege level. * Updated room join logic * Updated server tab permissions column display based on perm+privlevel definitions * Fixed new client -> old server blank permissions column on server tab Added the ability for registered user - VIP/DONATOR/PRIVILEGED room.
This commit is contained in:
parent
317ac05919
commit
2f23a9cb2f
12 changed files with 79 additions and 33 deletions
6
servatrice/migrations/servatrice_0022_to_0023.sql
Normal file
6
servatrice/migrations/servatrice_0022_to_0023.sql
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
-- Servatrice db migration from version 22 to version 23
|
||||
|
||||
alter table cockatrice_rooms modify column permissionlevel enum('NONE','REGISTERED','MODERATOR','ADMINISTRATOR');
|
||||
alter table cockatrice_rooms add column privlevel enum('NONE','PRIVILEGED','VIP','DONATOR') NOT NULL;
|
||||
|
||||
UPDATE cockatrice_schema_version SET version=23 WHERE version=22;
|
||||
|
|
@ -261,6 +261,10 @@ roomlist\1\description="Play anything here."
|
|||
; Default is none.
|
||||
roomlist\1\permissionlevel=none
|
||||
|
||||
; Rooms can restrict the permission level of users that can join, Currnetly supported options are none, privileged, vip, and donator.
|
||||
; Default is none.
|
||||
roomlist\1\privilegelevel=none
|
||||
|
||||
; Wether to make users autojoin this room when connected to the server
|
||||
roomlist\1\autojoin=true
|
||||
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ CREATE TABLE IF NOT EXISTS `cockatrice_schema_version` (
|
|||
PRIMARY KEY (`version`)
|
||||
) ENGINE=INNODB DEFAULT CHARSET=utf8;
|
||||
|
||||
INSERT INTO cockatrice_schema_version VALUES(22);
|
||||
INSERT INTO cockatrice_schema_version VALUES(23);
|
||||
|
||||
-- users and user data tables
|
||||
CREATE TABLE IF NOT EXISTS `cockatrice_users` (
|
||||
|
|
@ -89,7 +89,8 @@ CREATE TABLE IF NOT EXISTS `cockatrice_rooms` (
|
|||
`id` int(7) unsigned NOT NULL auto_increment,
|
||||
`name` varchar(50) NOT NULL,
|
||||
`descr` varchar(255) NOT NULL,
|
||||
`permissionlevel` varchar(20) NOT NULL,
|
||||
`permissionlevel` enum('NONE','REGISTERED','MODERATOR','ADMINISTRATOR') NOT NULL,
|
||||
`privlevel` enum('NONE','PRIVILEGED','VIP','DONATOR') NOT NULL,
|
||||
`auto_join` tinyint(1) default 0,
|
||||
`join_message` varchar(255) NOT NULL,
|
||||
`chat_history_size` int(4) NOT NULL,
|
||||
|
|
|
|||
|
|
@ -285,7 +285,7 @@ bool Servatrice::initServer()
|
|||
}
|
||||
|
||||
if (getRoomsMethodString() == "sql") {
|
||||
QSqlQuery *query = servatriceDatabaseInterface->prepareQuery("select id, name, descr, permissionlevel, auto_join, join_message, chat_history_size from {prefix}_rooms where id_server = :id_server order by id asc");
|
||||
QSqlQuery *query = servatriceDatabaseInterface->prepareQuery("select id, name, descr, permissionlevel, privlevel, auto_join, join_message, chat_history_size from {prefix}_rooms where id_server = :id_server order by id asc");
|
||||
query->bindValue(":id_server", serverId);
|
||||
servatriceDatabaseInterface->execSqlQuery(query);
|
||||
while (query->next()) {
|
||||
|
|
@ -301,8 +301,9 @@ bool Servatrice::initServer()
|
|||
query->value(1).toString(),
|
||||
query->value(2).toString(),
|
||||
query->value(3).toString().toLower(),
|
||||
query->value(4).toInt(),
|
||||
query->value(5).toString(),
|
||||
query->value(4).toString().toLower(),
|
||||
query->value(5).toInt(),
|
||||
query->value(6).toString(),
|
||||
gameTypes,
|
||||
this));
|
||||
}
|
||||
|
|
@ -317,13 +318,13 @@ bool Servatrice::initServer()
|
|||
gameTypes.append(settingsCache->value("name").toString());
|
||||
}
|
||||
settingsCache->endArray();
|
||||
Server_Room *newRoom = new Server_Room(i,settingsCache->value("chathistorysize").toInt(),settingsCache->value("name").toString(),settingsCache->value("description").toString(),settingsCache->value("permissionlevel").toString().toLower(),settingsCache->value("autojoin").toBool(),settingsCache->value("joinmessage").toString(),gameTypes,this);
|
||||
Server_Room *newRoom = new Server_Room(i,settingsCache->value("chathistorysize").toInt(),settingsCache->value("name").toString(),settingsCache->value("description").toString(),settingsCache->value("permissionlevel").toString().toLower(),settingsCache->value("privilegelevel").toString().toLower(),settingsCache->value("autojoin").toBool(),settingsCache->value("joinmessage").toString(),gameTypes,this);
|
||||
addRoom(newRoom);
|
||||
}
|
||||
|
||||
if(size==0) {
|
||||
// no room defined in config, add a dummy one
|
||||
Server_Room *newRoom = new Server_Room(0,100,"General room","Play anything here.","none",true,"",QStringList("Standard"),this);
|
||||
Server_Room *newRoom = new Server_Room(0,100,"General room","Play anything here.","none","none",true,"",QStringList("Standard"),this);
|
||||
addRoom(newRoom);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@
|
|||
#include "server.h"
|
||||
#include "server_database_interface.h"
|
||||
|
||||
#define DATABASE_SCHEMA_VERSION 22
|
||||
#define DATABASE_SCHEMA_VERSION 23
|
||||
|
||||
class Servatrice;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue