// 创建 Save 数据对象, 保存数据 private Save CreateSaveObject() { Save save = new Save(); save.coin = GameManager.instance.coin; save.playerPosX = player.transform.position.x; save.playerPosY = player.transform.position.y; save.playerPosZ = player.transform.position.z; foreach (var coin in coins) { CoinState coinState = new CoinState(); coinState.x = coin.transform.position.x; coinState.y = coin.transform.position.y; coinState.z = coin.transform.position.z; coinState.isDead = coin.GetComponent <Coin>().isDead; save.coins.Add(coinState); } return(save); }
// 初始化每一个金币. public void Init(int _canonID, Vector3 _ownerPos, float _targetTime2Punch, bool _play) { curCoinState = CoinState.wait; targetTime = Time.time + _targetTime2Punch; //ownerIndex = _ownerIndex; initPos = curTrans.position; switch (CanonCtrl.Instance.dirArray[_canonID]) { case 0: targetPos = curTrans.position + new Vector3(0f, punchHeight, 0f); break; case 1: targetPos = curTrans.position - new Vector3(punchHeight, 0f, 0f); break; case 2: targetPos = curTrans.position - new Vector3(0f, punchHeight, 0f); break; case 3: targetPos = curTrans.position + new Vector3(punchHeight, 0f, 0f); break; } ownerPos = _ownerPos; playAudio = _play; }
/// <summary> /// <para>Note : send command to devices.</para> /// <para>return DevicesInfo</para> /// <para>Note : DevicesInfo is java Object</para> /// <para>Status Device : 90051103A9</para> /// <para>Firmware Version : 900503039B</para> /// </summary> public CoinState CurrentStatus() { byte[] data = { }; try { _serialPort.DataReceived -= _serialPortDataReceived; if (!_serialPort.IsOpen) { _serialPort.Open(); } if (_serialPort.IsOpen) { CallbackState(); } } catch (Exception exception) { if (_serialPort.IsOpen) { _serialPort.Close(); } _invoke = CoinState.Unavailable; Console.WriteLine("exception : " + exception); } Console.WriteLine("current state : " + _invoke); _serialPort.DataReceived += _serialPortDataReceived; return(_invoke); }
void Update() { if (State == CoinState.Free) { _timeSpentFree += Time.deltaTime; _lossWait -= Time.deltaTime; if (_timeSpentFree > 2f) { Renderer.enabled = Mathf.Sin(Time.time * 40f) > 0f; } if (_timeSpentFree > 4f) { ObjectLocator.Coins.Push(this); } return; } _bulletDuration -= Time.deltaTime; ObjectLocator.Particles.CoinTrail(transform.position, Rigidbody.velocity); if (_bulletDuration <= 1f || Rigidbody.velocity.magnitude < 0.1f) { _firedById = -1; _lossWait = LossWaitDuration; State = CoinState.Free; Rigidbody.velocity = Vector3.zero; Rigidbody.angularVelocity = Vector3.zero; transform.rotation = Quaternion.identity; } }
/// <summary> /// <para>Note : Disabled to devices.</para> /// <para>return success ? true : false</para> /// <para>Command Device : 900502039A</para> /// </summary> public CoinState Close() { Byte[] data = { }; try { _accept -= CoinInfo; _serialPort.DataReceived -= _serialPortDataReceived; if (!_serialPort.IsOpen) { _serialPort.Open(); } if (_serialPort.IsOpen) { //Disabled Device data = ConvertHexToByte("900502039A"); _serialPort.Write(data, 0, data.Length); Thread.Sleep(100); CallbackState(); } _serialPort.DiscardOutBuffer(); _serialPort.DiscardInBuffer(); _serialPort.Close(); } catch (Exception exception) { if (_serialPort.IsOpen) { _serialPort.Close(); } _invoke = CoinState.Unavailable; Console.WriteLine("exception : " + exception); } return(_invoke); }
/// <summary> /// Update function (IMonoUpdatable). /// </summary> /// <param name="gameTime"> Game time.</param> public override void Update(GameTime gameTime) { // Check the state of the coin. switch (_state) { case CoinState.SPAWNING: // Play spawning animation. Animations.Play((int)CoinAnimation.SPAWNING); if (Math.Abs(Position.Y - _spawnStartY) > _maxSpawnDistance) { // Set state to idle. _state = CoinState.IDLE; // Set vertical velocity to the spawnspeed. velocity.Y = -_spawnSpeed; // Set coin to be destroyed. Destroy(); } break; case CoinState.IDLE: // Play rotation animation. Animations.Play((int)CoinAnimation.ROTATING); break; } // Update the base class. base.Update(gameTime); }
public void Loss(Vector3 position, Vector3 target) { State = CoinState.Free; _lossWait = LossWaitDuration; _timeSpentFree = 0f; Rigidbody.velocity = Vector3.zero; Rigidbody.angularVelocity = Vector3.zero; transform.position = position + Vector3.up * 1f; transform.rotation = Quaternion.identity; var directionToTarget = (target - position).normalized; var direction = new Vector3( UnityEngine.Random.Range(-1f, 1f) * 0.1f, 0.5f, UnityEngine.Random.Range(-1f, 1f) * 0.1f ) + directionToTarget; var torque = new Vector3( UnityEngine.Random.Range(-1f, 1f), UnityEngine.Random.Range(-1f, 1f), UnityEngine.Random.Range(-1f, 1f) ) * 10f; Rigidbody.AddForce(direction * UnityEngine.Random.Range(5f, 10f), ForceMode.Impulse); Rigidbody.AddTorque(torque, ForceMode.Impulse); }
public void Serialize() { CoinState item1 = CoinState.Confirmed; CoinState item2 = CoinState.Claimed; CoinState[] val = new CoinState[] { item1, item2 }; uut.Items = val; byte[] data; using (MemoryStream stream = new MemoryStream()) { using (BinaryWriter writer = new BinaryWriter(stream, Encoding.ASCII, true)) { uut.Serialize(writer); data = stream.ToArray(); } } byte[] requiredData = new byte[] { 0, 2, 1, 8 }; data.Length.Should().Be(requiredData.Length); for (int i = 0; i < requiredData.Length; i++) { data[i].Should().Be(requiredData[i]); } }
public void Init(int _multi, int _value, int _dir) { targetTime = 0f; // label.text = _value.ToString(); label.ApplyValue(_value, 0); curStepPos = curTrans.localPosition; // nextStepPos = curTrans.localPosition + new Vector3(0f, cylinderJumpHeight_Max, 0f); CacualteJumpHeight(_multi); nextStepPos = curTrans.localPosition + new Vector3(0f, curCylinderJumpHeight, 0f); if (_dir == 2) { label.transform.localEulerAngles = new Vector3(0f, 0f, 180f); } else { label.transform.localEulerAngles = Vector3.zero; } coinState = CoinState.up; coinLerpPercent = 0f; coinStartLocalPos = coin.localPosition; if (_dir == 2) { coinTargetLocalPos = coinStartLocalPos + new Vector3(0f, coinJumpHeight, 0f); } else { coinTargetLocalPos = coinStartLocalPos + new Vector3(0f, coinJumpHeight, 0f); } moveUp = true; }
public void Serialize_EnumArray() { var test = new CoinState[] { CoinState.Confirmed, CoinState.Locked }; var copy = BinarySerializer.Default.Deserialize <CoinState[]>(BinarySerializer.Default.Serialize(test)); CollectionAssert.AreEqual(test, copy); }
public static int CalculateNumCoinsPassingThroughFloor( float lakituX, float lakituY, float lakituZ, int rngIndex) { int numCoinsPassingThroughFloor = 0; List <CoinState> prevStates = GetCoinStates(rngIndex, lakituX, lakituY, lakituZ); List <CoinState> states; for (int i = 0; i < 50; i++) { states = prevStates.ConvertAll(prevState => prevState.GetNextState()); for (int j = 0; j < states.Count; j++) { CoinState prevState = prevStates[j]; CoinState state = states[j]; bool justEnteredWater = GetBelowWater(state) && !GetBelowWater(prevState); bool passedThroughFloor = GetFloorRelativity(prevState) == FloorRelativity.ABOVE && GetFloorRelativity(state) == FloorRelativity.BELOW; if (justEnteredWater && passedThroughFloor) { numCoinsPassingThroughFloor++; } } prevStates = states; } return(numCoinsPassingThroughFloor); }
public void Drop() { if (coinState == CoinState.Selected) { coinState = CoinState.Idle; } }
private void LoadXmlData() { if (File.Exists(Application.dataPath + "/SaveData/save.xml")) { // 新建 save 对象 Save save = new Save(); // 读取 save.xml 文件的数据 XmlDocument xmlDocument = new XmlDocument(); xmlDocument.Load(Application.dataPath + "/SaveData/save.xml"); #region 加载存档数据 // 加载金币得分 save.coin = int.Parse(xmlDocument.GetElementsByTagName("CoinNum")[0].InnerText); // 加载玩家位置 save.playerPosX = float.Parse(xmlDocument.GetElementsByTagName("PlayerPosX")[0].InnerText); save.playerPosY = float.Parse(xmlDocument.GetElementsByTagName("PlayerPosY")[0].InnerText); save.playerPosZ = float.Parse(xmlDocument.GetElementsByTagName("PlayerPosZ")[0].InnerText); XmlNodeList coins = xmlDocument.GetElementsByTagName("Coin"); if (coins.Count != 0) { for (int i = 0; i < coins.Count; i++) { CoinState coinState = new CoinState(); // 获取各个 Coin 的状态数据 XmlNodeList CoinsPosX = xmlDocument.GetElementsByTagName("CoinPosX"); XmlNodeList CoinsPosY = xmlDocument.GetElementsByTagName("CoinPosY"); XmlNodeList CoinsPosZ = xmlDocument.GetElementsByTagName("CoinPosZ"); XmlNodeList CoinsDead = xmlDocument.GetElementsByTagName("isDead"); // 转换坐标位置 coinState.x = float.Parse(CoinsPosX[i].InnerText); coinState.y = float.Parse(CoinsPosY[i].InnerText); coinState.z = float.Parse(CoinsPosZ[i].InnerText); // 金币的死亡状态 coinState.isDead = bool.Parse(CoinsDead[i].InnerText); // 添加进 save 的 coins 列表 save.coins.Add(coinState); } } #endregion // 加载 save 数据到场景中 LoadSaveObject(save); } else { Debug.Log("无存档数据"); } }
public void Size_Get_1() { CoinState item1 = CoinState.Confirmed; CoinState[] val = new CoinState[] { item1 }; uut.Items = val; uut.Size.Should().Be(3); // 1 + 2 }
void Update() { if (curCoinState == CoinState.wait) { if (Time.time > targetTime) { curTrans.localScale = Vector3.one; targetTime = 0f; // if(playAudio) // { // audioS.Play(); // } curCoinState = CoinState.punching_up; } } else if (curCoinState == CoinState.punching_up) { targetTime += Time.deltaTime * punchSpeed; curTrans.position = Vector3.Lerp(initPos, targetPos, targetTime); if (targetTime > 1f) { targetTime = 0f; curCoinState = CoinState.punching_down; } } else if (curCoinState == CoinState.punching_down) { targetTime += Time.deltaTime * punchSpeed; curTrans.position = Vector3.Lerp(targetPos, initPos, targetTime); if (targetTime > 1f) { targetTime = Time.time + wait4Lerp; curCoinState = CoinState.wait2; } } else if (curCoinState == CoinState.wait2) { if (Time.time > targetTime) { curCoinState = CoinState.lerping; targetTime = 0f; } } else if (curCoinState == CoinState.lerping) { targetTime += Time.deltaTime * lerp2CanonSpeed; curTrans.position = Vector3.Lerp(initPos, ownerPos, targetTime); if (targetTime > 1f) { // audioS.Stop(); Factory.Recycle(curTrans); } } }
public void Items_Set() { CoinState item1 = CoinState.Confirmed; CoinState item2 = CoinState.Spent; CoinState[] val = new CoinState[] { item1, item2 }; uut.Items = val; uut.Items.Length.Should().Be(val.Length); uut.Items[0].Should().Be(item1); uut.Items[1].Should().Be(item2); }
public void Size_Get_3() { CoinState item1 = CoinState.Confirmed; CoinState item2 = CoinState.Frozen; CoinState item3 = CoinState.Spent; CoinState[] val = new CoinState[] { item1, item2, item3 }; uut.Items = val; uut.Size.Should().Be(5); // 1 + 4 }
public bool Select() { bool selected = false; if (coinState == CoinState.Idle) { coinState = CoinState.Selected; selected = true; } return(selected); }
public void Reset() { Rigidbody.velocity = Vector3.zero; Rigidbody.angularVelocity = Vector3.zero; State = CoinState.Free; _firedById = -1; _bulletDuration = 0; _lossWait = 0f; _firedByPlayer = null; _timeSpentFree = 0f; Renderer.enabled = true; }
public void Fire(Player player, Transform origin) { _firedByPlayer = player; _firedById = player.gameObject.GetInstanceID(); State = CoinState.Bullet; Rigidbody.velocity = Vector3.zero; Rigidbody.angularVelocity = Vector3.zero; transform.position = origin.position; transform.rotation = origin.rotation * Quaternion.Euler(90f, 0f, 0f); Rigidbody.AddForce(origin.forward * 30f, ForceMode.Impulse); _bulletDuration = 2f; }
public static FloorRelativity GetFloorRelativity(CoinState coinState) { float heightOnTriangle = GetHeightOnTriangle(coinState.X, coinState.Z); float heightDiff = coinState.Y - heightOnTriangle; if (heightDiff > 0) { return(FloorRelativity.ABOVE); } if (heightDiff < -78) { return(FloorRelativity.BELOW); } return(FloorRelativity.INSIDE); }
public static bool JustEnteredWater(CoinState coinState) { int waterLevel = -3071; if (coinState.Y > waterLevel) { return(false); } float prevHeight = coinState.Y - coinState.YSpeed; if (prevHeight < waterLevel) { return(false); } return(true); }
private void OnTriggerStay2D(Collider2D collision) { if (!judged && coinState == CoinState.Idle) { judged = true; if (collision.gameObject.name == "AcceptZone") { coinState = CoinState.Accepted; gameObject.SendMessageUpwards("CoinAccepted", Config); } else { coinState = CoinState.Rejected; gameObject.SendMessageUpwards("CoinRejected", Config); } } }
private void StateInfo(string data) { if (data.ToUpper().Contains("90051103A9")) { _invoke = CoinState.Ready; } else if (data.ToUpper().Contains("90051403AC")) { _invoke = CoinState.Unavailable; } else if (data.ToUpper().Contains("9006160103B0")) { _invoke = CoinState.Sensor_1_problem; } else if (data.ToUpper().Contains("9006160203B1")) { _invoke = CoinState.Sensor_2_problem; } else if (data.ToUpper().Contains("9006160303B2")) { _invoke = CoinState.Sensor_3_problem; } /*switch (data.ToUpper()) * { * case "90051103A9": * _invoke = CoinState.Ready.ToString(); * break; * case "90051403AC": * _invoke = CoinState.Unavailable.ToString(); * break; * case "9006160103B0": * _invoke = CoinState.Sensor_1_problem.ToString(); * break; * case "9006160203B1": * _invoke = CoinState.Sensor_2_problem.ToString(); * break; * case "9006160303B2": * _invoke = CoinState.Sensor_3_problem.ToString(); * break; * default: * _invoke = ""; * break; * }*/ }
/// <summary> /// Actions that sould happen when coin gets out of coinblock. /// </summary> public void OnFree() { // Store spawn location. _spawnStartY = Position.Y; // Set vertical velocity. velocity.Y = -_spawnSpeed; // Disable collisions. Collidable = false; // Set terminal velocity. TerminalVelocity = new Vector2(0, _spawnSpeed); // Set state to spawning. _state = CoinState.SPAWNING; // Pickup coin. OnPickUp(); }
void Update() { // coin. switch (coinState) { case CoinState.up: coinLerpPercent += Time.deltaTime * coinJumpSpeed; coin.localPosition = Vector3.Lerp(coinStartLocalPos, coinTargetLocalPos, coinLerpPercent); if (coinLerpPercent > 1f) { coinLerpPercent = 0f; coinState = CoinState.down; } break; case CoinState.down: coinLerpPercent += Time.deltaTime * coinJumpSpeed; coin.localPosition = Vector3.Slerp(coinTargetLocalPos, coinStartLocalPos, coinLerpPercent); if (coinLerpPercent > 1f) { coinState = CoinState.none; } break; default: break; } // cylinder. if (moveUp) { targetTime += Time.deltaTime * cylinderJumpSpeed; curTrans.localPosition = Vector3.Lerp(curStepPos, nextStepPos, targetTime); if (targetTime > 1f) { moveUp = false; targetTime = 0f; } } }
/// <summary> /// <para>Note : Enabled to devices.</para> /// <para>return status</para> /// <para>Command Device : 9005010399</para> /// </summary> public CoinState Open() { Byte[] data = { }; try { _serialPort.DataReceived -= _serialPortDataReceived; if (!_serialPort.IsOpen) { _serialPort.Open(); } if (_serialPort.IsOpen) { //Enable Device data = ConvertHexToByte("9005010399"); _serialPort.Write(data, 0, data.Length); Thread.Sleep(100); CallbackState(); _accept += CoinInfo; if (_invoke.Equals(CoinState.Ready)) { _serialPort.DataReceived += _serialPortDataReceived; } } } catch (Exception exception) { if (_serialPort.IsOpen) { _serialPort.Close(); } _invoke = CoinState.Unavailable; Console.WriteLine("exception : " + exception); } return(_invoke); }
private void Update() { if (delay <= 0f) { switch (state) { case CoinState.SpreadLinearly: case CoinState.SpreadRadial: { if (type == CoinType.Coin || type == CoinType.Hint) { coin.gameObject.SetActive(value: true); extraWord.gameObject.SetActive(value: false); } else if (type == CoinType.ExtraWord) { coin.gameObject.SetActive(value: false); extraWord.gameObject.SetActive(value: true); } float num3 = Mathf.Min(time / spreadTime); base.transform.position = Vector3.Lerp(positionStart, positionSpread, spreadCurve.Evaluate(num3)); base.transform.localScale = new Vector3(scale, scale, 1f); if (time <= 0f && !isSoundShow) { isSoundShow = true; ELSingleton <AudioManager> .Instance.PlaySfx(soundShow); } if (num3 >= 1f) { positionStart = base.transform.position; state = CoinState.Idle; delay = 0f; time = 0f; } break; } case CoinState.Idle: state = CoinState.Fly; delay = UnityEngine.Random.Range(idleTimeMin, idleTimeMax); time = 0f; break; case CoinState.Fly: { float num = Mathf.Min(time / flyTime); Vector3 position = Vector3.Lerp(positionStart, positionTarget, flyCurve.Evaluate(num)); position.y += flyCurveY.Evaluate(num) * flyY; base.transform.position = position; float num2 = scale + (1f - scale) * flyCurve.Evaluate(num); base.transform.localScale = new Vector3(num2, num2, 1f); if (!(num >= 1f)) { break; } if (type == CoinType.Coin) { if (ELSingleton <GameWindow> .Instance.isActiveAndEnabled) { ELSingleton <GameWindow> .Instance.shopButton.AddCoins((!isFullUpdate)? 1 : int.MaxValue); ELSingleton <GameWindow> .Instance.shopButton.Pop(aIsWithParticles : true); } if (ELSingleton <MenuWindow> .Instance.isActiveAndEnabled) { ELSingleton <MenuWindow> .Instance.shopButton.AddCoins((!isFullUpdate)? 1 : int.MaxValue); ELSingleton <MenuWindow> .Instance.shopButton.Pop(aIsWithParticles : true); } if (ELSingleton <PackWindow> .Instance.isActiveAndEnabled) { ELSingleton <PackWindow> .Instance.shopButton.AddCoins((!isFullUpdate)? 1 : int.MaxValue); ELSingleton <PackWindow> .Instance.shopButton.Pop(aIsWithParticles : true); } } else if (type == CoinType.ExtraWord && ELSingleton <GameWindow> .Instance.isActiveAndEnabled) { ELSingleton <GameWindow> .Instance.extraWordsButton.Coin(); ELSingleton <GameWindow> .Instance.extraWordsButton.CheckFull(); } UnityEngine.Object.Destroy(base.gameObject); if (!isSoundHit) { isSoundHit = true; ELSingleton <AudioManager> .Instance.PlaySfx(soundHit); } break; } } time += Time.deltaTime; } else { delay -= Time.deltaTime; } }
/// <summary> /// setting status /// </summary> /// <param name="state">status</param> public CoinEvent(CoinState state) { _state = state; }
protected void m000311(CoinState p0) { this.f000279 = p0; }
public int m000308() { switch (this.f000279) { case CoinState.Idle: { int num = this.f000011; if (this.f000011 <= 0) { break; } if (!this.f00000a) { num = this.m0000f1(); this.f000011 -= num; this.f00009b = num; this.f000279 = CoinState.SendCoin; this.f000063 = DateTime.Now; SenseKeyHelper.m00030d("BaseController ", string.Concat(new object[] { "Idle To SendCoin current:", this.f00009b, " coinOut:", this.f000011 })); return num; } return 0; } case CoinState.SendCoin: { TimeSpan span = (TimeSpan) (DateTime.Now - this.f000063); if (span.TotalMilliseconds > 300.0) { this.f000279 = CoinState.Idle; this.f000011 += this.f00009b; this.f000063 = DateTime.Now; SenseKeyHelper.m00030d("BaseController ", string.Concat(new object[] { "SendCoin To Idle TimeOut current:", this.f00009b, " coinOut:", this.f000011 })); } break; } case CoinState.ReceiveCoin: if (!this.f00000a) { TimeSpan span2 = (TimeSpan) (DateTime.Now - this.f000063); if (span2.TotalMilliseconds > this.f00009c) { SenseKeyHelper.m00030d("BaseController ", string.Concat(new object[] { "ReceiveCoin To Idle TimeOut current:", this.f00009b, " coinOut:", this.f000011 })); this.f000279 = CoinState.Idle; this.f000011 += this.f00009b; this.f00009b = 0; this.f000063 = DateTime.Now; if (!this.f00000a) { this.f000022++; if (this.f000022 > 5) { this.f00000a = true; } } } break; } return 0; case CoinState.WaitStop: if (!this.f00000a) { TimeSpan span3 = (TimeSpan) (DateTime.Now - this.f000063); if (span3.TotalMilliseconds > this.f00009c) { SenseKeyHelper.m00030d("BaseController ", string.Concat(new object[] { "WaitStop To Idle TimeOut current:", this.f00009b, " coinOut:", this.f000011 })); this.m000314(this.f00009b + this.f000011); this.f00009b = 0; this.f000011 = 0; this.f000279 = CoinState.Idle; this.f000277 = false; this.f0000a0 = false; this.f000063 = DateTime.Now; } break; } return 0; } return 0; }
public void m000031() { this.f000063 = DateTime.Now; if (this.f000279 == CoinState.SendCoin) { this.f000279 = CoinState.ReceiveCoin; } }
public static bool GetBelowWater(CoinState coinState) { int waterLevel = -3071; return(coinState.Y < waterLevel); }