/// <summary> /// Loads the unit preview sprite. /// </summary> /// <see cref="http://answers.unity3d.com/questions/1139254/how-to-set-sprite-or-texture2d-assetpath-in-editor.html">TODO: Fix errors</see> void GetOrCreateUnitPreview(SpriteRenderer renderer, int index, BuyUnitConfig cfg, List <PreviewRescaleConfig> previewsRequiringRescaling) { if (cfg.PreviewIcon != null) { // sprite given renderer.sprite = cfg.PreviewIcon; } else { var totalPreviewSize = renderer.bounds.max - renderer.bounds.min; Vector2 actualSize; if (cfg.UnitPrefab.GetComponent <SpriteRenderer> () != null) { // unit has a sprite -> copy it var src = cfg.UnitPrefab.GetComponent <SpriteRenderer> (); //CopyComponent (src, renderer.gameObject); renderer.sprite = src.sprite; renderer.color = src.color; renderer.materials = src.sharedMaterials; actualSize = src.bounds.max - src.bounds.min; } else { // nothing -> create preview texture from asset var previewTexture = StorePreviewAsAsset(cfg.UnitPrefab, index); var worldBounds = renderer.bounds; // compute pixels per unit size s.t. texture fills out entire preview bounds var texW = previewTexture.width; var texH = previewTexture.height; var worldW = worldBounds.max.x - worldBounds.min.x; var worldH = worldBounds.max.y - worldBounds.min.y; var pixelsPerUnit = Mathf.Min(texW / worldW, texH / worldH); // create sprite var sprite = new Sprite(); var previewSpriteRect = new Rect(new Vector2(0, 0), new Vector2(texW, texH)); var pivot = new Vector2(0.5f, 0.5f); sprite = Sprite.Create(previewTexture, previewSpriteRect, pivot, pixelsPerUnit); renderer.sprite = sprite; actualSize = renderer.bounds.max - renderer.bounds.min; } previewsRequiringRescaling.Add(new PreviewRescaleConfig { totalSize = totalPreviewSize, actualSize = actualSize, renderer = renderer }); } }
internal void ProduceUnit(BuyUnitConfig cfg) { var unitPrefab = cfg.UnitPrefab; // create new unit at current position var go = (GameObject)Instantiate(unitPrefab, SpawnPoint.position, Quaternion.identity); // set path var pathFollower = go.GetComponent <NavMeshPathFollower>(); pathFollower.path = Path; pathFollower.direction = Direction; // add faction FactionManager.SetFaction(go, gameObject); // add loot via script for now var lootSettings = go.AddComponent <HasLoot> (); lootSettings.MinLootCredits = Mathf.RoundToInt(cfg.CreditCost * 0.9f); lootSettings.MaxLootCredits = Mathf.RoundToInt(cfg.CreditCost * 1.6f); }
public BuyUnitStatus(UnitManager unitManager, BuyUnitConfig cfg) { lastBuyTime = Time.time; this.unitManager = unitManager; Config = cfg; }