powerfun-new-net/Hander/MultiUserHandle.cs
andy 0e931a3ac9 一些功能调整
增加tcp协议支持;
增加模拟多用户的功能;
2021-01-18 20:24:19 +08:00

85 lines
2.5 KiB
C#

using OnlineUserPool.Api;
using OnlineUserPool.Api.Model;
using OnlineUserPool.Model;
using OnlineUserPool.Unility;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
namespace OnlineUserPool.Hander
{
public class MultiUserHandle : IHandle
{
private int _index = -1;
private MultiUserModel model;
private TurfHelper _turfHelper;
private int _routeId = 4297; //1660;
private int _size = 200;
public MultiUserHandle()
{
Init();
}
public async void Init()
{
model = await BaseApi.GetAsync<MultiUserModel>($"/Map/sss?routeId={ _routeId }&size={ _size }");
double i = 0;
foreach (var item in model.users)
{
i += 0.0005;
item.Distance = i;
}
_turfHelper = new TurfHelper(model.route.List.Select(d => d.Point));
//Debug.WriteLine(res);
}
public List<MsgModel> GetVirtualUserData()
{
_index++;
var msgModels = new List<MsgModel>();
if(model == null)
{
return msgModels;
}
foreach (var item in model.users)
{
var preDistance = 0D;
//item.Distance = CommonHelper.GenerateRandomInteger(0, 30) / 1000D;
if (_index > 0)
{
preDistance = item.Distance * (_index -1);
}
var point = _turfHelper.Along(item.Distance * _index);
var info = new MsgModel()
{
exit = false,
IsCompleted = false,
MemberId = item.Id,//虚拟的人Id变为负数
Point = new double[] { Math.Round(point.Latitude, 6), Math.Round(point.Longitude, 6) },
//Prop = string.Join(',', prop),
RouteId = _routeId,
EndDistance = item.Distance * _index,
//ShowVirtual = true,
CommandType = 1,
//IsVirtual = true,
Speed = item.Speed,
WeightKg = 0,
PreDistance = preDistance,
Competitionid = 30
};
msgModels.Add(info);
}
return msgModels;
}
public void RemoveEndAndAddNewVirtualUser(int customerCount)
{
}
}
}