tk2dSprite CreateSpriteElement(string name, Vector3 offset) { var sprite = SpriteBuilder.SpriteFromResource($"{spriteDir}/{name}").GetComponent <tk2dSprite>(); sprite.transform.SetParent(m_extantGUI); sprite.PlaceAtLocalPositionByAnchor(offset / 16f, tk2dBaseSprite.Anchor.LowerLeft); sprite.scale = Vector2.zero; sprite.SortingOrder = 1; sprite.IsPerpendicular = false; m_panel.AttachRenderer(sprite); return(sprite); }
public void InitializeInternal(PickupObject i) { this.item = i; if (this.item && this.item.encounterTrackable) { GameStatsManager.Instance.SingleIncrementDifferentiator(this.item.encounterTrackable); } this.CurrentPrice = this.item.PurchasePrice; if (this.m_baseParentShop != null && this.CurrencyType == ShopCurrencyType.KEYS) { this.CurrentPrice = 1; if (this.item.quality == PickupObject.ItemQuality.A) { this.CurrentPrice = 2; } if (this.item.quality == PickupObject.ItemQuality.S) { this.CurrentPrice = 3; } } if (this.m_baseParentShop != null && this.CurrencyType == ShopCurrencyType.BLANKS) { this.CurrentPrice = 1; if (this.item.quality == PickupObject.ItemQuality.A || this.item.quality == PickupObject.ItemQuality.S) { this.CurrentPrice = 2; } } if (this.m_baseParentShop != null && this.CurrencyType == ShopCurrencyType.CUSTOM) { this.CurrentPrice = 1; if (customPrice != null) { this.CurrentPrice = customPrice(this.m_baseParentShop, this, this.item); } else { ETGModConsole.Log("CustomPrice is sadly null please look into this!"); } } base.gameObject.AddComponent <tk2dSprite>(); tk2dSprite tk2dSprite = i.GetComponent <tk2dSprite>(); if (tk2dSprite == null) { tk2dSprite = i.GetComponentInChildren <tk2dSprite>(); } base.sprite.SetSprite(tk2dSprite.Collection, tk2dSprite.spriteId); base.sprite.IsPerpendicular = true; if (this.UseOmnidirectionalItemFacing) { base.sprite.IsPerpendicular = false; } base.sprite.HeightOffGround = 1f; this.UseOmnidirectionalItemFacing = true; base.sprite.PlaceAtPositionByAnchor(base.transform.parent.position, tk2dBaseSprite.Anchor.MiddleCenter); base.sprite.transform.position = base.sprite.transform.position.Quantize(0.0625f); DepthLookupManager.ProcessRenderer(base.sprite.renderer); tk2dSprite componentInParent = base.transform.parent.gameObject.GetComponentInParent <tk2dSprite>(); if (componentInParent != null) { componentInParent.AttachRenderer(base.sprite); } SpriteOutlineManager.AddOutlineToSprite(base.sprite, Color.black, 0.1f, 0.05f, SpriteOutlineManager.OutlineType.NORMAL); GameObject gameObject = null; if (this.m_parentShop != null && this.m_parentShop.shopItemShadowPrefab != null) { gameObject = this.m_parentShop.shopItemShadowPrefab; } if (this.m_baseParentShop != null && this.m_baseParentShop.shopItemShadowPrefab != null) { gameObject = this.m_baseParentShop.shopItemShadowPrefab; } if (gameObject != null) { if (!this.m_shadowObject) { this.m_shadowObject = UnityEngine.Object.Instantiate <GameObject>(gameObject); } tk2dBaseSprite component = this.m_shadowObject.GetComponent <tk2dBaseSprite>(); component.PlaceAtPositionByAnchor(base.sprite.WorldBottomCenter, tk2dBaseSprite.Anchor.MiddleCenter); component.transform.position = component.transform.position.Quantize(0.0625f); base.sprite.AttachRenderer(component); component.transform.parent = base.sprite.transform; component.HeightOffGround = -0.5f; } base.sprite.UpdateZDepth(); SpeculativeRigidbody orAddComponent = base.gameObject.GetOrAddComponent <SpeculativeRigidbody>(); orAddComponent.PixelColliders = new List <PixelCollider>(); PixelCollider pixelCollider = new PixelCollider { ColliderGenerationMode = PixelCollider.PixelColliderGeneration.Circle, CollisionLayer = CollisionLayer.HighObstacle, ManualDiameter = 14 }; Vector2 vector = base.sprite.WorldCenter - base.transform.position.XY(); pixelCollider.ManualOffsetX = PhysicsEngine.UnitToPixel(vector.x) - 7; pixelCollider.ManualOffsetY = PhysicsEngine.UnitToPixel(vector.y) - 7; orAddComponent.PixelColliders.Add(pixelCollider); orAddComponent.Initialize(); orAddComponent.OnPreRigidbodyCollision = null; SpeculativeRigidbody speculativeRigidbody = orAddComponent; speculativeRigidbody.OnPreRigidbodyCollision = (SpeculativeRigidbody.OnPreRigidbodyCollisionDelegate)Delegate.Combine(speculativeRigidbody.OnPreRigidbodyCollision, new SpeculativeRigidbody.OnPreRigidbodyCollisionDelegate(this.ItemOnPreRigidbodyCollision)); base.RegenerateCache(); if (!GameManager.Instance.IsFoyer && this.item is Gun && GameManager.Instance.PrimaryPlayer.CharacterUsesRandomGuns) { this.ForceOutOfStock(); } }