public void AttachDeco(CTile tile, EDeco deco) { var decoParam = DecoTable.Instance.Table[deco]; var data = this.GetDecoData(decoParam); var sprite = this._sprites[ListUtil <int> .GetRandomElement(decoParam.Sprites)]; FTile.SetEnvironmentFlagTrue(tile.GetFlags()); var handle = new GameObject(); var model = new MDeco(deco); model.SetData(data); var view = new VDeco(deco); var controller = new CDeco(); controller.SetGameHandle(handle); controller.SetModel(model); controller.SetView(view); var renderer = handle.AddComponent <SpriteRenderer>(); tile.SetCurrent(controller); renderer.sprite = sprite; renderer.transform.SetParent(tile.Handle.transform); renderer.transform.position = tile.Handle.transform.position; var tileRenderer = tile.Handle.GetComponent <SpriteRenderer>(); renderer.sortingLayerName = tileRenderer.sortingLayerName; renderer.sortingOrder = tileRenderer.sortingOrder + 1; }
public override void BuildLandmark(CTile tile) { var lmParams = LandmarkTable.Instance.Table[ELandmark.Pond]; int radius = RNG.Instance.Next(lmParams.RadiusMin, lmParams.RadiusMax); var mTiles = tile.Model.GetAoETiles(radius - 1); int minHeight = 3; var set = new List <MTile>(); foreach (var mTile in mTiles) { if (!set.Contains(mTile)) { set.Add(mTile); } foreach (MTile neighbor in mTile.GetAdjacent()) { if (!set.Contains(neighbor)) { set.Add(neighbor); } } } foreach (var mTile in set) { if (mTile.GetHeight() < minHeight) { minHeight = mTile.GetHeight(); } } foreach (var mTile in set) { mTile.SetHeight(minHeight); FTile.SetLandmarkFlagTrue(mTile.GetFlags()); } foreach (var mTile in mTiles) { var controller = mTile.Controller; FTile.SetEnvironmentFlagTrue(mTile.GetFlags()); mTile.SetAPCost(TileTable.Instance.Table[ETile.Water].Cost); mTile.SetStaminaCost(TileTable.Instance.Table[ETile.Water].StaminaCost); mTile.SetThreatMod(TileTable.Instance.Table[ETile.Water].ThreatMod); mTile.SetVulnMod(TileTable.Instance.Table[ETile.Water].VulnMod); mTile.SetLiquid(true); mTile.SetType(ETile.Water); } }