private void OnFinish(TileEffect effect) { if (effects.Where(e => e.IsFinished()).Count() <= 1) { // Win(); } }
void OnEffectComplete(TileEffect te) { this.effects.Remove(te); te.SetTile(null); te.OnComplete -= OnEffectComplete; }
public override void Apply(TileNode tilenode) { TileEffect e = Globals.campaign.GetTileData().Effects.GetCopy(tileEffectKeyToAdd); tempID = e.tempID; tilenode.AddTileEffect(e); }
public void AddEffect(TileEffect effect) { this.effects.Add(effect); effect.SetTile(this); effect.OnComplete += OnEffectComplete; effect.Instantiate(this.position, Quaternion.identity, null); }
/// <summary> /// Constructs an instance of the TiledImage /// </summary> public TiledImage() { // add the generic style to the control's resources const string stylePath = "/IGExtensions.Framework;component/Controls/TiledImage.xaml"; this.ApplyStyle(stylePath); _tileEffect = new TileEffect(); }
public void AddTileEffect(TileEffect e) { if (SameTileEffect(e) == false) { TileEffect.InitTileEffectVisual(this, e); tileEffects.Add(e); e.InitEffects(this); } }
private void DrawFrame(CanvasDrawingSession ds) { //ds.Clear(); if (_background != null) { var tile = new TileEffect(); tile.Source = _background; tile.SourceRectangle = new Rect(0, 0, 400, 400); ds.DrawImage(tile); } using (var blendDs = _buffer.CreateDrawingSession()) { blendDs.Clear(); } foreach (var layer in _layers.Reverse().Where(l => l.IsVisible)) { using (var tmpDs = _tmpBuffer.CreateDrawingSession()) { tmpDs.Clear(Colors.Transparent); switch (layer.BlendMode) { case BlendMode.Normal: tmpDs.DrawImage(_buffer); tmpDs.DrawImage(layer.Image, (float)layer.Opacity / 100); break; case BlendMode.Addition: tmpDs.DrawImage(_buffer); tmpDs.Blend = CanvasBlend.Add; tmpDs.DrawImage(layer.Image, (float)layer.Opacity / 100); break; default: using (var alpha = layer.Image.Clone()) using (var blend = new BlendEffect()) { using (var alphaDs = alpha.CreateDrawingSession()) { alphaDs.DrawImage(layer.Image, (float)layer.Opacity / 100); } blend.Background = _buffer; blend.Foreground = alpha; blend.Mode = layer.BlendMode.ToBlendEffectMode(); tmpDs.DrawImage(blend); } break; } } using (var blendDs = _buffer.CreateDrawingSession()) { blendDs.Clear(); blendDs.DrawImage(_tmpBuffer); } ds.DrawImage(_buffer); } }
public void TileEffect2() { var src = GetSourceImage("input.png"); var effect = new TileEffect(90, 80, 14); effect.Render(src); Compare(src, "tile2.png"); }
private void Awake() { myTileEffect = GetComponent <TileEffect>(); tileManager = FindObjectOfType <Sc_TileManager>(); mainCam = Camera.main; spriteRender = GetComponentInChildren <SpriteRenderer>(); baseMat = spriteRender.material; SetBonus(0); SetEffect(SpellType.None); }
public void ProcessEffectQueue() { while (queuedEffects.Count > 0) { TileEffect newEffect = queuedEffects.Dequeue(); tileEffects.Add(newEffect); newEffect.InitEffects(this); TileEffect.InitTileEffectVisual(this, newEffect); } }
public void TileEffect1() { var src = GetSourceImage("input.png"); var effect = new TileEffect(); effect.Render(src); Compare(src, "tile1.png"); }
// Use this for initialization private void Awake() { objectPooler = ObjectPooler.Instance; tileEffect = initialTileEffect; initialPosition = transform.localPosition; CheckEffect(tileEffect, true); sRend = GetComponentInChildren <SpriteRenderer>(true); sRend.enabled = false; sRend.gameObject.SetActive(true); //rend = gameObject.GetComponent<Renderer>(); }
private ICanvasImage CreateTile() { var tileEffect = new TileEffect { Source = bitmapTiger, SourceRectangle = new Rect(105, 55, 40, 30) }; animationFunction = elapsedTime => { }; return(AddSoftEdgedCrop(tileEffect)); }
//We can modify this to handle stacks of the same tile effect if we awant too public bool SameTileEffect(TileEffect e) { foreach (TileEffect f in tileEffects) { if (f.GetKey() == e.GetKey()) { return(true); } } return(false); }
//An ability, projectile, or something else with a referance to a tileEffect prefab public void AddEffect(GameObject effect, float duration = 30, Unit caster = null) { GameObject newEffectObject = Instantiate(effect, transform.position, Quaternion.identity) as GameObject; newEffectObject.transform.parent = transform; TileEffect newEffect = newEffectObject.GetComponent <TileEffect>(); effectsOnTile.Add(newEffect); newEffect.affectedTile = this; newEffect.vanishTime = Time.time + duration; newEffect.OnApply(); }
public TileEffect Bump(TileEdge fromDirection, bool flameBurning) { if (flameBurning) { var tileFire = GetComponentInChildren <TileFire>(); if (tileFire) { tileFire.StartFire(); tileEffect = TileEffect.Burning; } } return(TileEffect); }
public void InitTileEffectsVisuals() { if (tileEffects != null) { foreach (TileEffect e in tileEffects) { TileEffect.InitTileEffectVisual(this, e); } } else { tileEffects = new List <TileEffect>(); } }
void Standard() { if (rend.enabled == false) { rend.enabled = true; } if (sRend.sprite != null) { sRend.enabled = false;; } tileEffect = TileEffect.Standard; gameObject.layer = 0; }
void InitialEffect() { if (rend.enabled == false) { rend.enabled = true; } if (initialTileEffect == TileEffect.Cracked) { if (sRend.sprite != null) { sRend.enabled = true; } } tileEffect = initialTileEffect; gameObject.layer = 0; }
void UpdateTiles(TileEffect e) { List <TileEffect> tileEffectsToRemove = new List <TileEffect>(); e.turnsLeft--; e.Act(); if (e.turnsLeft <= 0) { e.Finish(); tileEffectsToRemove.Add(e); } foreach (TileEffect t in tileEffectsToRemove) { teams[turn].tileEffects.Remove(t); } }
public override DatabaseEntry Copy() { TileEffect e = new TileEffect(key, tempID, effectLength.Copy(), effectSpread.Copy()); e.descript = descript; e.remove = remove; e.animationID = animationID; e.removeOnTrigger = removeOnTrigger; foreach (string s in attributes) { e.attributes.Add(s); } foreach (TileEffectComponent ec in init) { e.init.Add(ec.Copy()); } foreach (TileEffectComponent ec in turn) { e.turn.Add(ec.Copy()); } foreach (TileEffectComponent ec in actorEnter) { e.actorEnter.Add(ec.Copy()); } foreach (TileEffectComponent ec in actorExit) { e.actorExit.Add(ec.Copy()); } foreach (TileEffectComponent ec in end) { e.end.Add(ec.Copy()); } return(e); }
public void RemoveTileEffect(TileEffect effect) { foreach (TileEffectSprite sprite in effectSprites) { if (sprite.currentEffect == effect.tempID) { GameObject.Destroy(sprite.gameObject); effectSprites.Remove(sprite); effect.EndEffects(this); tileEffects.Remove(effect); return; } } effect.EndEffects(this); tileEffects.Remove(effect); }
public static void InitTileEffectVisual(TileNode tileNode, TileEffect effect) { if (effect.animationID == "") { return; } else { int x = tileNode.data.posX; int y = tileNode.data.posY; TileEffectSprite s = Globals.GenerateTileEffectSprite(tileNode.data.posX, tileNode.data.posY, effect.animationID); s.InitEffectSprite(effect.tempID, x, y); Globals.GetBoardManager().EffectBoard[x, y] = s; tileNode.effectSprites.Add(s); } }
public void ProccessTags(List <string> tags) { PropertyTagMap <int, TileEffect> ptm = Globals.GetPorpertyMap(); queuedEffects = new Queue <TileEffect>(); foreach (string attrib in type.attributes) { foreach (string tag in tags) { //Do comparison to find out if we need to do anything if (ptm.EntryExists(tag, attrib)) { Tuple <int, TileEffect> tuple = ptm.GetEffect(tag, attrib); int procChance = tuple.ele1; int roll = Random.Range(0, 100); TileEffect effect = tuple.ele2; if (roll <= procChance) { if (SameTileEffect(effect) == false) { queuedEffects.Enqueue((TileEffect)effect.Copy()); //effect.InitEffects(this); //tileEffects.Add((TileEffect)effect.Copy()); //TileEffect.InitTileEffectVisual(this, effect); } } else { // Debug.Log("Roll: " + roll + " Proc Chance: " + procChance); } } } } //ProcessEffectQueue(); }
public void Spread(TileNode node, TileEffect effect) { foreach (TileNode n in node.neighbors) { int i = Random.Range(1, 100); if (i <= chanceToSpread) //if (true) { if (n.SameTileEffect(effect) == false) { //we can spread the effect to the next tile TileEffect newEffect = (TileEffect)effect.Copy(); n.ProccessTags(newEffect.attributes); //n.queuedEffects.Enqueue(newEffect); } } } }
public void Loadd2() { var MAIN = new Transform2DEffect { Source = Shape, }; //直接读CanvasRenderTarget又不行(0x88990025) sessionblend.Mutiply也没有 //blendcopy要读底图颜色不过UpdateCanvas太慢了 已经写不出橡皮擦了 ICanvasImage ccc() { if (Texture == null) { return(MAIN); } return(new ArithmeticCompositeEffect { Source1 = MAIN, Source2 = new TileEffect { Source = Texture, SourceRectangle = new Rect(0, 0, Texture.Size.Width, Texture.Size.Height) }, MultiplyAmount = 1, Source1Amount = 0, Source2Amount = 0, }); } var ECAN = new TileEffect { Source = new GaussianBlurEffect { Source = Canvas, } }; var ERAS = new CompositeEffect { Sources = { new ArithmeticCompositeEffect { Source1 = new ArithmeticCompositeEffect{ MultiplyAmount = 0, Source1 = new CompositeEffect { Sources = { new PremultiplyEffect { Source = new ColorSourceEffect{ Color = color } }, new LinearTransferEffect { Source = ECAN, AlphaSlope = blend } } }, Source1Amount = 1 - dilution, Source2 = ECAN, Source2Amount = dilution, }, Source2 = new InvertEffect { Source = new LuminanceToAlphaEffect{ Source = ccc() } }, MultiplyAmount = 1, Source1Amount = 0, Source2Amount = 0, }, new CompositeEffect { Sources = { Canvas, new LuminanceToAlphaEffect { Source = ccc(), }, }, Mode = CanvasComposite.DestinationOut } }, Mode = CanvasComposite.Add }; var brush = new CanvasImageBrush(device) { Image = ERAS, SourceRectangle = new Rect(new Point(0, 0), Canvas.Size) }; dynamicbrush = (p, v, size) => { checkRandom(out Matrix3x2 x, ref p, ref v, ref size); ECAN.SourceRectangle = new Rect(p.X + v.X * size, p.Y + v.Y * size, 1, 1); MAIN.TransformMatrix = x; UpdateCanvas(); // session.Blend = CanvasBlend.Copy; // session.FillCircle(p, size*2, brush); session.DrawImage(ERAS, CanvasComposite.Copy); }; }
private void DrawFrame(CanvasDrawingSession ds) { ds.Clear(); if (_background != null) { var tile = new TileEffect(); tile.Source = _background; tile.SourceRectangle = new Rect(0, 0, 400, 400); ds.DrawImage(tile); } using (var blendDs = _buffer.CreateDrawingSession()) { blendDs.Clear(); } foreach (var layer in _layers.Reverse().Where(l => l.IsVisible)) { using (var tmpDs = _tmpBuffer.CreateDrawingSession()) { tmpDs.Clear(Colors.Transparent); switch (layer.BlendMode) { case BlendMode.Normal: tmpDs.DrawImage(_buffer); tmpDs.DrawImage(layer.Image, (float)layer.Opacity / 100); break; case BlendMode.Addition: tmpDs.DrawImage(_buffer); tmpDs.Blend = CanvasBlend.Add; tmpDs.DrawImage(layer.Image, (float)layer.Opacity / 100); break; default: using (var alpha = layer.Image.Clone()) using (var blend = new BlendEffect()) { using (var alphaDs = alpha.CreateDrawingSession()) { alphaDs.DrawImage(layer.Image, (float)layer.Opacity / 100); } blend.Background = _buffer; blend.Foreground = alpha; blend.Mode = layer.BlendMode.ToBlendEffectMode(); tmpDs.DrawImage(blend); } break; } } using (var blendDs = _buffer.CreateDrawingSession()) { blendDs.Clear(); blendDs.DrawImage(_tmpBuffer); } ds.DrawImage(_buffer); } }
private ICanvasImage CreateTile() { var tileEffect = new TileEffect { Source = bitmapTiger, SourceRectangle = new Rect(105, 55, 40, 30) }; animationFunction = elapsedTime => { }; return AddSoftEdgedCrop(tileEffect); }
public void CheckEffect(TileEffect _tEffect, bool setup = false) { //StopCoroutine(ReturnToInitialEffect()); switch (_tEffect) { case (TileEffect.Broken): { if (occupied == false) { sRend.enabled = false; rend.enabled = false; if (Resources.Load("Particles/TileBreakParticles") != null) { objectPooler.SpawnFromPool("TileBreakParticles", this.gameObject.transform.position - new Vector3(0, 0, 0), Quaternion.Euler(180, 0, 0), objectPooler.transform, (Resources.Load("Particles/TileBreakParticles") as GameObject)); } gameObject.layer = 9; } else { CheckEffect(TileEffect.Cracked); return; } break; } case (TileEffect.Cracked): { if (tileEffect != TileEffect.Cracked && tileEffect != TileEffect.Broken) { sRend.enabled = true; tileEffect = _tEffect; if (Resources.Load("Particles/TileCrackParticles") != null) { objectPooler.SpawnFromPool("TileCrackParticles", this.gameObject.transform.position - new Vector3(0, 0, 0.75f), Quaternion.Euler(180, 0, 0), objectPooler.transform, (Resources.Load("Particles/TileCrackParticles") as GameObject)); } return; } else { if (setup == true) { sRend.enabled = true; tileEffect = _tEffect; return; } CheckEffect(TileEffect.Broken); return; } } } tileEffect = _tEffect; if (setup == false) { if (effectResetIsRunning == true) { bonusWait += initialWait; } else { StartCoroutine(ReturnToInitialEffect()); } } }
//never spreads the effect to other tiles public void Spread(TileNode node, TileEffect effect) { return; }
public void SetTileEffect(TileEffect tileEffect) { if (tileEffect == TileEffect.Default) { } }
public void Loadd() { MAIN = new Transform2DEffect { Source = Shape, }; var c = color; c.A = (byte)(255 * (density)); ICanvasImage Main() { if (Texture == null) { return(MAIN); } return(new ArithmeticCompositeEffect { Source1 = MAIN, Source2 = new TileEffect { Source = Texture, SourceRectangle = new Rect(0, 0, Texture.Size.Width, Texture.Size.Height) }, MultiplyAmount = 1, Source1Amount = 0, Source2Amount = 0, }); } ICanvasImage Color() { var cc = new PremultiplyEffect { Source = new ColorSourceEffect { Color = c } }; if (blend == 0 && dilution == 0) { ECAN = null; return(cc); } ECAN = new TileEffect { Source = new GaussianBlurEffect { Source = Canvas, } }; return(new ArithmeticCompositeEffect { Source1 = new CompositeEffect { Sources = { new PremultiplyEffect { Source = cc }, new LinearTransferEffect { Source = ECAN, AlphaSlope = blend } } }, MultiplyAmount = 0, Source1Amount = 1 - dilution, Source2 = ECAN, Source2Amount = dilution, }); } MASK = new LuminanceToAlphaEffect { Source = Main(), }; ERAS = new ArithmeticCompositeEffect { Source1 = Color(), Source2 = new InvertEffect { Source = new LuminanceToAlphaEffect { Source = Main(), } }, MultiplyAmount = 1, Source1Amount = 0, Source2Amount = 0, }; }