mirror of
https://github.com/islehorse/HISP.git
synced 2025-06-06 02:51:27 +12:00
Add Feature pt1
This commit is contained in:
parent
a184e4d735
commit
092534e331
131 changed files with 3113 additions and 1418 deletions
126
HorseIsleServer/LibHISP/Player/Friends.cs
Normal file
126
HorseIsleServer/LibHISP/Player/Friends.cs
Normal file
|
@ -0,0 +1,126 @@
|
|||
using System.Collections.Generic;
|
||||
using HISP.Game;
|
||||
using HISP.Server;
|
||||
|
||||
namespace HISP.Player
|
||||
{
|
||||
public class Friends
|
||||
{
|
||||
private User baseUser;
|
||||
private List<int> list;
|
||||
public int[] List
|
||||
{
|
||||
get
|
||||
{
|
||||
return list.ToArray();
|
||||
}
|
||||
}
|
||||
|
||||
public int Count
|
||||
{
|
||||
get
|
||||
{
|
||||
return List.Length;
|
||||
}
|
||||
}
|
||||
|
||||
public void RemoveFromLocalList(int value)
|
||||
{
|
||||
list.Remove(value);
|
||||
}
|
||||
|
||||
public void AddToLocalList(int value)
|
||||
{
|
||||
list.Add(value);
|
||||
}
|
||||
public Friends(User user)
|
||||
{
|
||||
baseUser = user;
|
||||
list = new List<int>();
|
||||
|
||||
int[] friends = Database.GetBuddyList(user.Id);
|
||||
foreach(int friendId in friends)
|
||||
{
|
||||
list.Add(friendId);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public bool IsFriend(int friendUserId)
|
||||
{
|
||||
foreach (int userId in List)
|
||||
if (userId == friendUserId)
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
public void RemoveFriend(int userid)
|
||||
{
|
||||
Database.RemoveBuddy(baseUser.Id, userid);
|
||||
|
||||
// Remove buddy from there list if they are logged in
|
||||
try
|
||||
{
|
||||
|
||||
User removeFrom = GameServer.GetUserById(userid);
|
||||
removeFrom.Friends.RemoveFromLocalList(baseUser.Id);
|
||||
|
||||
}
|
||||
catch (KeyNotFoundException) { /* User is offline, remove from database is sufficent */ };
|
||||
|
||||
|
||||
baseUser.Friends.RemoveFromLocalList(userid);
|
||||
}
|
||||
public void AddFriend(User userToFriend)
|
||||
{
|
||||
if(baseUser.MuteBuddy)
|
||||
{
|
||||
byte[] cantFriend = PacketBuilder.CreateChat(Messages.CantSendBuddyRequestWhileMuted, PacketBuilder.CHAT_BOTTOM_RIGHT);
|
||||
baseUser.LoggedinClient.SendPacket(cantFriend);
|
||||
return;
|
||||
}
|
||||
else if(userToFriend.MuteBuddyRequests)
|
||||
{
|
||||
byte[] cantFriend = PacketBuilder.CreateChat(Messages.PlayerIgnoringAllBuddyRequests, PacketBuilder.CHAT_BOTTOM_RIGHT);
|
||||
baseUser.LoggedinClient.SendPacket(cantFriend);
|
||||
return;
|
||||
}
|
||||
else if(userToFriend.MutePlayer.IsUserMuted(userToFriend))
|
||||
{
|
||||
byte[] cantFriend = PacketBuilder.CreateChat(Messages.PlayerIgnoringYourBuddyRequests, PacketBuilder.CHAT_BOTTOM_RIGHT);
|
||||
baseUser.LoggedinClient.SendPacket(cantFriend);
|
||||
return;
|
||||
}
|
||||
|
||||
if (userToFriend.PendingBuddyRequestTo == baseUser)
|
||||
{
|
||||
Database.AddBuddy(baseUser.Id, userToFriend.Id);
|
||||
list.Add(userToFriend.Id);
|
||||
userToFriend.Friends.AddToLocalList(baseUser.Id);
|
||||
|
||||
byte[] nowFriendsMsg = PacketBuilder.CreateChat(Messages.FormatAddBuddyConfirmed(userToFriend.Username), PacketBuilder.CHAT_BOTTOM_RIGHT);
|
||||
byte[] nowFriendsOther = PacketBuilder.CreateChat(Messages.FormatAddBuddyConfirmed(baseUser.Username), PacketBuilder.CHAT_BOTTOM_RIGHT);
|
||||
|
||||
userToFriend.LoggedinClient.SendPacket(nowFriendsOther);
|
||||
baseUser.LoggedinClient.SendPacket(nowFriendsMsg);
|
||||
|
||||
if(!baseUser.MajorPriority)
|
||||
GameServer.UpdateArea(baseUser.LoggedinClient);
|
||||
|
||||
if (!userToFriend.MajorPriority)
|
||||
GameServer.UpdateArea(userToFriend.LoggedinClient);
|
||||
}
|
||||
else
|
||||
{
|
||||
baseUser.PendingBuddyRequestTo = userToFriend;
|
||||
byte[] pendingMsg = PacketBuilder.CreateChat(Messages.AddBuddyPending, PacketBuilder.CHAT_BOTTOM_RIGHT);
|
||||
byte[] pendingMsgOther = PacketBuilder.CreateChat(Messages.FormatAddBuddyPendingOther(baseUser.Username), PacketBuilder.CHAT_BOTTOM_RIGHT);
|
||||
baseUser.LoggedinClient.SendPacket(pendingMsg);
|
||||
if(!userToFriend.MuteBuddyRequests && !userToFriend.MuteAll)
|
||||
userToFriend.LoggedinClient.SendPacket(pendingMsgOther);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue