void Start() { eventer = GetComponent <PlayerJoinEventer>(); eventer.OnPlayerJoined += OnPlayerJoined; eventer.OnAllPlayersReady += OnAllPlayersReady; splitHelper = new SplitHelper(); }
protected override void Perform(ActionEvent evt, Player player, MapElementInfo info, NVector pos, ActionHolder holder) { string[] keys; if (holder.data.ContainsKey("upgrade")) { keys = SplitHelper.Separator(holder.data["upgrade"]); } else { keys = info.IsBuilding()?L.b.buildings.Keys().ToArray():L.b.units.Keys().ToArray(); } //load buildings WindowBuilderSplit b = WindowBuilderSplit.Create(holder.DataAction().Desc(), holder.DataAction().Name()); { foreach (string key in keys) { BaseDataBuildingUnit build = info.IsBuilding()?(BaseDataBuildingUnit)L.b.buildings[key]:L.b.units[key]; if (build.req.Check(player, info, pos, true)) { BuildUpgradeSplitElement be = new BuildUpgradeSplitElement(build, info, pos, b); be.disabled = build.req.Desc(player, info, pos); b.Add(be); //win.AddBuilding(build.id); } } } b.Finish(); }
public override void ShowDetail(PanelBuilder panel) { panel.AddHeaderLabel("Receipts"); int i = 0; bool found = false; while (_holder.data.ContainsKey("craft" + i)) { found = true; var d = SplitHelper.SplitInt(_holder.data["craft" + i]); Craft c = L.b.crafts[d.key]; int id = i; Button b = panel.AddImageTextButton((d.value == -1?"Endless ":d.value + "x ") + c.Name(), c.Icon, () => { Remove(id); }); i++; } if (!found) { panel.AddLabel("No active receipt found. You can add some from the left menu."); } }
public override ActionHolder Create(string setting) { ActionHolder conf = base.Create(setting); //add res string[] type = SplitHelper.Separator(setting); if (type[0] == "once") { conf.trigger = ActionEvent.FinishConstruct; } else if (type[0] == "turn") { conf.trigger = ActionEvent.NextRound; } for (int i = 1; i < type.Length; i++) { var d = SplitHelper.SplitInt(type[i]); if (d.value < 0) { conf.req.Add("res", $">{d.value*-1}:{d.key}"); } conf.data.Add("res-" + d.key, d.value.ToString()); } return(conf); }
protected void ActionParse(T ele, string data) { var a = SplitHelper.Delimiter(data); lastAction = LClass.s.GetNewAction(a.key).Create(a.value); ele.action.Add(lastAction); }
protected bool CheckAllowed(Player player, MapElementInfo info, NVector pos, ActionHolder holder) { if (!holder.data.ContainsKey("allowed")) { return(false); } //load buildings WindowBuilderSplit b = WindowBuilderSplit.Create(holder.DataAction().Desc(), holder.DataAction().Name()); foreach (string key in SplitHelper.Separator(holder.data["allowed"])) { AddObject(player, info, pos, key, b); } //has some? if (b.Count() >= 1) { b.Finish(); return(true); } b.CloseWindow(); info.UI().ShowPanelMessageError(S.T("tabNo", holder.DataAction().Desc())); return(true); }
public void UpdateCell(SplitItem split) { AmountLabel.Text = string.Format("£{0:N}", split.Amount); NameLabel.Text = split.Name; LocationLabel.Text = split.Location; PersonImage.Image = SplitHelper.GenerateImage(PersonImage.Frame.Width, PersonImage.Frame.Height); }
public (int min, int max) ResRange(string res) { if (!this.res.ContainsKey(res)) { return(0, 0); } string[] c = SplitHelper.Separator(this.res[res])[0].Split('-'); return(ConvertHelper.Int(c[0]), ConvertHelper.Int(c[1])); }
public override bool Check(Player player, string sett) { if (!LSys.tem.options["updateCheck"].Bool()) { return(false); } string[] s = SplitHelper.Separator(PlayerPrefs.GetString("update.txt", "false")); return(!(s[0].Equals("false"))); }
private void CreateCraft(Craft ele, string data) { var d = SplitHelper.SplitInt(data); if (d.value < 0) { ele.req.Add("res", $">{d.value*-1}:{d.key}"); } ele.res.Add(d.key, d.value); }
public void SetValue(int goal, bool presetFormat = false) { int left, right; while (!SplitHelper.SplitValue(goal, Operator.ToString().ToCharArray()[0], out left, out right, presetFormat)) { ; } Left.SetValue(left, presetFormat); Right.SetValue(right, presetFormat); }
protected override void SetTile(TileMapConfig16 tile, NVector pos) { if (S.ActPlayer().overlay.Get("res", pos) == 0) { return; } int align = 0; var rgk = GameMgmt.Get().data.map.levels[pos.level].ResGenKey(pos.x, pos.y); if (rgk == null) { return; } foreach (string key in rgk) { int act = GameMgmt.Get().data.map.ResGen(pos, key); var res = L.b.res[key]; //nothing to display? if (res.overlay.Count == 0 || act == 0) { continue; } string found = null; //find id foreach (var o in res.overlay) { var sp = SplitHelper.DelimiterInt(o); if (sp.value > act) { break; } found = sp.key; } //show it Tile t = GameMgmt.Get().newMap.tools.GetTile(found); tile.GetComponent <Tilemap>().SetTile(new Vector3Int(pos.x * 2 + (align % 2), pos.y * 2 + (align / 2), 0), t); align++; //full? if (align >= 4) { return; } } }
public void UpdateCell(SplitItem split) { //TextLabel.Text = string.Format("£{0:N}", split.Amount); if (Amount != null) { Amount.Text = string.Format("£{0:N}", (split.Amount * split.SplitBetween)); } TextLabel.Text = split.Name; DetailTextLabel.Text = string.Format("Your share: £{0:N}", split.Amount); ImageView.Image = SplitHelper.GenerateImage(32, 32); }
public override bool Check(Player player, MapElementInfo onMap, string sett, NVector pos) { string[] terr = SplitHelper.Separator(sett); foreach (string terrain in terr) { if (GameMgmt.Get().newMap.Terrain(pos).category == terrain) { return(true); } } return(false); }
/// <summary> /// Build the reqs /// </summary> /// <param name="reqs"></param> /// <returns></returns> public void Add(params string[] reqs) { foreach (string req in reqs) { if (String.IsNullOrEmpty(req)) { continue; } var s = SplitHelper.Delimiter(req); Add(s.key, s.value); } }
public override void ViewDidLoad() { base.ViewDidLoad(); splitHistory = StoredSplits; var tempSplits = SplitHelper.GenerateTempSplits(); splitHistory.Source = new SplitHistorySource(this, tempSplits); //splitHistory.BackgroundColor = UIColor.Blue; }
protected override void Perform(ActionEvent evt, Player player, MapElementInfo info, NVector pos, ActionHolder holder) { DataTerrain terrain = GameMgmt.Get().newMap.Terrain(pos); //which is possible? List <(string key, string value)> opts = new List <(string key, string value)>(); int i = 0; while (holder.data.ContainsKey(i.ToString())) { var d = SplitHelper.Split(holder.data[i.ToString()]); if (terrain.id == d.key) { opts.Add(d); } i++; } //found it? if (opts.Count == 0) { OnMapUI.Get().unitUI.ShowPanelMessageError($"No terraform possible for {terrain.Name()}"); return; } Vector3Int v3 = new Vector3Int(pos.x, pos.y, 1); //TODO find right pos if (opts.Count == 1) { GameMgmt.Get().newMap.levels[pos.level] .SetTile(v3, opts[0].value == "remove" ? null : L.b.terrains[opts[0].value]); return; } //multiple? WindowPanelBuilder wpb = WindowPanelBuilder.Create($"Terraform {terrain.Name()}"); foreach (var opt in opts) { wpb.panel.AddImageTextButton(CreateTitle(opt), terrain.Sprite(), () => { GameMgmt.Get().newMap.levels[pos.level] .SetTile(v3, opt.value == "remove" ? null : L.b.terrains[opt.value]); wpb.Close(); }); } wpb.AddClose(); wpb.Finish(); }
protected override void Perform(ActionEvent evt, Player player, MapElementInfo info, NVector pos, ActionHolder holder) { var i = SplitHelper.Split(holder.data["improvement"]); //set improvement L.b.improvements.Set(i.key, pos); //kill? if (i.value == "kill") { info.Kill(); } }
public override ActionHolder Create(string setting) { ActionHolder conf = base.Create(setting); conf.trigger = ActionEvent.Quest; foreach (var ele in SplitHelper.Separator(setting)) { var s = SplitHelper.Split(ele); conf.data[s.key] = s.value; } return(conf); }
public override void BuildPanel(ActionDisplaySettings sett) { base.BuildPanel(sett); //list it int i = 0; while (sett.holder.data.ContainsKey(i.ToString())) { var d = SplitHelper.Split(sett.holder.data[i.ToString()]); DataTerrain terr = L.b.terrains[d.key]; sett.panel.AddImageLabel(CreateTitle(d), terr.Icon); i++; } }
public int ResChance(string res) { if (!this.res.ContainsKey(res)) { return(0); } string[] s = SplitHelper.Separator(this.res[res]); if (s.Length >= 2) { return((int)ConvertHelper.Proc(s[1])); } return(0); }
protected override void Run(Player player) { string[] s = SplitHelper.Separator(PlayerPrefs.GetString("update.txt", "false")); if (s[0].Equals("false")) { return; } WindowPanelBuilder w = WindowPanelBuilder.Create($"Update to {s[1]}"); w.panel.AddLabel(s[2]); w.panel.AddButton($"Download {s[1]}", (() => Application.OpenURL("http://9nations.de/download"))); w.AddClose(); w.Finish(); }
public override ActionHolder Create(string setting) { ActionHolder conf = base.Create(setting); conf.trigger = ActionEvent.Direct; var split = SplitHelper.Separator(setting); conf.data["type"] = split[0]; if (split.Length >= 2) { conf.data["player"] = split[1]; } return(conf); }
public void SetOrientation(SplitHelper.Orientation orientation) { RectTransform healthTransform = healthSlider.GetComponent<RectTransform>(); RectTransform boostTransform = boostSlider.GetComponent<RectTransform>(); RectTransform scoreTransform = scorePanel.GetComponent<RectTransform>(); Vector2 anchor = Vector2.zero; Vector2 position = Vector2.zero; switch (orientation) { case SplitHelper.Orientation.CENTER: case SplitHelper.Orientation.RIGHT: case SplitHelper.Orientation.TOP_RIGHT: anchor = new Vector2(1.0f, 0.0f); position = new Vector2(-margin, margin); break; case SplitHelper.Orientation.LEFT: case SplitHelper.Orientation.TOP_LEFT: case SplitHelper.Orientation.TOP: anchor = new Vector2(0.0f, 0.0f); position = new Vector2(margin, margin); break; case SplitHelper.Orientation.BOT_RIGHT: anchor = new Vector2(1.0f, 1.0f); position = new Vector2(-margin, -margin); break; case SplitHelper.Orientation.BOT_LEFT: case SplitHelper.Orientation.BOTTOM: anchor = new Vector2(0.0f, 1.0f); position = new Vector2(margin, -margin); break; } healthTransform.anchorMin = anchor; healthTransform.anchorMax = anchor; healthTransform.pivot = anchor; healthTransform.anchoredPosition = position; boostTransform.anchorMin = anchor; boostTransform.anchorMax = anchor; boostTransform.pivot = anchor; boostTransform.anchoredPosition = position + new Vector2(0.0f, Mathf.Sign(position.y) * boostMargin); scoreTransform.anchorMin = anchor; scoreTransform.anchorMax = anchor; scoreTransform.pivot = anchor; scoreTransform.anchoredPosition = position + new Vector2(0.0f, Mathf.Sign(position.y) * scoreMargin); }
public MappingProfile() { CreateMap <DemoEntity, Demo>() .ForMember(dest => dest.Name, opts => opts.MapFrom(src => $"{src.FirstName} {src.LastName}")) .ForMember(dest => dest.Position, opts => opts.MapFrom(src => EnumHelper <Position> .GetDisplayValue(src.Position))) .ForMember(dest => dest.Offices, opts => opts.MapFrom(src => src.Office)) .ReverseMap() .ForMember(dest => dest.FirstName, opts => opts.MapFrom(src => SplitHelper.Split(src.Name, ' ', 0))) .ForMember(dest => dest.LastName, opts => opts.MapFrom(src => SplitHelper.Split(src.Name, ' ', 1))); CreateMap <DemoNestedLevelOneEntity, DemoNestedLevelOne>() .ForMember(dest => dest.Extension, opts => opts.MapFrom(src => src.Extn)) .ForMember(dest => dest.DemoNestedLevelTwos, opts => opts.MapFrom(src => src.DemoNestedLevelTwo)) .ReverseMap(); CreateMap <DemoNestedLevelTwoEntity, DemoNestedLevelTwo>() .ForMember(dest => dest.StartDates, opts => opts.MapFrom(src => src.StartDate)) .ReverseMap(); }
public static Dictionary <string, string> BuildNewReq(Dictionary <string, string> o) { Dictionary <string, string> r = new Dictionary <string, string>(); int id = 0; while (o.ContainsKey("req" + id)) { var re = SplitHelper.Delimiter(o["req" + id]); id++; if (string.IsNullOrEmpty(re.value)) { o.Add(re.key, ""); continue; } r.Add(re.key, re.value); } return(r); }
public override ActionHolder Create(string setting) { ActionHolder conf = base.Create(setting); conf.trigger = ActionEvent.Direct; if (!string.IsNullOrEmpty(setting)) { conf.data["upgrade"] = setting; string[] keys = SplitHelper.Separator(setting); //add req foreach (string key in keys) { conf.req.Add("upgrade", key); } } return(conf); }
public override bool Check(Player player, MapElementInfo onMap, string sett, NVector pos) { if (S.Building().Free(pos)) { return(false); } var bi = S.Building().At(pos).dataBuilding; string[] builds = SplitHelper.Separator(sett); foreach (var b in builds) { if (bi.id == b) { return(true); } } return(false); }
public void FinishBuild() { //check generate if (terrains.Count == 0) { Assert.IsNotNull(generate, $"Data and generate for level {name} is missing."); LSys.tem.mapGeneration[generate].Generator().Generate(this); } //set res resGenerate = new Dictionary <string, int> [Width(), Height()]; for (int x = 0; x < Width(); x++) { for (int y = 0; y < Height(); y++) { DataTerrain bt = Terrain(x, y); //has res? if (bt.res.Count == 0) { continue; } //add it resGenerate[x, y] = new Dictionary <string, int>(); foreach (KeyValuePair <string, string> r in bt.res) { string[] s = SplitHelper.Separator(r.Value); //has chance? if (s.Length >= 2 && Random.Range(0, 100) < ConvertHelper.Proc(s[1])) { continue; } var c = bt.ResRange(r.Key); resGenerate[x, y].Add(r.Key, Random.Range(c.min, c.max)); } } } }
protected void AddLast(Player player, MapElementInfo info, NVector pos, ActionHolder holder, WindowTabBuilder wtb) { var last = L.b.playerOptions["last" + id]; //add last used? if (!string.IsNullOrEmpty(last.Value())) { SplitElementTab set = new SplitElementTab(last.Name(), last.Icon, holder.DataAction().Name()); foreach (string key in SplitHelper.Separator(last.Value())) { if (string.IsNullOrEmpty(key)) { continue; } AddObject(player, info, pos, key, set); } wtb.Add(set); } }
/// <summary> /// Instantiate a new operator node and make sure that its value is as specified /// and the tree rooted at this node has the specified number of operand nodes. /// </summary> /// <param name="goal"></param> /// <param name="numberOfNewNodes"></param> public OperatorNode(int goal, int numberOfNewNodes = 2) { int left, right; char op; // Choose a random valid operator for this node and split the goal do { op = Tree.operators.GetRandomElement(); } while (!SplitHelper.SplitValue(goal, op, out left, out right)); Operator = new Operator(op); Left = new OperandNode(left); Right = new OperandNode(right); int toLeft, toRight; // Distribute the number of new operands to be made between the two sides SplitHelper.SplitNumberOfOperands(left, right, numberOfNewNodes, out toLeft, out toRight); Left = Left.Expand(toLeft); Right = Right.Expand(toRight); }
void Start() { eventer = GetComponent<PlayerJoinEventer>(); eventer.OnPlayerJoined += OnPlayerJoined; eventer.OnAllPlayersReady += OnAllPlayersReady; splitHelper = new SplitHelper(); }