forked from powerfun/udpservice
85 lines
2.5 KiB
C#
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)
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|