public void DivideMetresMetres() { var up1 = new UnitParts(_settings.Metres, new UnitAndPower(_settings.Metres, 1)); var up2 = new UnitParts(_settings.Metres, new UnitAndPower(_settings.Metres, 1)); var prod = up1 / up2; Assert.AreEqual(0, prod.Count); }
public void DivideMetresMetres() { var up1 = new UnitParts(new[] { UnitAndPower.Create(this.settings.Metres, 1) }); var up2 = new UnitParts(new[] { UnitAndPower.Create(this.settings.Metres, 1) }); var prod = up1 / up2; Assert.AreEqual(0, prod.Count); }
public void MultiplyMetresMetres() { var up1 = new UnitParts(new[] { UnitAndPower.Create(this.settings.Metres, 1) }); var up2 = new UnitParts(new[] { UnitAndPower.Create(this.settings.Metres, 1) }); var prod = up1 * up2; Assert.AreEqual(1, prod.Count); Assert.AreEqual(2, prod.Single(x => x.Unit == this.settings.Metres).Power); }
public void MultiplyMetresMetres() { var up1 = new UnitParts(_settings.Metres, new UnitAndPower(_settings.Metres, 1)); var up2 = new UnitParts(_settings.Metres, new UnitAndPower(_settings.Metres, 1)); var prod = up1 * up2; Assert.AreEqual(1, prod.Count); Assert.AreEqual(2, prod.Single(x => x.Unit == _settings.Metres).Power); }
public void DivideMetresSeconds() { var up1 = new UnitParts(new[] { UnitAndPower.Create(this.settings.Metres, 1) }); var up2 = new UnitParts(new[] { UnitAndPower.Create(this.settings.Seconds, 1) }); var prod = up1 / up2; Assert.AreEqual(2, prod.Count); Assert.AreEqual(1, prod.Single(x => x.Unit == this.settings.Metres).Power); Assert.AreEqual(-1, prod.Single(x => x.Unit == this.settings.Seconds).Power); }
public void DivideMetresSeconds() { var up1 = new UnitParts(_settings.Metres, new UnitAndPower(_settings.Metres, 1)); var up2 = new UnitParts(_settings.Seconds, new UnitAndPower(_settings.Seconds, 1)); var prod = up1 / up2; Assert.AreEqual(2, prod.Count); Assert.AreEqual(1, prod.Single(x => x.Unit == _settings.Metres).Power); Assert.AreEqual(-1, prod.Single(x => x.Unit == _settings.Seconds).Power); }
public void FlattenFarads() { var farads = new UnitParts(new[] { UnitAndPower.Create(this.settings.Coulombs, 1), UnitAndPower.Create(this.settings.Volts, -1) }); var ups = farads.BaseParts.ToArray(); Assert.AreEqual(4, ups.Length); Assert.AreEqual(-1, ups.Single(x => x.Unit == this.settings.Kilograms).Power); Assert.AreEqual(-2, ups.Single(x => x.Unit == this.settings.Metres).Power); Assert.AreEqual(4, ups.Single(x => x.Unit == this.settings.Seconds).Power); Assert.AreEqual(2, ups.Single(x => x.Unit == this.settings.Amperes).Power); }
public void FlattenFarads() { var farads = new UnitParts(null, new UnitAndPower(_settings.Coloumbs, 1), new UnitAndPower(_settings.Volts, -1)); var ups = farads.Flattened.ToArray(); Assert.AreEqual(4, ups.Length); Assert.AreEqual(-1, ups.Single(x => x.Unit == _settings.Kilograms).Power); Assert.AreEqual(-2, ups.Single(x => x.Unit == _settings.Metres).Power); Assert.AreEqual(4, ups.Single(x => x.Unit == _settings.Seconds).Power); Assert.AreEqual(2, ups.Single(x => x.Unit == _settings.Amperes).Power); }
public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value) { if (value == null) { return(null); } var s = (string)value; if (string.IsNullOrWhiteSpace(s)) { return(null); } var matches = Parse(s); var parts = new UnitParts(null); int sign = 1; bool expectsSymbol = true; foreach (Match match in matches) { if (expectsSymbol) { var symbol = match.Groups["Symbol"].Value; if (symbol == "1") { expectsSymbol = false; continue; } var unit = Settings.Instance.AllUnits.Single(x => x.Symbol == symbol); int p = ParsePower(match.Groups["Power"].Value); parts.Add(new UnitAndPower(unit, sign * p)); expectsSymbol = false; } else { var op = match.Groups["Op"].Value; if (op == "/") { if (sign < 0) { throw new FormatException("/ can't appear twice found at position:" + match.Index); } else { sign = -1; } } expectsSymbol = true; } } return(parts); }
private void OnTriggerEnter(Collider other) { UnitParts hitParts = other.GetComponent <UnitParts>(); if (hitParts != null) { if (hitParts.Owner != owner) { int power = Power + Random.Range(-PowerRange, PowerRange + 1); PartsLeg partsLeg = other.GetComponent <PartsLeg>(); if (partsLeg) { GameObject hit = Instantiate(damage); DamageText damageText = hit.GetComponent <DamageText>(); damageText.ViewDamege(power / 3, transform.position); EffectManager.PlayEffect(EffectID.Hit, blade.transform.position); hitParts.Damage(power / 3); } else { GameObject hit = Instantiate(damage); DamageText damageText = hit.GetComponent <DamageText>(); damageText.ViewDamege(power, transform.position); EffectManager.PlayEffect(EffectID.Hit, blade.transform.position); hitParts.Damage(power); } SoundManager.Instance.PlaySE(SEType.Hit); } } else { Armor armor = other.GetComponent <Armor>(); if (armor) { EffectManager.PlayEffect(EffectID.Hit, blade.transform.position); armor.ArmorDamage(); GameObject hit = Instantiate(damage); DamageText damageText = hit.GetComponent <DamageText>(); damageText.ViewDamege(1, transform.position); } else { Obstacle obstacle = other.GetComponent <Obstacle>(); if (obstacle) { EffectManager.PlayEffect(EffectID.Hit, blade.transform.position); obstacle.ObstacleHit(Power); } } } }
protected void OnTriggerEnter(Collider other) { UnitParts hitParts = other.GetComponent <UnitParts>(); if (hitParts != null) { if (Power > 0) { GameObject hit = Instantiate(damage); DamageText damageText = hit.GetComponent <DamageText>(); damageText.ViewDamege(Power, transform.position); EffectManager.PlayEffect(EffectID.Hit, transform.position); hitParts.Damage(Power); Power -= hitParts.Defense; } } }
public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value) { var text = value as string; if (string.IsNullOrWhiteSpace(text)) { return(null); } var settings = Settings.Instance; var pos = 0; _ = WhiteSpaceReader.TryRead(text, ref pos); var indexOf = text.IndexOf("1/", pos, StringComparison.Ordinal); if (indexOf >= 0) { pos = indexOf + 2; } if (SymbolAndPowerReader.TryRead(text, ref pos, out IReadOnlyList <SymbolAndPower> result)) { if (WhiteSpaceReader.IsRestWhiteSpace(text, pos)) { var unitAndPowers = result.Select(sap => UnitAndPower.Create(settings.AllUnits.Single(x => x.Symbol == sap.Symbol), sap.Power)) .ToList(); var unitParts = new UnitParts(unitAndPowers); if (indexOf < 0) { return(unitParts); } return(unitParts.Inverse()); } } return(text); }