/// <summary> /// Register new user /// </summary> /// <param name="user"></param> /// <returns>user id</returns> public int RegisterUser(VirtualServerEntity.User user) { // create object var newUser = new Dictionary <UserInfo, string>(); foreach (var ui in user.Info) { newUser.Add((UserInfo)ui.Key, ui.Value); } // register user var id = _server.registerUser(newUser); // update id user.Id = id; // set user texture if (user.Texture.Length > 0) { _server.setTexture(id, user.Texture); } // add in cache _entity.Users.Add(id, user); return(id); }
/// <summary> /// Return registered user by id /// </summary> /// <param name="userId"></param> /// <param name="getInfo">Include user info</param> /// <param name="getTexture">Return user texture or not</param> /// <param name="cache"></param> /// <returns></returns> public VirtualServerEntity.User GetUser(int userId, bool getInfo = true, bool getTexture = false, bool cache = false) { if (!cache || !_entity.Users.ContainsKey(userId)) { // create object var user = new VirtualServerEntity.User() { Id = userId, }; if (getTexture) { user.Texture = _server.getTexture(userId); } if (getInfo) { // get from remote var userInfo = _server.getRegistration(userId); if (userInfo == null) { return(null); } foreach (var @i in userInfo) { user.Info.Add((VirtualServerEntity.User.UserInfo)@i.Key, @i.Value); } } // update in cache if (_entity.Users.ContainsKey(userId)) { _entity.Users[userId] = user; } else { _entity.Users.Add(userId, user); } } return(_entity.Users[userId]); }
/// <summary> /// Update exist user /// </summary> /// <param name="userId"></param> /// <param name="user">with updated info</param> public void UpdateUserInfo(VirtualServerEntity.User user) { var newInfo = new Dictionary <UserInfo, string>(); foreach (var it in user.Info) { newInfo.Add((Murmur.UserInfo)it.Key, it.Value); } // set user info _server.updateRegistration(user.Id, newInfo); // update in cache if (_entity.Users.ContainsKey(user.Id)) { _entity.Users[user.Id] = user; } else { _entity.Users.Add(user.Id, user); } }