Exemple #1
0
 public DGVPlayer(DBPlayer dbPlayer, string teamName, Image playerCountryFlag) :
     base(dbPlayer.PlayerTournamentId, dbPlayer.PlayerId, dbPlayer.PlayerName,
          dbPlayer.PlayerTeamId, dbPlayer.PlayerCountryName)
 {
     PlayerTeamName    = teamName;
     PlayerCountryFlag = playerCountryFlag;
 }
Exemple #2
0
    public List <DBPlayer> GetHighScores()
    {
        List <DBPlayer> highScores = new List <DBPlayer>();

        DataTable dt = Query("usp_GetHighScores");

        if (dt != null)
        {
            foreach (DataRow row in dt.Rows)
            {
                string name  = Convert.ToString(row["Username"]);
                int    score = Convert.ToInt32(row["Experience"]);
                float  money = Convert.ToInt32(row["Money"]);

                DBPlayer player = new DBPlayer()
                {
                    Username   = name,
                    Experience = score,
                    Money      = money
                };

                highScores.Add(player);
            }
        }
        else
        {
            Debug.Log("*SQL - GetHighScores: Table is empty.");
        }

        return(highScores);
    }
Exemple #3
0
    public IEnumerator Register(HttpListenerContext sender, string username, string password)
    {
        Debug.Log("Registration starting");
        RestClient.Get <DBPlayer>("https://" + firebaseExtension + ".firebaseio.com/" + username + ".json").Then(response =>
        {
            if (response != null)
            {
                Debug.Log("Username taken");
                ConstructResponse(sender, "Username taken");
            }
            else
            {
                try
                {
                    DBPlayer player = new DBPlayer(username, Hash(password));
                    RestClient.Put <ResponseHelper>("https://" + firebaseExtension + ".firebaseio.com/" + username + ".json", player);
                    Debug.Log("Account made");

                    // return the http response now
                    string randToken = RandomToken();
                    Player newPlayer = new Player(player, randToken);

                    playerHash[randToken] = player.hash;
                    playerDB[randToken]   = newPlayer;
                    game.PlayerEnter(newPlayer, randToken);

                    string xmlString     = Encode_XML(player, typeof(DBPlayer));
                    string[][] equipKeys = new string[3][] {
                        (new List <string>(game.equipments["Clothing"].Keys)).ToArray(),
                        (new List <string>(game.equipments["Weapons"].Keys)).ToArray(),
                        (new List <string>(game.equipments["Items"].Keys)).ToArray()
                    };

                    string[][] equipVals = new string[3][] {
                        (new List <string>(game.equipments["Clothing"].Values)).ToArray(),
                        (new List <string>(game.equipments["Weapons"].Values)).ToArray(),
                        (new List <string>(game.equipments["Items"].Values)).ToArray()
                    };

                    string EquipmentXML1 = Encode_XML(equipKeys, typeof(string[][]));
                    string EquipmentXML2 = Encode_XML(equipVals, typeof(string[][]));

                    if (sender != null) // sender is null during testing
                    {
                        ConstructResponse(sender, "Creation success, token:" + randToken + ", Equipment Keys:" + EquipmentXML1 +
                                          ", Equipment Values:" + EquipmentXML2 + ", Player Data:" + xmlString);
                    }
                }catch (Exception e)
                {
                    Debug.Log(e);
                }
            }
        });

        yield return(0);
    }
Exemple #4
0
        public DBPlayer GetRole(uint roleid)
        {
            CharacterOBJ c = GetPlayer(roleid);

            if (c != null)
            {
                DBPlayer player = new DBPlayer
                {
                    Base = new DBPlayerBase()
                    {
                        UserId   = Id,
                        PlayerId = roleid,
                        ModelId  = (byte)c.SkinId
                    },
                    Custom = new DBCustomisation()
                    {
                        PlayerName    = PlayerName,
                        SkinColorId   = c.SkinColorId,
                        HairColorId   = c.HairColorId,
                        EyeColorId    = c.EyeColorId,
                        ShirtColorId  = c.ShirtColorId,
                        PantsColorId  = c.PantsColorId,
                        BootsColorId  = c.BootsColorId,
                        GlovesColorId = c.GlovesColorId
                    },
                    Status = new DBStatus()
                    {
                        Level  = (uint)Level,
                        Exp    = (uint)Exp,
                        MMR    = (uint)LeaguePoints,
                        Kills  = (uint)Kills,
                        Deaths = (uint)Deaths,
                        Golden = (uint)Gold,
                        Silver = (uint)Silver
                    }
                };

                List <DBPlayerActive> activx = new List <DBPlayerActive>();
                foreach (KeyValuePair <int, ActivesOBJ> a in Actives)
                {
                    if (a.Value.CanNetSend())
                    {
                        activx.Add(new DBPlayerActive()
                        {
                            ActiveId = (uint)a.Value.ActiveId, Value = (uint)a.Value.Value
                        });
                    }
                }

                player.Actives = activx.ToArray();
                return(player);
            }

            return(default(DBPlayer));
        }
Exemple #5
0
    public bool UpdatePlayer(DBPlayer player)
    {
        Dictionary <string, object> pars = new Dictionary <string, object>()
        {
            { "@username", player.Username },
            { "@experience", player.Experience },
            { "@money", player.Money }
        };

        return(NonQuery("usp_UpdatePlayer", pars));
    }
Exemple #6
0
        public static Point GetEntityCoordinates(string id)
        {
            using (MongoCRUD mongo = new MongoCRUD("Reldawin"))
            {
                DBPlayer player = mongo.GetRecord <DBPlayer>("player", new Guid(id));

                Point p = new Point(player.Entity.WorldPositionX, player.Entity.WorldPositionY);

                return(p);
            }
        }
Exemple #7
0
 public static bool DoesUserExist(string username)
 {
     using (MongoCRUD mongo = new MongoCRUD("Reldawin"))
     {
         DBPlayer player = mongo.GetRecord <DBPlayer>("player", new MongoCRUD.Condition {
             field = "Username", value = username
         });
         bool doesPlayerExist = player != null ? true : false;
         return(doesPlayerExist);
     }
 }
Exemple #8
0
    public bool AddPlayer(DBPlayer player, string password)
    {
        Dictionary <string, object> pars = new Dictionary <string, object>()
        {
            { "@username", player.Username },
            { "@experience", player.Experience },
            { "@money", player.Money },
            { "@password", password }
        };

        return(NonQuery("usp_AddPlayer", pars));
    }
    public void ShowPlayerWithIdProfile(long idToShow)
    {
        DBPlayer   player   = NetworkDatabase.NDB.GetPlayerById(idToShow);
        GameObject playerGO = Instantiate(playerProfilePrefab, transform) as GameObject;
        //playerGO.GetComponent<Button>().onClick.AddListener(() => Destroy(playerGO));
        Transform playerGOPanel = playerGO.transform.GetChild(1);

        if (NetworkDatabase.NDB.TryDownloadPlayerProfile(player))
        {
            playerGOPanel.GetChild(0).GetComponentInChildren <Image>().sprite = FilePath.loadNewSprite(player.FP.Path);
        }
        playerGOPanel.gameObject.GetComponentInChildren <TextMeshProUGUI>().text = player.PlayerName;
    }
Exemple #10
0
        private int GetOwnerPlayerNameId(string newName)
        {
            DBPlayer ownerPlayer = _players.Find(x => x.PlayerName.Equals(newName,
                                                                          StringComparison.InvariantCulture));

            if (ownerPlayer == null)
            {
                return(0);
            }
            else
            {
                return(ownerPlayer.PlayerId);
            }
        }
Exemple #11
0
    public IEnumerator Logout(HttpListenerContext sender, string token)
    {
        Player   player   = playerDB[token];
        DBPlayer saveDava = new DBPlayer(player, playerHash[token]);

        RestClient.Put <ResponseHelper>("https://" + firebaseExtension + ".firebaseio.com/" + saveDava.username + ".json", saveDava);

        if (sender != null) // sender is null during testing
        {
            ConstructResponse(sender, "You have been logged out");
        }

        yield return(0);
    }
Exemple #12
0
        public static string[] GetPlayerPasswordAndID(string username)
        {
            using (MongoCRUD mongo = new MongoCRUD("Reldawin"))
            {
                DBPlayer player = mongo.GetRecord <DBPlayer>("player", new MongoCRUD.Condition {
                    field = "Username", value = username
                });

                string[] result = new string[2] {
                    player.Password, player.ID.ToString()
                };

                return(result);
            }
        }
Exemple #13
0
        public override void Execute()
        {
            var p = Session.QueryOver <DBPlayer>()
                    .Where(x => x.PlayerName == this.Player2Save.PlayerName)
                    .SingleOrDefault();

            if (p == null)
            {
                p = new DBPlayer();
            }

            AutoMapper.Mapper.Map <Player, DBPlayer>(Player2Save, p);
            Session.SaveOrUpdate(p);
            Result = AutoMapper.Mapper.Map <Player>(p);
        }
Exemple #14
0
        public ActorCard(ActorBase pOwner)
        {
            Owner = pOwner;
            this.SetName();
            this.SetLevel();
            if (Owner is ActorPlayer)
            {
                int playerId = GameEntry.Database.GetPlayerId();
                m_Role = GameEntry.Database.GetDBRow <DBPlayer>(playerId);

                this.SetPartnerByPos(1, m_Role.Partner1Id);
                this.SetPartnerByPos(2, m_Role.Partner2Id);
                this.SetPartnerByPos(3, m_Role.Partner3Id);
            }

            m_Data = GameEntry.DataTable.GetDataTable <DRActorEntity>().GetDataRow(Owner.Id);
        }
Exemple #15
0
        public static void CreateAccount(string username, string password)
        {
            Random   rand     = new Random();
            DBPlayer dBPlayer = new DBPlayer
            {
                Password = password,
                Username = username,
                Entity   = new DBEntity
                {
                    WorldPositionX = rand.Next(0, Program.MapWidth),
                    WorldPositionY = rand.Next(0, Program.MapHeight)
                }
            };

            using (MongoCRUD mongo = new MongoCRUD("Reldawin"))
            {
                mongo.InsertRecord <DBPlayer>("player", dBPlayer);
            }
        }
Exemple #16
0
    /// <summary>
    /// Coroutine
    /// Use to register the player on the server
    /// stores the player locally when succesful
    /// </summary>
    private IEnumerator RegisterUserToDB(string email, string username, string password)
    {
        WWWForm form = new WWWForm();

        form.AddField("loginEmail", email);
        form.AddField("loginUser", username);
        form.AddField("loginPass", password);

        //POST to RegisterUser.php on my server
        using (UnityWebRequest www = UnityWebRequest.Post("https://marlonsijnesael.nl/DB/RegisterUser.php", form))
        {
            yield return(www.SendWebRequest());

            //if there's an error -> show it on the screen
            if (www.isNetworkError || www.isHttpError)
            {
                Debug.LogError(www.error);
                statusText.text = www.error;
            }
            else
            {
                //RegisterUser.php returns a json string containing information about the player (username, session token, login succesful, errors)
                //In order to use it we have to deserialize it into a class called DBPlayer
                DBPlayer user = JsonUtility.FromJson <DBPlayer>(www.downloadHandler.text);
                if (user.success)
                {
                    statusText.text = "SUCCES!";

                    if (MasterManager.instance != null)
                    {
                        MasterManager.instance.SetDbPlayer(user);
                    }
                }
                else
                {
                    statusText.text = user.error;
                    input_Username.inputField.textComponent.color = Color.red;
                }
            }
        }
    }
 private bool FillPlayerHeaders(bool shouldSave)
 {
     if (IsAllPlayersIdsSelected() && !IsPlayerIdRepeated())
     {
         if (shouldSave)
         {
             _db.UpdateTableAllPlayersPositions(_table);
         }
         DBPlayer playerEast  = _tablePlayers.Find(x => x.PlayerId == int.Parse(_table.PlayerEastId));
         DBPlayer playerSouth = _tablePlayers.Find(x => x.PlayerId == int.Parse(_table.PlayerSouthId));
         DBPlayer playerWest  = _tablePlayers.Find(x => x.PlayerId == int.Parse(_table.PlayerWestId));
         DBPlayer playerNorth = _tablePlayers.Find(x => x.PlayerId == int.Parse(_table.PlayerNorthId));
         _form.SetEastPlayerHeader(string.Format("{0} ({1})", playerEast.PlayerName, playerEast.PlayerId));
         _form.SetSouthPlayerHeader(string.Format("{0} ({1})", playerSouth.PlayerName, playerSouth.PlayerId));
         _form.SetWestPlayerHeader(string.Format("{0} ({1})", playerWest.PlayerName, playerWest.PlayerId));
         _form.SetNorthPlayerHeader(string.Format("{0} ({1})", playerNorth.PlayerName, playerNorth.PlayerId));
         FillAllPlayersTotalScores();
         FillAllPlayersPoints();
         return(true);
     }
     return(false);
 }
 //log out and return to login screen
 //also destroy this object in order to make room for a new singleton instance
 //because this one does not have its references anymore
 public void LogOut()
 {
     user = null;
     SceneManager.LoadScene(0);
     Destroy(this.gameObject);
 }
    public void SaveGame(int saveSlot, string saveName = null)
    {
        BinaryFormatter bf = new BinaryFormatter();

        GameModeOffice gmOffice = GameModeManager.Office;
        GameModeShop   gmShop   = GameModeManager.Shop;

        Player.CharacterCustomizationData = CurrentPlayerObject.GetComponent <CharacterCustomizationScript>().GetCustomizationData();
        Player.OfficeCustomizationData    = CustomizationManager.Office.GetCustomizationData();

        //Save data to GameData object (saveData):
        GameData gameData = new GameData
        {
            Player = this.Player,

            Suppliers = SupplierManager.Suppliers,

            Orders                    = OrderManager.Orders,
            OrdersCountOpen           = OrderManager.CountOpen,
            OrdersCountCompleted      = OrderManager.CountCompleted,
            OrdersCountFailed         = OrderManager.CountFailed,
            OrdersCountCompletedToday = OrderManager.CountCompletedToday,
            OrdersCountFailedToday    = OrderManager.CountFailedToday,

            Difficulty = this.Difficulty,

            GameDateTime      = this.GameDateTime,
            GameDateTimeStart = this.GameDateTimeStart,
            DayDebt           = this.DayDebt,
            WeekCurrent       = this.WeekCurrent,

            ChanceNextOrder = gmOffice.ChanceNextOrder,

            ShopUnlocked = this.ShopUnlocked,

            DayEnd = this.DayEnd,

            DayEndCurrent = this.dayEndCurrent,

            Notifications = this.Notifications,

            GameMode = GameModeManager.GameMode_Current
        };

        if (saveName == null || saveName == "")
        {
            saveName = string.Format("{0} {1}", SaveNameDefault, saveSlot.ToString().PadLeft(3, '0'));
        }

        Debug.Log(saveName);

        SaveData saveData = new SaveData
        {
            Name     = saveName,
            Date     = DateTime.Now,
            GameData = gameData
        };

        FileStream file = File.Create(GetSaveFilePath(saveSlot));

        bf.Serialize(file, saveData);

        file.Close();

        //UPDATE DB:
        if (!OfflineMode)
        {
            DBPlayer p = Player.GetDBPlayer();
            Debug.Log(p.Username + p.Experience + p.Money);
            bool s = DBManager.UpdatePlayer(Player.GetDBPlayer());

            if (!s)
            {
                Debug.Log("Uh oh");
            }
            else
            {
                Debug.Log("Player updated.");
            }
        }

        //LOG:
        Debug.Log("[SAVE SLOT: " + saveSlot.ToString() + "] GAME DATA SAVED TO '" + Application.persistentDataPath + "'!");
    }
    public void Register_RegisterButtonPressed()
    {
        if (GameMaster.Instance.OfflineMode)
        {
            GameMaster.Instance.OfflineMode = false;
        }

        //Called when the player presses the button to register

        //Get the username and password and repeated password the player entered
        playerUsername = RegisterUsernameField.text;
        playerPassword = RegisterPasswordField.text;

        string confirmedPassword = RegisterConfirmPasswordField.text;

        //Make sure username and password are long enough
        if (playerUsername.Length > 3 && playerUsername.Length <= 15)
        {
            if (!GameMaster.Instance.DBManager.CheckUsername(playerUsername))
            {
                if (playerPassword.Length > 5 && playerPassword.Length <= 25)
                {
                    //Check the two passwords entered match
                    if (playerPassword == confirmedPassword)
                    {
                        //Username and passwords seem reasonable. Switch to 'Loading...' and start the coroutine to try and register an account on the server
                        registerP.gameObject.SetActive(false);
                        loadingP.gameObject.SetActive(true);
                        StartCoroutine(MainMenus());

                        DBPlayer player = new DBPlayer()
                        {
                            Username   = playerUsername,
                            Experience = 0,
                            Money      = 0f
                        };

                        if (GameMaster.Instance.DBManager.AddPlayer(player, playerPassword))
                        {
                            Debug.Log("*Player added!");
                        }

                        GameMaster.Instance.CurrentUsername = playerUsername;
                    }
                    else
                    {
                        //Passwords don't match, show error
                        RegisterErrorText.text = "Error: Passwords do not match";
                    }
                }
                else
                {
                    //Password too short so show error
                    RegisterErrorText.text = "Error: Password must contain 6-25 characters";
                }
            }
            else
            {
                //Username taken
                RegisterErrorText.text = "Error: Username has already been taken";
            }
        }
        else
        {
            //Username too short so show error
            RegisterErrorText.text = "Error: Username must contain 4-15 characters";
        }
    }
        /// <summary>
        /// Returns null if player not found
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public Player GetPlayer(int id, IAreaLocator al, IShipLocator sl, IAccountLocator acl, ITeamLocator tl, ITeamManager tm)
        {
            DBPlayer p = _galacticObjectContext.Players.First(ee => ee.Id == id);

            return(p != null ? new Player(p, al, sl, acl, tl, tm) : null);
        }
Exemple #22
0
    public DBPlayer GetPlayer(string playerId)
    {
        DBPlayer player = new DBPlayer(playerId);

        return(player);
    }
Exemple #23
0
    private void HTTPRecieved(IAsyncResult result) // callback function for when we get an http request
    {
        Debug.Log("HTTP recieved");
        HttpListener        listener = (HttpListener)result.AsyncState;
        HttpListenerContext context  = listener.EndGetContext(result);

        // do stuff
        string startData = GetRequestPostData(context.Request);

        Debug.Log(startData);

        string[] dataSent = startData.Split('&');
        Debug.Log(dataSent.Length);

        Dictionary <string, string> data = new Dictionary <string, string> {
        };

        foreach (string d in dataSent)
        {
            string[] cell = d.Split('=');
            data[cell[0].Replace("%20", " ")] = cell[1].Replace("%20", " ");
            Debug.Log(cell[0] + ":" + cell[1]);
        }

        if (!data.ContainsKey("request"))
        {
            ConstructResponse(context, "Request not included");
            return;
        }
        else if (data.ContainsKey("token") && !playerDB.ContainsKey(data["token"]))
        {
            ConstructResponse(context, "Token does not exist");
            return;
        }

        // handling the differant kinds of requests they want
        // login/register/logout
        if (data["request"].Equals("register") && data.ContainsKey("username") && data.ContainsKey("password"))
        {
            StartCoroutine(Register(context, data["username"], data["password"]));
        }
        else if (data["request"].Equals("login") && data.ContainsKey("username") && data.ContainsKey("password"))
        {
            StartCoroutine(LogIn(context, data["username"], data["password"]));
        }
        else if (data["request"].Equals("logout") && data.ContainsKey("token"))
        {
            StartCoroutine(Logout(context, data["token"]));
        }

        // debugging purposes
        else if (data["request"].Equals("time compare"))
        {
            Debug.Log(Time.time - float.Parse(data["timer"]));
        }

        // purchasing stuff
        else if (data["request"].Equals("purchase") && data.ContainsKey("item type") && data.ContainsKey("item name"))
        {
            game.Purchase(data["token"], data["item type"], data["item name"]);
        }

        // equipment changes
        else if (data["request"].Equals("equip") && data.ContainsKey("equipment type") && data.ContainsKey("equipment name"))
        {
            Player player = playerDB[data["token"]];

            if (data["equipment type"].Equals("Weapon"))
            {
                if (!(Array.Exists(player.GetWeapons(), element => element.Equals(data["equipment name"]))))
                { // check if they own the item
                    Debug.Log("They do not own a " + data["equipment name"]);
                    ConstructResponse(context, "You do not own this item");
                    return;
                }

                Debug.Log("Replacing weapon to " + data["equipment name"]);
                Weapon item = new Weapon(null, "Not important", game.equipments["Weapons"][data["equipment name"]]);
                if (item.weaponType == 0)
                {
                    player.ChangeEquipped(4, data["equipment name"]);
                }
                else if (item.weaponType == 1)
                {
                    player.ChangeEquipped(5, data["equipment name"]);
                }
            }
            else
            {
                if (!(Array.Exists(player.GetClothing(), element => element.Equals(data["equipment name"]))))
                { // check if they own the item
                    Debug.Log("They do not own a " + data["equipment name"]);
                    ConstructResponse(context, "You do not own this item");
                    return;
                }

                int correspondingIndex = (new Dictionary <string, int> {
                    { "Helmets", 0 },
                    { "Armour", 1 }, { "Boots", 2 }, { "Pendants", 3 }
                })[data["equipment type"]];
                player.ChangeEquipped(correspondingIndex, data["equipment name"]);
            }
            ConstructResponse(context, "Item equipped");
        }

        // asking for stats because the game told them to
        else if (data["request"].Equals("stats"))  // overall max stats
        {
            Player   player    = playerDB[data["token"]];
            DBPlayer fakeDB    = new DBPlayer(player, "unimportant hash");
            string   xmlString = Encode_XML(fakeDB, typeof(DBPlayer));

            if (game.deadPlayers.Contains(player))
            {
                game.deadPlayers.Remove(player);
                ConstructResponse(context, "DEAD");
            }
            else
            {
                game.updatePlayer[player] = false;
                ConstructResponse(context, xmlString);
            }
        }

        else // they did not match any of the criteria
        {
            ConstructResponse(context, "Invalid arguements");
        }
    }
Exemple #24
0
 public void SetPlayer(DBPlayer player)
 {
     players[player.PlayerID] = player;
 }
Exemple #25
0
 /// <summary>
 /// Constructor to instantiate _dpPlayer
 /// </summary>
 public PlayerController()
 {
     _dbPlayer = new DBPlayer();
 }
 //make the userinfo persistent inside of the singleton
 public void SetDbPlayer(DBPlayer user)
 {
     this.user = user;
     SceneManager.LoadScene("Lobby");
 }
Exemple #27
0
        public bool Execute(JHSNetworkMessage netMsg)
        {
            if (DbManager == null)
            {
                DbManager = AccountManager.Instance;
            }
            if (queueManager == null)
            {
                queueManager = GameServerManager.Instance;
            }
            if (dbService == null)
            {
                dbService = DbService.Instance;
            }

            ReqeuestUser packet = netMsg.ReadMessage <ReqeuestUser>();

            if (packet != null)
            {
                uint connectionId = netMsg.conn.connectionId;
                var  server       = queueManager.GetServerByConnectionId(connectionId);
                if (server != null || Settings.DEBUG_GET_PLAYER)
                {
                    AccountOBJ user = DbManager.GetOnlineByUserId(packet.userId);
                    if (Settings.DEBUG_GET_PLAYER && user == null)
                    {
                        user = dbService.GetAccountFromDB(packet.userId);
                        user.SelectedCharacer = user.FirstRole().PlayerId;
                    }
                    if (user != null)
                    {
                        if (user.SelectedCharacer != 0)
                        {
                            DBPlayer role = user.GetRole(user.SelectedCharacer);
                            if (role != null)
                            {
                                if (packet.Type == InfoType.NONE)
                                {
                                    netMsg.conn.Send(GameServerOP.GETROLE, new LoginDataBasePlayer()
                                    {
                                        STATUS = SUCCESS,
                                        player = role,
                                        REQ    = packet.Req
                                    });
                                }
                                else
                                {
                                    netMsg.conn.Send(GameServerOP.GET_ROLE2, new UpdateRole()
                                    {
                                        STATUS = SUCCESS,
                                        player = role,
                                        TYPE   = packet.Type
                                    });
                                }
                                LOG.Info(string.Format("GETRole :: REQ[{3}] id[{0}] userid[{1}] serverid[{2}]", role.Base.PlayerId, role.Base.UserId, connectionId, packet.Req));
                                return(true);
                            }
                        }
                    }

                    netMsg.conn.Send(GameServerOP.GETROLE, new LoginDataBasePlayer()
                    {
                        STATUS = PLAYER_NOT_FOUND
                    });
                }
            }
            return(true);
        }
Exemple #28
0
    // -------------- Class constructor --------------
    public Player(DBPlayer player, string token) // gets the html from server, sets up player data
    {
        Username = player.username;
        Token    = token;

        // -------- load all the info into the private fields, DBPlayer loses referance and dies afterwards --------
        // Equipment
        Debug.Log("Right hand: " + player.equipped[5]);
        equipped = player.equipped;
        foreach (string name in player.clothing)   // Clothing
        {
            if (clothing.ContainsKey(name))
            {
                clothing[name].NewCount(clothing[name].HowMany() + 1);
            }
            else
            {
                clothing[name] = new Clothing(this, name, game.equipments["Clothing"][name]);
            }
        }

        foreach (string name in player.weapons)   // Weapons
        {
            if (weapons.ContainsKey(name))
            {
                weapons[name].NewCount(weapons[name].HowMany() + 1);
            }
            else
            {
                weapons[name] = new Weapon(this, name, game.equipments["Weapons"][name]);
            }
        }

        foreach (string name in player.items)   // Items
        {
            if (items.ContainsKey(name))
            {
                items[name].NewCount(items[name].HowMany() + 1);
            }
            else
            {
                items[name] = new Item(this, name, game.equipments["Items"][name]);
            }
        }

        // stats
        gold        = player.gold;
        score       = player.score;
        chosenTitle = player.chosenTitle;
        titles      = new List <string>(player.titles);

        // quests
        mainProgress = player.questProg;
        for (int i = 0; i < player.optionalQuests.Length; i++)
        {
            optionalQuests[player.optionalQuests[i]] = player.optionalProg[i];
        }

        // skills
        foreach (string name in player.magicSpells)
        {
            magicSpells[name] = new Magic(name);
        }
        foreach (string name in player.attackSkills)
        {
            attackSkills[name] = new Attack(name);
        }
        foreach (string name in player.playerAbilities)
        {
            playerAbilities[name] = new Skill(name);
        }

        ReCalculate(); // get new stats and all for player before slapping them into the game

        hp[1]      = hp[0];
        mana[1]    = mana[0];
        stamina[1] = stamina[0];
    }