Esempio n. 1
0
        public static void sendMessage(Type nodeType)
        {
            RawMessage msg = new RawMessage();

            msg.putInt("id", TypeIdGenerator.getMessageId(typeof(LUnlockNodeRequest)));
            msg.putInt("tid", TypeIdGenerator.getScienceNodeIds(nodeType));
            Network.server.SendMessage(msg);
        }
        public bool getUserData(int userId, int scienceNodeCount, out Models.UserDataModel userData)
        {
            userData = new Models.UserDataModel();
            MySqlCommand com = client.CreateCommand();

            com.CommandText = "SELECT * FROM userdata WHERE userid=" + userId;
            com.Connection  = client;

            MySqlDataReader reader = null;

            try
            {
                reader = com.ExecuteReader(new System.Data.CommandBehavior());

                if (reader.Read())  // tek column okusak yeter, o yuzden while yapmadim.
                {
                    userData.userId     = userId;
                    userData.physPoints = (int)reader["physpoints"];
                    userData.chemPoints = (int)reader["chempoints"];
                    userData.bioPoints  = (int)reader["biopoints"];

                    byte[] scienceNodesByte = (byte[])reader["unlockedsciencenodes"];

                    bool[] unlockedScienceNodeDbIds = new bool[scienceNodeCount];

                    for (int i = 0; i < scienceNodeCount && i < scienceNodesByte.Length * 8; i++)
                    {
                        unlockedScienceNodeDbIds[i] = (scienceNodesByte[i / 8] & (1 << (i % 8))) != 0;
                    }

                    userData.unlockedScienceNodes = new bool[scienceNodeCount];

                    foreach (var nodeDbIdPair in ScienceNode.scienceNodeDbIds)  // dbId'leri, typeId ye donusturuyoruz. Cunku db disinda bize lazim degil dbId. indexlerde hep typeId lazim.
                    {
                        userData.unlockedScienceNodes[TypeIdGenerator.getScienceNodeIds(nodeDbIdPair.Key.GetType())] = unlockedScienceNodeDbIds[nodeDbIdPair.Value];
                    }

                    return(true);
                }
                else
                {
                    return(false);
                }
            }
            catch
            {
                return(false);
            }
            finally
            {
                try
                {
                    reader.Close();
                }
                catch { }
            }
        }