骑行界面按钮替换,界面&逻辑调整

This commit is contained in:
lishuo committed 2021-04-29 18:07:30 +08:00
1 parent 9993752ff5
commit ae55258b9b
28 files changed
+11438 -8086

No files matched your search

+10443 -8029
View File
File diff suppressed because it is too large. Load diff
@@ -290,7 +290,12 @@ public class CyclingController : DeviceServiceMonoBase
{
isQuit = true;
isStart = false;
string imageFileName = CaptureCamera(Camera.main, new Rect(Screen.width * 0f, Screen.height * 0f, Screen.width * 0.5f, Screen.height * 0.5f));
string recordId = Guid.NewGuid().ToString();
var path = Helper.GetDataDir("MapWorkoutRecords/"+ recordId);
string imageFileName = path +"/"+ Guid.NewGuid().ToString() + ".png";
CaptureCamera(Camera.main, new Rect(Screen.width * 0f, Screen.height * 0f, Screen.width * 0.5f, Screen.height * 0.5f), imageFileName);
cyclingController.recorderData.StartTime = startTime;
cyclingController.recorderData.IsCompleted = totalDistance == mapData.TotalDistance;
cyclingController.recorderData.EndDistance = totalDistance;
@@ -302,12 +307,10 @@ public class CyclingController : DeviceServiceMonoBase
var rs = resultPanel.GetComponent<ResultPanelScript>();
rs.InjectController(this);
rs.SetDataSource(cyclingController.recorderData);
var localData = cyclingController.recorderData.SaveLocal(cyclingModel, selectParamModel, imageFileName);
//异步上传
cyclingController.recorderData.SaveDataAysnc(localData);
cyclingController.recorderData.SaveLocal(cyclingModel, selectParamModel, imageFileName, recordId);
}
protected string CaptureCamera(Camera camera, Rect rect)
protected void CaptureCamera(Camera camera, Rect rect,string fileName)
{
// 创建一个RenderTexture对象
RenderTexture rt = new RenderTexture((int)rect.width, (int)rect.height, 0);
@@ -333,11 +336,10 @@ public class CyclingController : DeviceServiceMonoBase
// 最后将这些纹理数据,成一个图片文件
byte[] bytes = screenShot.EncodeToPNG();
var path = Helper.GetDataDir("MapWorkoutRecords/images");
string filename = path + "/" + Guid.NewGuid().ToString() + ".png";
System.IO.File.WriteAllBytes(filename, bytes);
//var path = Helper.GetDataDir("MapWorkoutRecords/images");
//string filename = path + "/" + Guid.NewGuid().ToString() + ".png";
System.IO.File.WriteAllBytes(fileName, bytes);
//Debug.Log(string.Format("截屏了一张照片: {0}", filename));
return filename;
}
public Vector2d GetCenterCoordinate()
+29 -3
View File
@@ -25,6 +25,33 @@ namespace Assets.Scenes.Ride.Scripts
}
return dirName;
}
public static void DelectDir(string srcPath)
{
try
{
DirectoryInfo dir = new DirectoryInfo(srcPath);
FileSystemInfo[] fileinfo = dir.GetFileSystemInfos(); //返回目录中所有文件和子目录
foreach (FileSystemInfo i in fileinfo)
{
if (i is DirectoryInfo) //判断是否文件夹
{
DirectoryInfo subdir = new DirectoryInfo(i.FullName);
subdir.Delete(true); //删除子目录和文件
}
else
{
File.Delete(i.FullName); //删除指定文件
}
}
//删除当前文件夹
Directory.Delete(srcPath);
}
catch (Exception e)
{
throw;
}
}
public static double AveragePower(IList<TargetData> list)
{
return Math.Floor(list.Where(p => p._Power > -1).Average(a => a._Power));
@@ -315,7 +342,7 @@ namespace Assets.Scenes.Ride.Scripts
var polyline = Encode(list);
var encodeline = UnityWebRequest.EscapeURL(polyline); //HttpUtility.UrlEncode(polyline);
//获取封面图片
var url = $"https://api.mapbox.com/styles/v1/mapbox/dark-v10/static/path-4+35ace1-1({encodeline})/auto/1280x1280?access_token={App.MapBoxAccessToken}";
var url = $"https://api.mapbox.com/styles/v1/juzetest/ckmkdjwsa1nvt17nr1ps4fqgs/static/path-4+fff-1({encodeline})/auto/1280x1280?access_token={App.MapBoxAccessToken}";
HttpClient c = new HttpClient();
var response = await c.GetAsync(url);
if (response.StatusCode == System.Net.HttpStatusCode.OK)
@@ -349,8 +376,7 @@ namespace Assets.Scenes.Ride.Scripts
var polyline = Encode(result);
var encodeline = UnityWebRequest.EscapeURL(polyline); //HttpUtility.UrlEncode(polyline);
//获取封面图片
var url = $"https://api.mapbox.com/styles/v1/mapbox/dark-v10/static/path-4+35ace1-1({encodeline})/auto/1280x768?access_token={App.MapBoxAccessToken}&padding=200&pitch=60";
var url = $"https://api.mapbox.com/styles/v1/juzetest/ckmkdjwsa1nvt17nr1ps4fqgs/static/path-4+fff-1({encodeline})/auto/1280x1280?access_token={App.MapBoxAccessToken}&padding=300&pitch=30";
return url;
}
}
@@ -124,6 +124,11 @@ namespace Assets.Scenes.Ride.Scripts
{
var prefab = Resources.Load<GameObject>("UI/Prefab/Ride/RankingItem");
var parent = transform.Find("Panel/MapRanking");
var title = transform.Find("Panel/RankingTitle").gameObject;
if (list.Count == 0)
{
title.SetActive(false);
}
foreach (var item in list)
{
GameObject newObj = (GameObject)Instantiate(prefab, parent);
@@ -106,12 +106,12 @@ namespace Assets.Scenes.Ride.Scripts.Model
public int GlobalCyclingId { get; set; }
public Dictionary<MapInterruptRecord, List<string>> SaveLocal(CyclingModel cyclingModel, RouteResultParam selectParam, string imageName = "")
public void SaveLocal(CyclingModel cyclingModel, RouteResultParam selectParam, string imageName,string recordId)
{
Dictionary<MapInterruptRecord, List<string>> recordData = new Dictionary<MapInterruptRecord, List<string>>();
if (RiderDatas.Count <= 0)
{
return recordData;
return ;
}
string newFileName = Guid.NewGuid().ToString();
int FTP = Helper.GetFtp();
@@ -123,7 +123,7 @@ namespace Assets.Scenes.Ride.Scripts.Model
var averagePower = Helper.AveragePower(RiderDatas);
// AntManufacturer manufacturer = service.GetAntManufacturer(ManufacturerId).data;
var recordId = Guid.NewGuid().ToString();
//var recordId = Guid.NewGuid().ToString();
var ticks = RiderDatas.Last().Ticks;
var interruptRecord = new MapInterruptRecord
{
@@ -207,7 +207,8 @@ namespace Assets.Scenes.Ride.Scripts.Model
System.IO.File.WriteAllText(recordFilePath, recordString);
recordData.Add(interruptRecord, files);
return recordData;
SaveDataAysnc(recordData);
}
/// <summary>
/// 保存数据
@@ -218,12 +219,26 @@ namespace Assets.Scenes.Ride.Scripts.Model
{
if (data != null && data.Count > 0)
{
Task.Run(() => {
var path = Helper.GetDataDir("MapWorkoutRecords");
//Task.Run(() => {
var record = data.FirstOrDefault();
MapInterruptRecordApi service = new MapInterruptRecordApi();
var result = service.Add(record.Key, record.Value);
//return new JsonResult<AddMapRecordResultModel> { result = result.result, errMsg = result.errMsg, data = result.data };
});
//删除文件
try
{
path = path + "/" + record.Key.Id;
if (result.result && Directory.Exists(path))
{
Helper.DelectDir(path);
}
}
catch (Exception e)
{
Debug.Log(e.Message);
}
//});
}
}
}
+21 -9
View File
@@ -20,17 +20,29 @@ namespace Assets.Scenes.Ride.Scripts
mScoreSequence.SetAutoKill(false);
text = transform.GetComponent<Text>();
}
public void AnimateNum(float newScore, int digit, string format)
private double temp = 0;
private int index = -1;
public void AnimateNum(float newScore,double totalDistance,int currentIndex, int digit, string format)
{
mScoreSequence.Append(DOTween.To(delegate (float value)
if (currentIndex != index)
{
var temp = Math.Round(value, digit);
//向Text组件赋值
text.text = string.Format(format, temp);
}, mOldScore, newScore, 1f));
//将更新后的值记录下来, 用于下一次滚动动画
mOldScore = newScore;
text.text = string.Format(format, totalDistance);
index = currentIndex;
}
else
{
mScoreSequence.Append(DOTween.To(delegate (float value)
{
if (value != newScore)
{
temp = Math.Round(value, digit);
//向Text组件赋值
text.text = string.Format(format, temp);
}
}, mOldScore, newScore, 1f));
//将更新后的值记录下来, 用于下一次滚动动画
mOldScore = newScore;
}
}
}
}
+20 -17
View File
@@ -80,24 +80,27 @@ namespace Assets.Scenes.Ride.Scripts
private void InitReview()
{
reviewScrollView.SetActive(true);
var rankingList = mapApi.GetRecordFileFromServer(cyclingController.selectParamModel.RankingsId);
foreach (var item in rankingList)
if (cyclingController.selectParamModel.RankingsId.Count > 0)
{
GameObject newObj = (GameObject)Instantiate(reviewItem, content.transform);
var reviewItemScript = newObj.GetComponent<ReviewItemScript>();
reviewItemScript.SetHead(item.WxHeadImg);
reviewItemScript.SetName(item.NickName);
reviewItemScript.SetDistance(0D);
reviewList.Add(reviewItemScript);
GameObject otherPlayerObj = (GameObject)Instantiate(otherPlayer, transform.parent.parent.parent);
var otherPlayerController = otherPlayerObj.GetComponent<OtherPlayerController>();
otherList.Add(otherPlayerController);
otherPlayerController.record = item.record;
otherPlayerController.SetController(reviewItemScript);
GameObject miniPlayer = (GameObject)Instantiate(miniMapPlayer, transform.parent.parent.parent);
var miniController = miniPlayer.GetComponent<MiniMapPlayerController>();
miniController.SetController(otherPlayerController);
var rankingList = mapApi.GetRecordFileFromServer(cyclingController.selectParamModel.RankingsId);
foreach (var item in rankingList)
{
GameObject newObj = (GameObject)Instantiate(reviewItem, content.transform);
var reviewItemScript = newObj.GetComponent<ReviewItemScript>();
reviewItemScript.SetHead(item.WxHeadImg);
reviewItemScript.SetName(item.NickName);
reviewItemScript.SetDistance(0D);
reviewList.Add(reviewItemScript);
GameObject otherPlayerObj = (GameObject)Instantiate(otherPlayer, transform.parent.parent.parent);
var otherPlayerController = otherPlayerObj.GetComponent<OtherPlayerController>();
otherList.Add(otherPlayerController);
otherPlayerController.record = item.record;
otherPlayerController.SetController(reviewItemScript);
GameObject miniPlayer = (GameObject)Instantiate(miniMapPlayer, transform.parent.parent.parent);
var miniController = miniPlayer.GetComponent<MiniMapPlayerController>();
miniController.SetController(otherPlayerController);
}
}
}
}
@@ -85,14 +85,26 @@ namespace Assets.Scenes.Ride.Scripts
gameObjects.Add(transform.Find("Panel/Player3").gameObject);
gameObjects.Add(transform.Find("Panel/Player4").gameObject);
gameObjects.Add(transform.Find("Panel/Player5").gameObject);
//功体比默认条件
var currentUserWkg = Math.Round((App.CurrentUser.FTP / App.CurrentUser.Weight),2);
_startValue = currentUserWkg - 0.5<0?0 : currentUserWkg - 0.5;
_endValue = currentUserWkg + 0.5;
startValue.text = _startValue.ToString();
endValue.text = _endValue.ToString();
}
private void StartvalueChanged(string input)
{
_startValue = Convert.ToDouble(input);
if (!string.IsNullOrWhiteSpace(input))
{
_startValue = Convert.ToDouble(input);
}
}
private void EndvalueChanged(string input)
{
_endValue = Convert.ToDouble(input);
if (!string.IsNullOrWhiteSpace(input))
{
_endValue = Convert.ToDouble(input);
}
}
private void InputTextChanged(string input)
{
@@ -155,7 +167,8 @@ namespace Assets.Scenes.Ride.Scripts
}
private void Start()
{
CreateGameObject(cyclingController.mapRouteRankingList);
//CreateGameObject(cyclingController.mapRouteRankingList);
Refresh();
}
private void Refresh()
@@ -49,7 +49,7 @@ namespace Assets.Scenes.Ride.Scripts
Close.gameObject.SetActive(false);
isUsed = false;
Name.text = "New Shadow";
var defaultexture = Resources.Load<Sprite>("Images/New Account").texture;
var defaultexture = Resources.Load<Sprite>("Images/Ride/head~").texture;
Head.texture = defaultexture;
RankingId = string.Empty;
}
+36 -7
View File
@@ -86,6 +86,7 @@ namespace Assets.Scenes.Ride.Scripts
GameObject headPanel;
GameObject settingPanel;
Button abandonButton;
GameObject singleArea;
void Awake()
{
#region 控件获取与事件绑定
@@ -97,7 +98,7 @@ namespace Assets.Scenes.Ride.Scripts
startPanel = transform.Find("Panel/StartPanel").gameObject;
startBtn = transform.Find("Panel/StartPanel/StartButton").GetComponent<Button>();
simpleBtn = transform.Find("Panel/SimpleButton").GetComponent<Button>();
ditance = transform.Find("Panel/ComputerPanel/DistanceView/Distance").GetComponent<Text>();
ditance = transform.Find("Panel/ComputerPanel/Distance").GetComponent<Text>();
titlePanel = transform.Find("Panel/TitlePanel").gameObject;
totalDistance = transform.Find("Panel/TitlePanel/TotalDistance").GetComponent<Text>();
candance = transform.Find("Panel/PowerPanel/Cadance").GetComponent<Text>();
@@ -109,12 +110,12 @@ namespace Assets.Scenes.Ride.Scripts
currentSlopeText = transform.Find("Panel/CurrentSlopePanel/CurrentSlopeText").GetComponent<Text>();
currentSlopeDistanceText = transform.Find("Panel/CurrentSlopePanel/CurrentSlopeDistance").GetComponent<Text>();
currentSlopeToatalDistanceText = transform.Find("Panel/CurrentSlopePanel/TotalSlopeDistance").GetComponent<Text>();
speedTxt = transform.Find("Panel/ComputerPanel/SpeedView/Speed").GetComponent<Text>();
speedTxt = transform.Find("Panel/ComputerPanel/Speed").GetComponent<Text>();
powerTxt = transform.Find("Panel/PowerPanel/Power").GetComponent<Text>();
timerTxt = transform.Find("Panel/ComputerPanel/Timer").GetComponent<Text>();
countDownTxt = transform.Find("Panel/CountDown").GetComponent<Text>();
mapName = transform.Find("Panel/TitlePanel/MapName").GetComponent<Text>();
totalClimb = transform.Find("Panel/ComputerPanel/TotalClimbView/TotalClimb").GetComponent<Text>();
totalClimb = transform.Find("Panel/ComputerPanel/TotalClimb").GetComponent<Text>();
//img = transform.Find("Panel/ElevationChart/HeadImage").GetComponent<RawImage>();
head = transform.Find("Panel/GraphChart/HeadPanel/Head").GetComponent<RawImage>();
headPanel = transform.Find("Panel/GraphChart/HeadPanel").gameObject;
@@ -132,13 +133,18 @@ namespace Assets.Scenes.Ride.Scripts
settingButton = transform.Find("Panel/ToolBarPanel/SettingButton").GetComponent<Button>();
deviceButton = transform.Find("Panel/ToolBarPanel/DeviceButton").GetComponent<Button>();
exitButton = transform.Find("Panel/ToolBarPanel/ExitButton").GetComponent<Button>();
singleButton = transform.Find("Panel/SelectPanel/SingleButton").GetComponent<Button>();
shadowButton = transform.Find("Panel/SelectPanel/ShadowButton").GetComponent<Button>();
singleArea = transform.Find("Panel/ReviewPanel/SingleArea").gameObject;
addButton = transform.Find("Panel/ReviewPanel/SingleArea/AddButton").GetComponent<Button>();
saveButton = transform.Find("Panel/QuitPanel/SaveButton").GetComponent<Button>();
cancelQuitButton = transform.Find("Panel/QuitPanel/CancelButton").GetComponent<Button>();
closeQuitButton = transform.Find("Panel/QuitPanel/CloseButton").GetComponent<Button>();
abandonButton = transform.Find("Panel/QuitPanel/AbandonButton").GetComponent<Button>();
viewButton =transform.Find("Panel/ViewButton").GetComponent<Button>();
altitudeGraph = transform.Find("Panel/TitlePanel/AltitudeGraph").GetComponent<RawImage>();
leftImage = transform.Find("Panel/TitlePanel/Left").GetComponent<Image>();
@@ -166,8 +172,8 @@ namespace Assets.Scenes.Ride.Scripts
UIManager.AddEvent(shadowButton.gameObject, UnityEngine.EventSystems.EventTriggerType.PointerEnter, OnPointEnter);
UIManager.AddEvent(singleButton.gameObject, UnityEngine.EventSystems.EventTriggerType.PointerExit, OnPointExit);
UIManager.AddEvent(shadowButton.gameObject, UnityEngine.EventSystems.EventTriggerType.PointerExit, OnPointExit);
#endregion
}
@@ -226,6 +232,7 @@ namespace Assets.Scenes.Ride.Scripts
if (mainController.mapRouteRankingList == null || mainController.mapRouteRankingList.Count == 0)
{
shadowButton.image.sprite = Resources.Load<Sprite>("Images/Ride/Shadow Mode_no");
shadowButton.enabled = false;
shadowButton.interactable = false;
}
@@ -234,6 +241,13 @@ namespace Assets.Scenes.Ride.Scripts
shadowButton.enabled = true;
shadowButton.interactable = true;
}
//标记3d的地图可以用
if (!route.RouteInstance.Enable3D)
{
viewButton.enabled = false;
viewButton.interactable = false;
}
}
//继续骑行如果有伴侣就自动进入伴侣骑行
private void ContinueRide()
@@ -296,6 +310,10 @@ namespace Assets.Scenes.Ride.Scripts
mainController.SetStart();
countDownTxt.gameObject.SetActive(false);
}
if (count == 1 && mainController.cyclingModel == CyclingModel.Single)
{
reviewPanel.GetComponent<CanvasGroup>().DOFade(0, 1);
}
timeRemaining = 1.0f;
}
}
@@ -319,11 +337,19 @@ namespace Assets.Scenes.Ride.Scripts
//nextSlopeDistanceText.GetComponent<NumberDotween>().AnimateNum((float)playerController.NextSlopeDistance, 0, "-{0}M");
nextSlopeDistanceText.text = $"{Math.Round(playerController.NextSlopeTotalDistance, 0)}M";
currentSlopeText.text = Math.Round(playerController.CurrentSlope, 1).ToString() + "%";
currentSlopeDistanceText.GetComponent<NumberDotween>().AnimateNum((float)playerController.CurrentSlopeDistance, 0, "{0}M");
currentSlopeDistanceText.GetComponent<NumberDotween>().AnimateNum((float)playerController.CurrentSlopeDistance, Math.Round(playerController.CurrentDistance, 0), playerController.CurrentIndex, 0, "{0}M");
totalClimb.text = Math.Round(playerController.TotalClimb, 0).ToString();
}
}
//重置游戏
public void Reset()
{
mainController.isStart = false;
mainController.isPause = false;
mainController.isQuit = false;
count = 0;
countDownTxt.gameObject.SetActive(false);
}
private void SingleRide(BaseEventData baseEventData)
{
selectPanel.SetActive(false);
@@ -344,6 +370,7 @@ namespace Assets.Scenes.Ride.Scripts
}
private void ShowSelectPlayer(BaseEventData baseEventData)
{
Reset();
selectPlayer.SetActive(true);
}
@@ -370,6 +397,8 @@ namespace Assets.Scenes.Ride.Scripts
private void PauseRide(BaseEventData baseEventData)
{
mainController.SetPause();
count = 0;
countDownTxt.gameObject.SetActive(false);
startBtn.gameObject.SetActive(true);
startPanel.SetActive(true);
}