131 lines
4.2 KiB
C#
131 lines
4.2 KiB
C#
using Microsoft.AspNetCore.Mvc;
|
|
using ServerCommon;
|
|
using ServerCore; using ServerBase;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Net.WebSockets;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using static ClientToGameMessage.Types;
|
|
using static ServerMessage.Types;
|
|
|
|
namespace GameServer
|
|
{
|
|
internal static class LandNotifyHelper
|
|
{
|
|
public static async Task<bool> send_S2C_NTF_LAND_INFOS(this Player player)
|
|
{
|
|
var server_logic = GameServerApp.getServerLogic();
|
|
var land_manager = server_logic.getLandManager();
|
|
|
|
var ntf_packet = new ClientToGame();
|
|
ntf_packet.Message = new ClientToGameMessage();
|
|
ntf_packet.Message.NtfLandInfos = new GS2C_NTF_LAND_INFOS();
|
|
|
|
var land_infos = await land_manager.getLandInfos();
|
|
foreach (var land_info in land_infos)
|
|
{
|
|
ntf_packet.Message.NtfLandInfos.LandInfos.Add(land_info.LandMetaId, land_info);
|
|
}
|
|
|
|
if (false == GameServerApp.getServerLogic().onSendPacket(player, ntf_packet))
|
|
{
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
public static bool broadcast_S2C_NTF_LAND_INFOS(LandInfo landInfo)
|
|
{
|
|
var server_logic = GameServerApp.getServerLogic();
|
|
var users = server_logic.getPlayerManager().getUsers();
|
|
var players = users.Values.ToArray();
|
|
|
|
if (players.Length == 0)
|
|
return true;
|
|
|
|
var ntf_packet = new ClientToGame();
|
|
ntf_packet.Message = new ClientToGameMessage();
|
|
ntf_packet.Message.NtfLandInfos = new GS2C_NTF_LAND_INFOS();
|
|
|
|
ntf_packet.Message.NtfLandInfos.LandInfos.Add(landInfo.LandMetaId, landInfo);
|
|
|
|
if (false == GameServerApp.getServerLogic().onSendPacket(players, ntf_packet))
|
|
{
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
public static bool broadcast_S2C_NTF_LAND_INFOS(List<LandInfo> landInfos)
|
|
{
|
|
var server_logic = GameServerApp.getServerLogic();
|
|
var users = server_logic.getPlayerManager().getUsers();
|
|
var players = users.Values.ToArray();
|
|
|
|
if (players.Length == 0)
|
|
return true;
|
|
|
|
var ntf_packet = new ClientToGame();
|
|
ntf_packet.Message = new ClientToGameMessage();
|
|
ntf_packet.Message.NtfLandInfos = new GS2C_NTF_LAND_INFOS();
|
|
|
|
foreach (var landInfo in landInfos)
|
|
{
|
|
ntf_packet.Message.NtfLandInfos.LandInfos.Add(landInfo.LandMetaId, landInfo);
|
|
}
|
|
|
|
if (false == GameServerApp.getServerLogic().onSendPacket(players, ntf_packet))
|
|
{
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
public static bool send_GS2GS_NTF_MODIFY_LAND_INFO(List<LandInfo> landInfos)
|
|
{
|
|
var server_logic = GameServerApp.getServerLogic();
|
|
var message = new ServerMessage();
|
|
|
|
message.NtfModifyLandInfo = new GS2GS_NTF_MODIFY_LAND_INFO();
|
|
message.NtfModifyLandInfo.ExceptServerName = server_logic.getServerName();
|
|
message.NtfModifyLandInfo.LandInfos.AddRange(landInfos);
|
|
|
|
var rabbit_mq = server_logic.getRabbitMqConnector() as RabbitMQ4Game;
|
|
NullReferenceCheckHelper.throwIfNull(rabbit_mq, () => $"rabbit_mq is null !!!");
|
|
|
|
rabbit_mq.sendMessageToExchangeAllGame(message);
|
|
|
|
return true;
|
|
}
|
|
|
|
public static async Task<bool> sendNtfModifyLandInfo(Land land)
|
|
{
|
|
var land_info = await land.toLandInfo();
|
|
var land_infos = new List<LandInfo>();
|
|
land_infos.Add(land_info);
|
|
|
|
// 현재 서버 유저
|
|
broadcast_S2C_NTF_LAND_INFOS(land_info);
|
|
|
|
// 다른 서버
|
|
send_GS2GS_NTF_MODIFY_LAND_INFO(land_infos);
|
|
|
|
return true;
|
|
}
|
|
|
|
public static bool sendNtfModifyLandInfos(List<LandInfo> landInfos)
|
|
{
|
|
broadcast_S2C_NTF_LAND_INFOS(landInfos);
|
|
|
|
send_GS2GS_NTF_MODIFY_LAND_INFO(landInfos);
|
|
|
|
return true;
|
|
}
|
|
}
|
|
}
|