private void ShowDescInfo(string unitType) { var info = UnitConfiguration.GetDefaultConfig(unitType); if (Need > 1) { Title.text = string.Format("{2} {0}{3} {1} {4}", SCMText.T(info.DisplayName + " "), Need, SCMText.T("解锁"), SCMText.T("将消耗"), SCMText.T("积分 ")); } else { Title.text = string.Format("{2} {0}{3} {1} {4}", SCMText.T(info.DisplayName + " "), Need, SCMText.T("解锁"), SCMText.T("将消耗"), SCMText.T("积分")); } AttackType01.text = info.CanAttackGround ? "<color=green>是</color>" : "<color=red>否</color>"; AttackType02.text = info.CanAttackAir ? "<color=green>是</color>" : "<color=red>否</color>"; Cost.text = info.Cost.ToString(); GasCost.text = info.GasCost.ToString(); AttackPower.text = info.CanAttackGround ? info.AttackPower[0].ToString() : ""; AttackPower.text += info.CanAttackAir && info.CanAttackGround ? ", " : ""; AttackPower.text += info.CanAttackAir ? info.AttackPower[1].ToString() : ""; ConstructingTime.text = info.ConstructingTime.ToString() + "s"; MaxHp.text = info.MaxHp.ToString(); Defence.text = info.Defence.ToString(); Desc.text = info.Desc; }
public static void GetUnitCfgsFromServer() { var conn = GameCore.Instance.ServerConnection; var buff = conn.Request2Srv("GetUnitCfgs", (data) => { UnitConfiguration.GetUnitCfgsFromServer(data); UserManager.SyncVariantsFromCfg(); if (IsFirstGetUnitCfgsFromServer) { if (OnBuildUnitCfgsFromServer != null) { OnBuildUnitCfgsFromServer(); IsFirstGetUnitCfgsFromServer = false; } } else if (OnRefreshUnitCfgsFromServer != null) { OnRefreshUnitCfgsFromServer(); } }); conn.End(buff); }
// 确认解锁 public void OnUnlockConfirmBtn() { if (!IsEnough) { AddTip("当前积分余额不足!", 28); return; } var meInfo = GameCore.Instance.MeInfo; meInfo.Units[Type] = true; meInfo.UUnlocks[Stage] = true; meInfo.IntegrationCost += Need; UserManager.SyncUnits2Server(); UserManager.SyncUUnlocks2Server(); UserManager.SyncIntegrationCost2Server(); AddTip(string.Format("解锁新单位{0}", UnitConfiguration.GetDefaultConfig(Type).DisplayName), 28); DUI.Refresh(); MMUI.ShowUserInfo(); ClearDescInfo(); Hide(); }
private void BuildItems(UserInfo info, Transform content) { var variants = info.Variants; foreach (var v in variants) { var cfg = UnitConfiguration.GetDefaultConfig(v.Key); var isUnlock = info.Units[v.Key]; if (v.Key == "Radar") { continue; } if (isUnlock && !cfg.IsBuilding && !cfg.NoCard) { var go = CreateItem(content); ShowItemInfo(go, v.Value); } } // 守卫 if (info.Units["FireGuard"]) { var vType = info.Variants["FireGuard"]; var go = CreateItem(content); ShowItemInfo(go, vType); } }
private void MergeUnitConfiguration(UnitConfiguration originalUnitConfiguration, UnitConfigurationRequest UnitConfiguration) { originalUnitConfiguration.Unit = this.UnitRepository.GetById(UnitConfiguration.UnitId); originalUnitConfiguration.Type = this.UnitConfigurationTypeRepository.GetById(UnitConfiguration.UnitConfigurationTypeId); originalUnitConfiguration.Value = UnitConfiguration.Value; originalUnitConfiguration.ConfigurationDate = DateTime.Now; }
public void SystemdTest() { var unit = new UnitConfiguration { Unit = new UnitSection { Description = "Accelerator" }, Service = new ServiceSection { User = "******", Restart = "always", RestartSec = 10, ExecStart = "/var/apps/Accelerator -port 80", WorkingDirectory = "/var/apps/accelerator/latest" }, Install = new InstallSection { WantedBy = "unknown" } }; Assert.Equal(@"[Unit] Description=Accelerator [Service] WorkingDirectory=/var/apps/accelerator/latest ExecStart=/var/apps/Accelerator -port 80 Restart=always RestartSec=10 User=www-user [Install] WantedBy=unknown", unit.ToString()); }
public void ResetColdown(string type) { var mainBuilder = UnitConfiguration.GetMainBuilder(type); var cfg = UnitConfiguration.GetDefaultConfig(type); if (cfg.IsBuilding) { return; } // 同一建筑的单位一起重置 cd foreach (var t in coldown.Keys.ToArray()) { var tcfg = UnitConfiguration.GetDefaultConfig(t); if (tcfg.IsBuilding) { continue; } if (UnitConfiguration.GetMainBuilder(t) == mainBuilder) { coldown[t] = coldown[t] >= 1 ? coldown[t] - 1 : 0; } } }
public void ConfigIsExtensible() { var u = new UnitConfiguration(); u.Extend <SomeDefinitions>(); u[Unit.Parse("Foo")].PhysicalUnit.IsEqualTo(U._TIME); }
public Unit(PlayerState owner, int id, UnitConfiguration configuration, Server server) { Owner = owner; Id = id; Faction = server.GetFaction(configuration.FactionId); Type = Faction.GetUnitType(configuration.UnitTypeId); Upgrades = new List<UnitUpgrade>(); _Points = Type.Points; UpgradeSlotsOccupied = new HashSet<int>(); foreach (var upgradeId in configuration.UpgradeIds) AddUpgrade(GetUpgrade(upgradeId)); Hex = null; Strength = GameConstants.FullUnitStrength; Entrenched = false; AttritionDuration = 0; UpdateStats(); ResetUnitForNewTurn(); // Only air units are automatically "deployed" since they don't need to be placed on the map Deployed = Stats.Flags.Contains(UnitFlag.Air); }
public Unit SrvAddBattltUnitAt(int player, string type, Vec2 pos) { if (!CheckPrerequisites(player, type)) { return(null); } var cfg = UnitConfiguration.GetDefaultConfig(type); var cost = cfg.Cost; var gasCost = cfg.GasCost; if (GetResource(player, "Money") < cost || GetResource(player, "Gas") < gasCost) { return(null); } AddResource(player, "Money", -cost); AddResource(player, "Gas", -gasCost); var u = AddNewUnit(null, type, pos, player); if (u != null) { Broadcast("AddBattleUnitAt", (buff) => { buff.Write(player); buff.Write(type); buff.Write(u.Pos); }); } return(u); }
// 开始建造建筑 public Unit ConstructBuilding(string genType, Vec2 pos, int player) { var cfg = UnitConfiguration.GetDefaultConfig(genType); var cost = cfg.Cost; var gasCost = cfg.GasCost; if (GetResource(player, "Money") < cost || GetResource(player, "Gas") < gasCost) { return(null); } else if (cfg.Prerequisites != null && GetAllUnitsByPlayer(player, (u) => u.BuildingCompleted && CheckPrerequisites(player, u.UnitType)).Length == 0) { return(null); } else if (!cfg.NoBody && !cfg.NoCard && !CheckSpareSpace(pos, cfg.SizeRadius)) { return(null); } AddResource(player, "Money", -cost); AddResource(player, "Gas", -gasCost); var building = AddNewUnit(null, genType, pos, player); if (building != null) { building.Hp = building.cfg.MaxHp * 0.1; // 从 10% 的血量开始建造 } return(building); }
public bool ReconstructBuilding(Unit u, string toNewType) { var player = u.Player; if (!CheckPrerequisites(player, toNewType)) { return(false); } var cfg = UnitConfiguration.GetDefaultConfig(toNewType); var cost = cfg.Cost; var gasCost = cfg.GasCost; if (GetResource(player, "Money") < cost || GetResource(player, "Gas") < gasCost) { return(false); } AddResource(player, "Money", -cost); AddResource(player, "Gas", -gasCost); // 改变建筑类型 u.BuildingCompleted = false; var oldType = u.UnitType; u.UnitType = toNewType; RefreshAI(u); OnUnitReconstruct(u, oldType); return(true); }
public void Extend(UnitConfiguration c) { c.Unit(Pascal) .IsPhysicalUnit(_MASS / (_TIME.Squared() * _LENGTH)) .EquivalentTo(Newton / Meter.Squared()) .ConvertValueBased(Bar, v => v * 1E-5m, v => v * 100000) .ConvertValueBased(Psi, v => 6.894E+3m, v => v * 145.04E-6m); }
// PVE001 基本建造教学 static IEnumerator PVE001GuideImpl(Room4Client r) { var g = UIManager.Instance.Guide; var cc = r.GetMyFirstUnitByType("CommanderCenter"); // 提示建造矿机 yield return(new TimeWaiter(1000)); g.ToClick(UIManager.Instance.World2UI(cc.Pos), "建造<u>矿机</u>可以加速资源生产"); yield return(new ConditionWaiter(() => r.GetMyFirstUnitByType("CCAcc") != null)); g.HideAllHints(); yield return(new ConditionWaiter(() => r.GetMyFirstUnitByType("CCAcc").BuildingCompleted)); UIManager.Instance.Tips.AddTip("矿机建造完成"); g.ToClick(UIManager.Instance.World2UI(cc.Pos), "试试补充更多<u>矿机</u>"); yield return(new ConditionWaiter(() => r.GetMyUnitsByType("CCAcc").Length >= 2)); g.HideAllHints(); // 提示建造兵营 yield return(new ConditionWaiter(() => r.GetMyResource("Money") >= UnitConfiguration.GetDefaultConfig("Barrack").Cost)); g.HideAllHints(); g.ToPress(UIManager.Instance.World2UI(cc.Pos + new Vec2(-80, -50)), "<op>长按</op>:建造<u>兵营</u>"); // 等待开始建造兵营 yield return(new ConditionWaiter(() => r.GetMyFirstUnitByType("Barrack") != null)); g.HideAllHints(); yield return(new ConditionWaiter(() => r.GetMyFirstUnitByType("Barrack").BuildingCompleted && r.GetMyResource("Money") >= UnitConfiguration.GetDefaultConfig("Soldier").Cost)); g.ToPress(UIManager.Instance.World2UI(cc.Pos) - new Vec2(75, 135), "选择:<u>枪兵</u>"); yield return(new TimeWaiter(3000)); g.ToPress(UIManager.Instance.World2UI(cc.Pos) + new Vec2(0, 200), "<op>单击</op>地面释放<u>枪兵</u>"); yield return(new TimeWaiter(1000)); yield return(new ConditionWaiter(() => r.GetMyFirstUnitByType("Soldier") != null)); g.HideAllHints(); // 提示使用雷达 yield return(new ConditionWaiter(() => r.GetMyResource("Money") >= UnitConfiguration.GetDefaultConfig("RadarSign").Cost)); g.ToDrag("从<u>基地</u>拖出释放<u>雷达</u>", UIManager.Instance.World2UI(cc.Pos), UIManager.Instance.World2UI(r.MapSize - cc.Pos)); yield return(new ConditionWaiter(() => r.GetMyFirstUnitByType("RadarSign") != null)); g.HideAllHints(); UIManager.Instance.Tips.AddTip("目标:建造更多部队,摧毁对方基地"); }
public void Extend(UnitConfiguration c) { c.Unit(Celsius) .IsPhysicalUnit(_TEMPERATURE) .ConvertValueBased(Kelvin, v => v + 273.15m, v => v - 273.15m); c.Unit(Fahrenheit) .IsPhysicalUnit(_TEMPERATURE) .ConvertValueBased(Celsius, v => (v - 32) * (5m / 9m), v => v * (9m / 5m) + 32); }
private void ShowOptionsInterface(UnitConfiguration unit) { if (unit.soldierClass == UnitConfiguration.SoldierClass.Enginner) { for (int i = 0; i < Options.Count; i++) { Options[i].gameObject.SetActive(true); } } }
public UnitConfiguration CreateUnitConfiguration(UnitConfigurationRequest UnitConfiguration) { var entityToInsert = new UnitConfiguration() { }; MergeUnitConfiguration(entityToInsert, UnitConfiguration); UnitConfigurationRepository.Insert(entityToInsert); return(entityToInsert); }
void OnGetUnitCfgs(Connection conn, IReadableBuffer data, IWriteableBuffer buff, Action end) { buff.Write(UnitConfiguration.AllUnitTypes); for (int i = 0; i < UnitConfiguration.AllUnitTypes.Length; i++) { UnitUtils.WriteUnitInfo(UnitConfiguration.GetDefaultConfig(UnitConfiguration.AllUnitTypes[i]), buff); } end(); }
public void Extend(UnitConfiguration c) { c.Unit(Nanosecond) .IsPhysicalUnit(_TIME) .StartScale() .To(Microsecond, 1000) .To(Millisecond, 1000) .To(Second, 1000) .To(Minute, 60) .To(Hour, 60) .To(Day, 24); }
void OnAddBattleUnitAtMsg(IReadableBuffer data) { var p = data.ReadInt(); var t = data.ReadString(); var pt = data.ReadVec2(); var cfg = UnitConfiguration.GetDefaultConfig(t); AddResource(p, "Money", -cfg.Cost); AddResource(p, "Gas", -cfg.GasCost); AddNewUnit(null, t, pt, p); }
private void OnStartConstructingBattleUnit(Unit u, string genType) { var m = UC.GetModel(u.UID); m.AniPlayer.ConstructingUnit(); var vcfg = UnitConfiguration.GetDefaultConfig(genType); var constructingTime = vcfg.ConstructingTime; IndLayer.CreateProgressbar(u, constructingTime).FollowTransformRoot = m.transform; }
public void OnRightClick(Vec2 pt, Vector3 wp) { if (UUIs.CurUnitType == null) { return; } var cfg = UnitConfiguration.GetDefaultConfig(UUIs.CurUnitType); // 右键全开 if (!UUIs.IsOpenAllUUI) { UUIs.IsOpenAllUUI = true; } var conn = GameCore.Instance.ServerConnection; if (UUIs.CurUnitType == "SoldierCarrier" || UUIs.CurUnitType == "RobotCarrier") { var buff = conn.Send2Srv("AddSoldierCarrierUnit4TestAnyway"); var p = wp.z >= room.MapSize.y / 2 ? 2 : 1; buff.Write(p); buff.Write(UUIs.CurUnitType); buff.Write((int)wp.x); buff.Write((int)wp.z); conn.End(buff); } else if (UnitConfiguration.GetDefaultConfig(UUIs.CurUnitType).IsBuilding) { var buff = conn.Send2Srv("AddBuildingUnit4TestAnyway"); var p = wp.z >= room.MapSize.y / 2 ? 2 : 1; buff.Write(p); buff.Write(UUIs.CurUnitType); buff.Write((int)wp.x); buff.Write((int)wp.z); conn.End(buff); } else { UUIs.ResetColdown(UUIs.CurUnitType); var buff = conn.Send2Srv("AddBattleUnit4TestAnyway"); var p = wp.z >= room.MapSize.y / 2 ? 2 : 1; buff.Write(p); buff.Write(UUIs.CurUnitType); buff.Write((int)wp.x); buff.Write((int)wp.z); conn.End(buff); } }
void ShowSels(Vec2 pt) { var ui = UIManager.Instance.ShowTopUI("InBattleUI/SelectUnitUI", true) as SelectUnitUI; ui.Pos = pt; ui.Choices = u.UnitType == "Base" ? (new string[] { "CrystalMachine" }).Concat(u.cfg.ReconstructTo).ToArray() : new string[] { "CrystalMachine" }; ui.ChoicesName = ui.Choices.ToArray((i, t, skipAct) => { var ccfg = t == "CrystalMachine" ? UnitConfiguration.GetDefaultConfig("CrystalMachine") : UnitConfiguration.GetDefaultConfig(t); return(ccfg.DisplayName); }); ui.Refresh(); ui.OnChoiceSel = (toType) => { var unitType = toType == "CrystalMachine" ? "CrystalMachine" : toType; if (!U.BuildingCompleted || !MG.CheckPrerequisitesAndTip(unitType) || !MG.CheckResourceRequirementAndTip(unitType)) { return; } if (toType == "CrystalMachine") { if (U.Room.FindNextCrystalMachinePos(U) == Vec2.Zero) { AddTip("没有多余的矿机位置"); return; } var conn = GameCore.Instance.ServerConnection; var buff = conn.Send2Srv("ConstructCrystalMachine"); buff.Write(U.UID); conn.End(buff); } else // 升级基地 { var conn = GameCore.Instance.ServerConnection; var buff = conn.Send2Srv("ReconstructBuilding"); buff.Write(U.UID); buff.Write(toType); conn.End(buff); } }; }
public void CancelSelUnit() { var vcfg = UnitConfiguration.GetDefaultConfig(CurUnitType); curBtn.transform.Find(vcfg.IsBuilding ? "BuildingCheck" : "Check").gameObject.SetActive(false); curBtn = null; CurUnitType = null; if (null != onHideUnitPlacedArea) { onHideUnitPlacedArea(); } }
// 单击地面放兵 public void OnClickMap(Vec2 pt, Vec2 cp) { var cfg = UnitConfiguration.GetDefaultConfig(UUIs.CurUnitType); if (!UUIs.CheckColdown(UUIs.CurUnitType)) { AddTip("部队尚未就绪"); return; } if (!CheckPrerequisitesAndTip(UUIs.CurUnitType) || !CheckResourceRequirementAndTip(UUIs.CurUnitType)) { return; } UUIs.ResetColdown(UUIs.CurUnitType); var conn = GameCore.Instance.ServerConnection; if (UUIs.CurUnitType == "SoldierCarrier" || UUIs.CurUnitType == "RobotCarrier") { var buff = conn.Send2Srv("DropSoldierFromCarrier"); buff.Write(UUIs.CurUnitType); buff.Write((int)cp.x); buff.Write((int)cp.y); conn.End(buff); } else if (UnitConfiguration.GetDefaultConfig(UUIs.CurUnitType).IsBuilding) { if (!room.CheckSpareSpace(cp, cfg.SizeRadius) && !room.FindNearestSpareSpace(cp, cfg.SizeRadius, 1, out cp)) { UIManager.Instance.Tips.AddTip("没有足够的建造空间"); return; } var buff = conn.Send2Srv("ConstructBuilding"); buff.Write(UUIs.CurUnitType); buff.Write(cp); conn.End(buff); } else { var buff = conn.Send2Srv("AddBattleUnitAt"); buff.Write(UUIs.CurUnitType); buff.Write(cp); conn.End(buff); } }
// 构造所有的UUI private void BuildAllUUIs() { var uts = UnitConfiguration.AllUnitTypes.Select((ut) => { var meInfo = GameCore.Instance.MeInfo; var orgType = meInfo.Variants.ContainsKey(ut) ? ut : UnitConfiguration.GetDefaultConfig(ut).OriginalType; bool isUnlock = meInfo.Units[ut]; bool isVarType = meInfo.Variants[orgType] == ut; bool isNoCard = UnitConfiguration.GetDefaultConfig(ut).NoCard; return(isUnlock && isVarType && !isNoCard); }); for (var i = 0; i < uts.Count; i++) { var ut = uts [i]; var cfg = UnitConfiguration.GetDefaultConfig(ut); Transform parent = null; if (cfg.IsThirdType) { parent = ThirdContent; } else if (cfg.IsBuilding) { parent = BuildingContent; } else { parent = ArmyContent; } GameObject uui = CreateUUI(parent); SetUUIInfo(uui, ut); var btn = uui.GetComponent <UnitCardUI>(); btn.OnPtDown += () => OnSelUnit(ut); btn.OnBeginDrag += OnBeginDrag; btn.OnDrag += OnDrag; btn.OnEndDrag += OnEndDrag; btns[ut] = btn; uui.SetActive(false); } }
// 设置页签默认选定按钮 private void SetDefaultSelBtn(string ut) { if (!(null == curBtn || !curBtn.gameObject.activeSelf)) { return; } var cfg = UnitConfiguration.GetDefaultConfig(ut); if ((cfg.IsBuilding && !IsShowArmyList) || (!cfg.IsBuilding && IsShowArmyList)) { CurUnitType = ut; curBtn = btns[ut]; btns[ut].OnPtDown(); } }
// 设置UUI信息 private void SetUUIInfo(GameObject uui, string type) { var cfg = UnitConfiguration.GetDefaultConfig(type); Sprite img = Resources.Load <Sprite>(@"Texture\UnitCard\" + type); if (null != img) { uui.transform.Find("Name").gameObject.SetActive(true); uui.transform.Find("Icon").gameObject.SetActive(true); uui.transform.Find("Icon").GetComponent <Image>().sprite = img; uui.transform.Find("Icon").GetComponent <Image>().SetNativeSize(); } else { uui.transform.Find("Name").gameObject.SetActive(true); uui.transform.Find("Icon").gameObject.SetActive(false); } var okImg = uui.transform.Find("OK").GetComponent <Image>(); uui.transform.Find("Name").GetComponent <Text>().text = cfg.DisplayName; uui.transform.Find("Cost").GetComponent <Text>().text = cfg.Cost.ToString(); uui.transform.Find("GasCost").GetComponent <Text>().text = cfg.GasCost.ToString(); uui.transform.Find("Num").GetComponent <Text>().text = "0"; uui.transform.Find("OK").gameObject.SetActive(!cfg.IsBuilding); uui.transform.Find("BuildingOK").gameObject.SetActive(cfg.IsBuilding); if (!cfg.IsBuilding) { var mainBuilder = UnitConfiguration.GetMainBuilder(type); if (mainBuilder == "Barrack") { okImg.sprite = Resources.Load <Sprite>(@"Texture\CombatUI\zhandou_27"); } else if (mainBuilder == "Factory") { okImg.sprite = Resources.Load <Sprite>(@"Texture\CombatUI\zhandou_28"); } else if (mainBuilder == "Airport") { okImg.sprite = Resources.Load <Sprite>(@"Texture\CombatUI\zhandou_29"); } } }
// 空投伞兵到指定位置,路径随机 public bool CreateSoldierCarrier(string type, int player, Vec2 dropPt) { var cfg = UnitConfiguration.GetDefaultConfig(type); var cost = cfg.Cost; var gasCost = cfg.GasCost; if (GetResource(player, "Money") < cost || GetResource(player, "Gas") < gasCost) { return(false); } else if (cfg.Prerequisites != null && GetAllUnitsByPlayer(player, (u) => u.BuildingCompleted && CheckPrerequisites(player, u.UnitType)).Length == 0) { return(false); } var aps = GetUnitsByType(UnitConfiguration.GetMainBuilder(type), player); if (aps.Length == 0) { return(false); } AddResource(player, "Money", -cost); AddResource(player, "Gas", -gasCost); // 随机从一个机场出发 var fromPt = aps[RandomNext(0, aps.Length)].Pos; var dir = dropPt - fromPt; var mr = MapSize.x > MapSize.y ? MapSize.x : MapSize.y; dir = dir.Length > 1 ? dir / dir.Length : Vec2.Zero; var toPt = dropPt + dir * mr; var stc = AddNewUnit(null, type, fromPt, player); var pType = cfg.Pets[0]; var pCnt = int.Parse(cfg.Pets[1]); FC.For(pCnt, (i) => { stc.UnitCosntructingWaitingList.Add(pType); }); stc.Dir = dir.Dir(); stc.MovePath.Add(dropPt); stc.MovePath.Add(toPt); return(true); }
// 刷新所有按钮状态 private void RefreshBtns() { if (MG.Room == null) { return; } needRefreshBtns = false; foreach (var ut in btns.Keys) { var cfg = UnitConfiguration.GetDefaultConfig(ut); // 前置条件 var ok = cfg.Prerequisites == null || MG.Room.CheckPrerequisites(GameCore.Instance.MePlayer, ut); if (IsOpenAllUUI) { ok = true; } var btn = btns[ut]; btn.gameObject.SetActive(ok); btn.transform.Find(cfg.IsBuilding ? "BuildingCheck" : "Check").gameObject.SetActive(btn == curBtn); var coreBuilder = UnitConfiguration.GetMainBuilder(ut); if (coreBuilder != null) { builder[ut] = MG.Room.GetAllMyUnits((u) => (u.UnitType == coreBuilder || u.cfg.ReconstructFrom == coreBuilder) && u.BuildingCompleted).Length; builderAccs[ut] = MG.Room.GetMyUnitsByType("Accessory", (u) => u.Owner != null && u.BuildingCompleted && u.Owner.BuildingCompleted && (u.Owner.UnitType == coreBuilder || u.Owner.cfg.ReconstructFrom == coreBuilder)).Length; } else { builder[ut] = 1; builderAccs[ut] = 0; } if (ok) { // 当前默认选定第一个 SetDefaultSelBtn(ut); } } }
public void Extend(UnitConfiguration c) { c.Unit(Milligram) .IsPhysicalUnit(_MASS) .StartScale() .To(Carat, 200) .To(Gram, 5) .To(Kilogram, 1000) .To(Ton, 1000); c.Unit(Ounce) .IsPhysicalUnit((_MASS)) .StartScale() .To(Pound, 16); c.Unit(Gram).ConvertValueBased(Ounce, v => v * 0.0352739619m, v => v * 28.3495231m); c.Unit(Pound).ConvertValueBased(Kilogram, v => v * 0.45359237m, v => v * 2.20462262m); }
public void Extend(UnitConfiguration c) { c.Unit(Joule) .IsPhysicalUnit((_MASS * _LENGTH.Squared()) / _TIME.Squared()) .EquivalentTo(Kilogram * Meter.Squared() / Second.Squared()) .ConvertibleTo(Kilogram, m => m / PhysicalConstants.EnergyMassFactor, m => m * PhysicalConstants.EnergyMassFactor) .ConvertibleTo(ElectronVolt, j => 6.242e+18m * j, e => 1.6022e-19m * e) .StartScale() .To(KiloJoule, 1000) .To(MegaJoule, 1000) .To(GigaJoule, 1000) .To(TeraJoule, 1000); c.Unit(Newton) .IsPhysicalUnit(_MASS * _LENGTH / _TIME.Squared()) .EquivalentTo(Kilogram * Meter / Second.Squared()); }
public void Extend(UnitConfiguration c) { c.Unit(MicroShipLength) .IsPhysicalUnit(_LENGTH) .StartScale() .To(ShipLength, 1000); c.Unit(Heartbeat) .IsPhysicalUnit(_TIME) .StartScale() .To(Michron, 50) .To(QMichron, 50) .To(GreatMichron, 50) .To(Period, 250); c.Unit(ShipMass) .IsPhysicalUnit(_MASS) .ConvertibleTo(SunMass, m => m / 10E+25m, m => m * 10E+25m); c[ShipLength].ConvertValueBased(Kilometer, v => v * 2.4640476m, v => v / 2.4640476m); c[Heartbeat].ConvertValueBased(Second, v => v * 0.821917808219178m, v => v / 0.821917808219178m); c[ShipMass].ConvertValueBased(Kilogram, v => v * 55402.15m, v => v / 55402.15m); }
public void Extend(UnitConfiguration c) { c.Unit(Nanometer) .IsPhysicalUnit(_LENGTH) .StartScale() .To(Micrometer, 1000) .To(Millimeter, 1000) .To(Centimeter, 10) .To(Meter, 100) .To(Kilometer, 1000); c.Unit(Microinch) .IsPhysicalUnit(_LENGTH) .StartScale() .To(Inch, 1000000) .To(Foot, 12) .To(Yard, 3) .To(Mile, 1760); c.Unit(Inch).ConvertValueBased(Centimeter, v => v * 2.54m, v => 0.393700787m * v); c.Unit(Mile).ConvertValueBased(Kilometer, v => v * 1.609344m, v => 0.621371192m * v); }
public void ConfigIsExtensible() { var u = new UnitConfiguration(); u.Extend<SomeDefinitions>(); u[Unit.Parse("Foo")].PhysicalUnit.IsEqualTo(U._TIME); }
public void Extend(UnitConfiguration c) { c.Unit(Meter ^ 2) .ConvertValueBased(Hectare, v => v * 0.0001m, v => v * 10000); }
public void Extend(UnitConfiguration c) { c.Unit(Unit.Parse("Foo")).IsPhysicalUnit(U._TIME); }