// Start is called before the first frame update void Start() { particle = GetComponent <ParticleSystem>(); rb = GetComponent <Rigidbody2D>(); spriteRenderer = GetComponent <SpriteRenderer>(); sprites = GetComponent <SpriteReference>(); }
public override void Update() { base.Update(); SpriteReference cinder = SpriteLoader.Instance.AddSprite("content/cinder_ender"); BigCreatureRender render = (BigCreatureRender)Render; bool powered = this.HasStatusEffect(statusEffect => statusEffect is PoweredUp); if (powered) { render.Sprite = SpriteLoader.Instance.AddSprite("content/ender_erebizo_powered"); for (int i = 0; i < 1; i++) { Vector2 emitPos = new Vector2(X * 16, Y * 16) + Mask.GetRandomPixel(Random); Vector2 centerPos = VisualTarget; Vector2 velocity = Util.AngleToVector(Random.NextFloat() * MathHelper.TwoPi) * (Random.NextFloat() + 0.5f); velocity = Vector2.Normalize(emitPos - centerPos) * (Random.NextFloat() + 0.5f); new Cinder(World, cinder, emitPos, velocity, Random.Next(90) + 20); } } else { render.Sprite = SpriteLoader.Instance.AddSprite("content/ender_erebizo"); } }
private void AddSpriteNode(ulong nodeId, SpriteReference spriteRef) { var spriteBitmap = _spriteBitmapStore.Get(spriteRef.RelativePath); var item = new SpriteNodeEditorItem(nodeId, this, spriteBitmap); _items.Add(nodeId, item); }
private void DrawWing(SceneGame scene, SpriteReference sprite, Color color, int segments, float directionMod, float distanceMod, Microsoft.Xna.Framework.Graphics.SpriteEffects mirror) { //new Color(244, 211, 23) //SpriteReference hand = SpriteLoader.Instance.AddSprite("content/hand"); int index = 0; for (int i = 1; i <= segments; i++) { int subSegments = 9; float angle = directionMod * MathHelper.ToRadians(90 - i * 5); float distance = (float)LerpHelper.Quadratic(10, distanceMod * 50, (float)i / segments); Vector2 pivot = VisualPosition() + Util.AngleToVector(angle) * distance; scene.DrawSpriteExt(sprite, 0, pivot + GetHandOffset(index), sprite.Middle, angle + directionMod * MathHelper.PiOver4, Vector2.One, mirror, color, 0); index++; for (int e = 0; e <= subSegments; e++) { float subSegmentSlide = (float)e / (subSegments + 1); float subAngle = angle - directionMod * MathHelper.ToRadians(i * 2); float subDistance = distanceMod * e * 5; float visAngle = subAngle + directionMod * MathHelper.PiOver2 + directionMod * MathHelper.ToRadians(i * -10); scene.DrawSpriteExt(sprite, 0, pivot + GetHandOffset(index) + Util.AngleToVector(subAngle) * subDistance, sprite.Middle, visAngle, Vector2.One, mirror, color * MathHelper.Lerp(0.3f, 1, subSegmentSlide), 0); index++; } } }
public PotionAppearance(SpriteReference sprite, string name, string description) { Sprite = sprite; Name = name; Description = description; Randomized = this; }
public void UpdateBrush(SpriteReference spriteReferences) { if (brush != null) { brush.UpdateBrush(spriteReferences); } }
public override void DrawFrame(SceneGame scene, Vector2 pos, PoseData poseData, Facing facing, Matrix transform, Color color, ColorMatrix colorMatrix) { SpriteReference abyssalTendril = SpriteLoader.Instance.AddSprite("content/abyssal_tendril_bush"); var mirror = Microsoft.Xna.Framework.Graphics.SpriteEffects.None; bool tendrilDown = IsTendrilDown(poseData.Pose); bool tendrilDownLast = IsTendrilDown(poseData.PoseLast); int frameOffset = 0; switch (poseData.Pose) { case (CreaturePose.Attack): frameOffset = 3 + (poseData.PoseFrame / 2) % 4; break; case (CreaturePose.Cast): frameOffset = 3 + (poseData.PoseFrame / 4) % 4; break; } if (tendrilDown != tendrilDownLast && poseData.PoseFrame < 15) { frameOffset = 1 + (poseData.PoseFrame / 10) % 2; } scene.PushSpriteBatch(shader: scene.Shader, shaderSetup: (matrix, projection) => { scene.SetupColorMatrix(Color * colorMatrix, transform * matrix, projection); }); scene.DrawSprite(abyssalTendril, frameOffset, pos - new Vector2(0, 16), mirror, color, 0); scene.PopSpriteBatch(); }
private static Domain.Nodes.Node BuildSpriteNode(DocumentData data, Node node) { var spriteRef = new SpriteReference(node.SpriteKey); var domainNode = new SpriteNode(data.MessageBus, node.Id, node.Name, spriteRef) { Parent = node.ParentId == 0 ? null : data.Nodes[node.ParentId] // node list is in hierarchical order, so parents always are available when their children are added. }; if (domainNode.Parent == null) { data.RootNodes.InternalAdd(domainNode); } else { domainNode.Parent?.InternalAdd(domainNode); } domainNode.GetProperty(PropertyType.TranslationX).SetDesignValueInternal(node.Position.X); domainNode.GetProperty(PropertyType.TranslationY).SetDesignValueInternal(node.Position.Y); domainNode.GetProperty(PropertyType.RotationAngle).SetDesignValueInternal(node.Angle); domainNode.GetProperty(PropertyType.Visibility).SetDesignValueInternal(node.IsVisible ? 1f : 0f); return(domainNode); }
public NameInput(Scene scene, string name, string text, Vector2 position, int width, string oldString) { Scene = scene; OldString = oldString; NewString = oldString; Position = position; Width = width; MenuAreaBasic = new MenuAreaBasic(this, () => Position, 10); SpriteReference textbox = SpriteLoader.Instance.AddSprite("content/ui_box"); var formatting = new TextFormatting() { Bold = false, }; var dialogInstant = new DialogFormattingInstant(); UI = new LabelledUI(textbox, textbox, textBuilder => { textBuilder.AppendText(name, formatting, dialogInstant); }, () => new Point(Width, Height)); Text = new TextBuilder(Width - 16 - 16, Height); Text.StartLine(LineAlignment.Left); Text.AppendText(text, formatting, dialogInstant); Text.EndLine(); Text.StartLine(LineAlignment.Left); //TODO: Text Input Text.EndLine(); Text.EndContainer(); Text.Finish(); }
public ParticleExplosion(SceneGame world, SpriteReference sprite, Vector2 velocity, LerpHelper.Delegate subImageLerp, LerpHelper.Delegate velocityLerp, int time) : base(world, time) { Sprite = sprite; SubImageLerp = subImageLerp; Velocity = velocity; VelocityLerp = velocityLerp; }
internal static void Postfix(StandardTowerPurchaseButton __instance, ref SpriteReference __result) { if (__instance.baseTowerModel.GetModTower()?.ModTowerSet is ModTowerSet modTowerSet) { __result = modTowerSet.ContainerReference; } }
// Set the Strengthen button's interactability based on whether the player has enough resources public void UpdateStrengthenButton() { _buttonStrengthen.gameObject.SetActive(true); // remove the previous cost _textResourceCosts.text = ""; // Populate new cost tiles var rankCost = _selectedUpgrade.UpgradeData.GetStrengthenCost(); foreach (var resource in rankCost) { if (!string.IsNullOrEmpty(_textResourceCosts.text)) { _textResourceCosts.text += " "; // add space to separate the resources } _textResourceCosts.text += resource.Value.ToString(); // add the respective sprite for the resource _textResourceCosts.text += SpriteReference.GetResourceSprite(resource.Key); } // Set interactability & text color based on whether the player has enough resources bool hasResources = ItemProgress.HasResources(rankCost); _buttonStrengthen.interactable = hasResources; _textResourceCosts.color = hasResources ? _colorTextEnabled : _colorTextDisabled; _textStrengthen.color = hasResources ? _colorTextEnabled : _colorTextDisabled; }
public ParticleBlob(SceneGame world, SpriteReference sprite, Vector2 velocity, LerpHelper.Delegate velocityLerp, LerpHelper.Delegate scaleLerp, int time) : base(world, time) { Sprite = sprite; Velocity = velocity; VelocityLerp = velocityLerp; ScaleLerp = scaleLerp; }
public static void Postfix(ref SpriteReference reference, ref Image image) { //Console.WriteLine(SpriteRegister.register == null); //Console.WriteLine(SpriteRegister.register.Count); if (reference != null && image != null && SpriteRegister.register.Count > 0) { foreach (KeyValuePair <string, Sprite> entry in SpriteRegister.register) { //Console.WriteLine(entry.Key == null); //Console.WriteLine(reference.GUID == null); //Console.WriteLine(entry.Value == null); //Console.WriteLine(entry.Value.texture == null); if (entry.Key == reference.GUID) { var val = entry.Value; if (entry.Value == null) { Texture2D pngTexture = SpriteRegister.TextureFromPNG(entry.Key); val = Sprite.Create(pngTexture, new Rect(0.0f, 0.0f, pngTexture.width, pngTexture.height), default); } //var temp = val.texture; //if (temp == null) Console.WriteLine("tex null"); image.canvasRenderer.SetTexture(val.texture); image.sprite = val; } } } }
public DrawableFloor(string id, SpriteReference sprite, Color color, DrawPass pass) : base(id) { Sprite = sprite; Icon = sprite; Color = color; Pass = pass; }
public SpriteNodeAddedEvent(ulong nodeId, string name, SpriteReference spriteRef, ulong?parentNodeId, int index) { NodeId = nodeId; Name = name; SpriteRef = spriteRef; ParentNodeId = parentNodeId; Index = index; }
/// <summary> /// (Cross-Game compatible) Returns's the GUID of this SpriteReference /// </summary> /// <param name="spriteReference"></param> /// <returns></returns> public static string GetGUID(this SpriteReference spriteReference) { #if BloonsTD6 return(spriteReference.GUID); #elif BloonsAT return(spriteReference.Guid); #endif }
public SpriteNodeRemovedEvent(ulong nodeId, string name, SpriteReference spriteRef, ulong?parentNodeId, int index, List <PropertyValueSet> propertyValues) { NodeId = nodeId; Name = name; SpriteRef = spriteRef; ParentNodeId = parentNodeId; Index = index; PropertyValues = propertyValues; }
public ParticleSpore(SceneGame world, SpriteReference sprite, Vector2 start, Vector2 end, LerpHelper.Delegate velocityLerp, int time) : base(world, time) { Sprite = sprite; Position = start; Target = end; VelocityLerp = velocityLerp; OffsetX = Random.Next(sprite.Width); OffsetY = Random.Next(sprite.Height); }
/// <summary> /// (Cross-Game compatible) Returns a new SpriteReference that uses the given guid /// </summary> /// <param name="guid">The guid that you'd like to assign to the SpriteReference</param> /// <returns></returns> public static SpriteReference CreateSpriteReference(string guid) { #if BloonsTD6 return(new SpriteReference(guid)); #elif BloonsAT var reference = new SpriteReference(); reference.guid = guid; return(reference); #endif }
public ParticleThrow(SceneGame world, SpriteReference sprite, Vector2 start, Vector2 end, float height, LerpHelper.Delegate velocityLerp, LerpHelper.Delegate scaleLerp, int time, float fadeSlide) : base(world, time) { Sprite = sprite; Position = start; Target = end; Height = height; VelocityLerp = velocityLerp; ScaleLerp = scaleLerp; FadeSlide = fadeSlide; }
private void EmitFlare(Creature creature, int n) { SpriteReference sprite = SpriteLoader.Instance.AddSprite("content/cinder"); for (int i = 0; i < n; i++) { Vector2 emitPos = new Vector2(creature.X * 16, creature.Y * 16) + creature.Mask.GetRandomPixel(Random); Vector2 centerPos = creature.VisualTarget; Vector2 velocity = Vector2.Normalize(emitPos - centerPos) * (Random.NextFloat() + 0.5f) * 1; new Cinder(creature.World, sprite, emitPos, velocity, (int)Math.Min(Random.Next(90) + 90, 50)); } }
public SpriteViewModel Build(SpriteReference sprite) { var filename = _editor.CurrentDocument.GetAbsoluteAssetPath(sprite.RelativePath); return(new SpriteViewModel { Sprite = sprite, Label = Path.GetFileNameWithoutExtension(sprite.RelativePath), Thumbnail = _thumbnailLoader.LoadThumbnail(filename, 40), Filename = filename }); }
public override void DrawLine(Scene scene, Vector2 linePos, int e) { ActAction action = Actions[e]; SpriteReference cursor = SpriteLoader.Instance.AddSprite("content/cursor"); if (Selection == e) { scene.SpriteBatch.Draw(cursor.Texture, linePos + new Vector2(0, LineHeight / 2 - cursor.Width / 2), cursor.GetFrameRect(0), Color.White); } scene.DrawText(action.Name, linePos + new Vector2(16, 0), Alignment.Left, new TextParameters().SetConstraints(Width - 32, 16).SetBold(true).SetColor(Color.White, Color.Black)); scene.DrawText(action.Description, linePos + new Vector2(16, 16), Alignment.Left, new TextParameters().SetConstraints(Width - 32, 16).SetBold(false).SetColor(Color.Gray, Color.Black)); }
public override IEnumerable <Wait> RoutineUse(Creature user, object target) { Consume(); user.VisualPose = user.FlickPose(CreaturePose.Cast, CreaturePose.Stand, 70); yield return(user.WaitSome(50)); SpriteReference cinder = SpriteLoader.Instance.AddSprite("content/cinder_ender"); new FlarePower(user.World, cinder, user, 50); new ScreenFlashPowerUp(user, () => ColorMatrix.Ender(), 100, 100, 50, 50); user.AddStatusEffect(new PoweredUp()); yield return(user.WaitSome(20)); }
protected void DrawWeaponAsIcon(SceneGame scene, SpriteReference sprite, int frame, Vector2 position) { Vector2 scale; if (sprite.Width >= 16) { scale = new Vector2(14 * Sqrt2 / sprite.Width); } else { scale = Vector2.One; } scene.DrawSpriteExt(sprite, frame, position - sprite.Middle, sprite.Middle, MathHelper.ToRadians(-45), scale, SpriteEffects.None, Color.White, 0); }
public override IEnumerable <Wait> RoutineUse(Creature user, object target) { if (target is Creature targetCreature) { yield return(user.CurrentHits); Consume(); new ChaosSplash(user.World, new Vector2(user.X * 16 + 8, user.Y * 16 + 8), Vector2.Zero, 0, 15); user.VisualColor = user.Static(Color.Transparent); EmitFlare(user, 10); var nearbyTiles = targetCreature.Tile.GetNearby(4).Where(tile => !tile.Solid && !tile.Creatures.Any()).ToList(); user.MoveTo(nearbyTiles.Pick(Random), 0); EmitFlare(user, 10); user.VisualColor = user.Flick(user.Flash(user.Static(Color.Transparent), user.Static(ColorMatrix.Chaos()), 1, 1), user.Static(Color.White), 10); var impact = user.Tile.GetAllNeighbors(); SpriteReference chaosBall = SpriteLoader.Instance.AddSprite("content/projectile_chaos"); List <Creature> targets = new List <Creature>(); List <Tile> targetTiles = new List <Tile>(); int emitTime = 15; int ballTime = 5; foreach (var tile in impact) { if (tile.Creatures.Any()) { new ProjectileEmitter(user.World, () => user.VisualTarget, () => tile.VisualTarget, emitTime, (start, end) => new Ball(user.World, chaosBall, start, end, LerpHelper.Linear, ballTime)); targets.AddRange(tile.Creatures); targetTiles.Add(tile); } } if (targets.Any()) { yield return(user.WaitSome(emitTime + ballTime)); } foreach (var blastTarget in targets) { user.Attack(blastTarget, SkillUtil.SafeNormalize(blastTarget.VisualTarget - user.VisualTarget), ExplosionAttack); EmitFlare(blastTarget, 10); } foreach (var targetTile in targetTiles) { new FireExplosion(user.World, targetTile.VisualTarget, Vector2.Zero, 0, 12); } if (targets.Any()) { new ScreenShakeRandom(user.World, 5, 10, LerpHelper.Linear); yield return(user.WaitSome(20)); } } }
public ParticleCinder(SceneGame world, SpriteReference sprite, Vector2 pos, Vector2 velocity, float driftSpeed, float velocityMax, float rotation, float scale, LerpHelper.Delegate scaleLerp, LerpHelper.Delegate angleLerp, int time) : base(world, time) { Sprite = sprite; Position = pos; Velocity = velocity; VelocityMax = velocityMax; Rotation = rotation; Angle = Random.NextFloat() * MathHelper.TwoPi; Scale = scale; DriftSpeed = driftSpeed; DriftAngle = Random.NextFloat() * MathHelper.TwoPi; ScaleLerp = scaleLerp; AngleLerp = angleLerp; RandomOffset = Random.NextFloat(); }
internal static void Postfix(ref SpriteReference reference, ref Image image) { if (reference is null || image is null || reference.GUID is null) { return; } var guid = reference.GUID; if (ResourceHandler.GetSprite(guid) is Sprite spr) { spr.texture.mipMapBias = -1; image.SetSprite(spr); } }
public override void DrawFrame(SceneGame scene, Vector2 pos, PoseData poseData, Facing facing, Matrix transform, Color color, ColorMatrix colorMatrix) { SpriteReference abyssalTendril = SpriteLoader.Instance.AddSprite("content/abyssal_tendril"); var mirror = Microsoft.Xna.Framework.Graphics.SpriteEffects.None; Random rand = new Random(this.GetHashCode()); int wiggleFrame = poseData.PoseFrame + rand.Next(100); bool tendrilDown = IsTendrilDown(poseData.Pose); bool tendrilDownLast = IsTendrilDown(poseData.PoseLast); int frameOffset = 0; bool invisible = poseData.Pose == CreaturePose.Walk; switch (poseData.Pose) { case (CreaturePose.Stand): frameOffset = 2 + (wiggleFrame / 10) % 4; break; case (CreaturePose.Attack): frameOffset = 2 + (wiggleFrame / 2) % 4; break; default: frameOffset = 2 + (wiggleFrame / 4) % 4; break; } if (tendrilDown != tendrilDownLast && poseData.PoseFrame < 5 + rand.Next(20)) { frameOffset = 0 + (wiggleFrame / 10) % 2; invisible = false; } if (invisible) { return; } scene.PushSpriteBatch(shader: scene.Shader, shaderSetup: (matrix, projection) => { scene.SetupColorMatrix(Color * colorMatrix, transform * matrix, projection); }); scene.DrawSprite(abyssalTendril, frameOffset, pos - new Vector2(0, 8), mirror, color, 0); scene.PopSpriteBatch(); }
public void CopyReference(PointToBrick copiedFrom, Sprite parent) { if (copiedFrom.pointedSpriteReference != null) pointedSpriteReference = copiedFrom.pointedSpriteReference.Copy(parent) as SpriteReference; }
internal override void LoadFromXML(XElement xRoot) { if(xRoot.Element("pointedSprite") != null) pointedSpriteReference = new SpriteReference(xRoot.Element("pointedSprite"), sprite); }