string GetLogCsv(string category, DateTime startDate, SpeedrunTime time, SpeedrunTime oldTimingTime, bool isMirrored, bool cheatsEnabled) { if (startDate.Kind == DateTimeKind.Utc) { startDate = startDate.ToLocalTime(); } var startDateStr = startDate.ToString("o", CultureInfo.InvariantCulture); var decimals = 3; var realTimeStr = Utils.FormatTime(time.RealTime, decimals); var gameTimeStr = Utils.FormatTime(time.GameTime, decimals); var realTimeOldStr = Utils.FormatTime(oldTimingTime.RealTime, decimals); var gameTimeOldStr = Utils.FormatTime(oldTimingTime.GameTime, decimals); var version = Log.Version; var gameVersion = Log.IsLegacy ? "2013" : "2017"; var cheats = BoolToYesNo(cheatsEnabled); var mirrored = BoolToYesNo(isMirrored); return(category + ",START DATE,REAL TIME,GAME TIME,GAME TIME (RAW)" + ",REAL TIME (OLD TIMING),GAME TIME (OLD TIMING)" + ",MIRRORED,CHEATS,MOD VERSION,GAME VERSION" + Environment.NewLine + $",{startDateStr},{realTimeStr},{gameTimeStr},{time.GameBeatTime}" + $",{realTimeOldStr},{gameTimeOldStr}" + $",{mirrored},{cheats},{Log.Version},{gameVersion}" + Environment.NewLine); }
public void LevelStart(int level, SpeedrunTime timestamp) { ThrowIfLevelOutOfRange(level); Levels[level - 1] = new LevelLog() { StartDate = DateTime.UtcNow, StartTime = timestamp, IsMirrored = MirrorModeManager.mirrorModeActive }; }
public void CompleteLevel(int level, SpeedrunTime timestamp) { ThrowIfLevelOutOfRange(level); var index = level - 1; if (Levels[index] == null) { Levels[index] = new LevelLog(); } Levels[index].SplitTime = timestamp; Levels[index].CheatsEnabled = Cheats.Enabled; }
void Update() { TorchScript saveDataTorch = saveTorch.GetComponent <TorchScript>(); SpeedrunTime timer = time.GetComponent <SpeedrunTime>(); keyPickup keyCounter = key.GetComponent <keyPickup>(); textCounterCoins.text = coins.ToString(); if (chest.isChanged == 0) { textCounterPotion.text = potions.ToString(); } else if (chest.isChanged == 1 && which.whichOne == 0) { textCounterPotion.text = potion_mvspeed.ToString(); } else if (chest.isChanged == 1 && which.whichOne == 1) { textCounterPotion.text = potion_invisible.ToString(); } textCounterTrap.text = trap.ToString(); textCounterTorch.text = torches.ToString(); textCounterKeys.text = keyCounter.key.ToString(); movement.x = Input.GetAxisRaw("Horizontal"); movement.y = Input.GetAxisRaw("Vertical"); movement = movement.normalized; hf = movement.x > 0.01f ? movement.x : movement.x < -0.01f ? 1 : 0; speed = movement.y > 0.01f ? movement.y : movement.y < -0.01f ? 1 : 0; if (movement.x < -0.01f) { this.gameObject.transform.localScale = new Vector3(-1, 1, 1); } else { this.gameObject.transform.localScale = new Vector3(1, 1, 1); } anim.SetFloat("Horizontal", hf); anim.SetFloat("Vertical", movement.y); anim.SetFloat("Speed", speed); }
public void AllLevels() { var log = new RunLog(); var timeIncrement = new SpeedrunTime(TimeSpan.FromMinutes(3.1374), TimeSpan.FromMinutes(2.7684)); var timer = new SpeedrunTime(); for (var lvl = 1; lvl <= log.Levels.Length; lvl++) { timer += timeIncrement; log.LevelStart(lvl, timer); var expectedLevelTime = new SpeedrunTime(); for (var i = 0; i < lvl; i++) { timer += timeIncrement; expectedLevelTime += timeIncrement; } log.CompleteLevel(lvl, timer); Assert.AreEqual(expectedLevelTime, log.Levels[lvl - 1].Time); Assert.AreEqual(timer, log.Levels[lvl - 1].SplitTime); } }
private void Update() { SpeedrunTime speedrunTime = new SpeedrunTime(speedrunSeconds.Value); text.text = speedrunTime.minutes + ":" + speedrunTime.seconds + ":" + speedrunTime.milliSeconds; }