コード例 #1
0
ファイル: Floor.cs プロジェクト: radmars/ld42
 private void OnFinish(TileEffect effect)
 {
     if (effects.Where(e => e.IsFinished()).Count() <= 1)
     {
         //	Win();
     }
 }
コード例 #2
0
    void OnEffectComplete(TileEffect te)
    {
        this.effects.Remove(te);

        te.SetTile(null);
        te.OnComplete -= OnEffectComplete;
    }
コード例 #3
0
    public override void Apply(TileNode tilenode)
    {
        TileEffect e = Globals.campaign.GetTileData().Effects.GetCopy(tileEffectKeyToAdd);

        tempID = e.tempID;
        tilenode.AddTileEffect(e);
    }
コード例 #4
0
    public void AddEffect(TileEffect effect)
    {
        this.effects.Add(effect);

        effect.SetTile(this);
        effect.OnComplete += OnEffectComplete;
        effect.Instantiate(this.position, Quaternion.identity, null);
    }
コード例 #5
0
ファイル: TiledImage.cs プロジェクト: mcavigelli/wpf-samples
        /// <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();
        }
コード例 #6
0
ファイル: TileNode.cs プロジェクト: Tathomp/TacticsGame
 public void AddTileEffect(TileEffect e)
 {
     if (SameTileEffect(e) == false)
     {
         TileEffect.InitTileEffectVisual(this, e);
         tileEffects.Add(e);
         e.InitEffects(this);
     }
 }
コード例 #7
0
ファイル: PaintCanvas.cs プロジェクト: tmyt/PaintCanvas
        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);
            }
        }
コード例 #8
0
        public void TileEffect2()
        {
            var src = GetSourceImage("input.png");

            var effect = new TileEffect(90, 80, 14);

            effect.Render(src);

            Compare(src, "tile2.png");
        }
コード例 #9
0
ファイル: Sc_Tile.cs プロジェクト: antoinenisoli/CastleQuest
 private void Awake()
 {
     myTileEffect = GetComponent <TileEffect>();
     tileManager  = FindObjectOfType <Sc_TileManager>();
     mainCam      = Camera.main;
     spriteRender = GetComponentInChildren <SpriteRenderer>();
     baseMat      = spriteRender.material;
     SetBonus(0);
     SetEffect(SpellType.None);
 }
コード例 #10
0
ファイル: TileNode.cs プロジェクト: Tathomp/TacticsGame
 public void ProcessEffectQueue()
 {
     while (queuedEffects.Count > 0)
     {
         TileEffect newEffect = queuedEffects.Dequeue();
         tileEffects.Add(newEffect);
         newEffect.InitEffects(this);
         TileEffect.InitTileEffectVisual(this, newEffect);
     }
 }
コード例 #11
0
        public void TileEffect1()
        {
            var src = GetSourceImage("input.png");

            var effect = new TileEffect();

            effect.Render(src);

            Compare(src, "tile1.png");
        }
コード例 #12
0
 // 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>();
 }
コード例 #13
0
        private ICanvasImage CreateTile()
        {
            var tileEffect = new TileEffect
            {
                Source          = bitmapTiger,
                SourceRectangle = new Rect(105, 55, 40, 30)
            };

            animationFunction = elapsedTime => { };

            return(AddSoftEdgedCrop(tileEffect));
        }
コード例 #14
0
ファイル: TileNode.cs プロジェクト: Tathomp/TacticsGame
    //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);
    }
コード例 #15
0
ファイル: Tile.cs プロジェクト: Ryan-McPartlan/ACM-RPG
    //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();
    }
コード例 #16
0
    public TileEffect Bump(TileEdge fromDirection, bool flameBurning)
    {
        if (flameBurning)
        {
            var tileFire = GetComponentInChildren <TileFire>();
            if (tileFire)
            {
                tileFire.StartFire();
                tileEffect = TileEffect.Burning;
            }
        }

        return(TileEffect);
    }
コード例 #17
0
ファイル: TileNode.cs プロジェクト: Tathomp/TacticsGame
 public void InitTileEffectsVisuals()
 {
     if (tileEffects != null)
     {
         foreach (TileEffect e in tileEffects)
         {
             TileEffect.InitTileEffectVisual(this, e);
         }
     }
     else
     {
         tileEffects = new List <TileEffect>();
     }
 }
コード例 #18
0
    void Standard()
    {
        if (rend.enabled == false)
        {
            rend.enabled = true;
        }

        if (sRend.sprite != null)
        {
            sRend.enabled = false;;
        }
        tileEffect = TileEffect.Standard;

        gameObject.layer = 0;
    }
コード例 #19
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;
    }
コード例 #20
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);
        }
    }
コード例 #21
0
    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);
    }
コード例 #22
0
ファイル: TileNode.cs プロジェクト: Tathomp/TacticsGame
    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);
    }
コード例 #23
0
    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);
        }
    }
コード例 #24
0
ファイル: TileNode.cs プロジェクト: Tathomp/TacticsGame
    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();
    }
コード例 #25
0
    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);
                }
            }
        }
    }
コード例 #26
0
        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);
            };
        }
コード例 #27
0
ファイル: PaintCanvas.cs プロジェクト: tmyt/PaintCanvas
 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);
     }
 }
コード例 #28
0
        private ICanvasImage CreateTile()
        {
            var tileEffect = new TileEffect
            {
                Source = bitmapTiger,
                SourceRectangle = new Rect(105, 55, 40, 30)
            };

            animationFunction = elapsedTime => { };

            return AddSoftEdgedCrop(tileEffect);
        }
コード例 #29
0
    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());
            }
        }
    }
コード例 #30
0
ファイル: NoSpread.cs プロジェクト: Tathomp/TacticsGame
 //never spreads the effect to other tiles
 public void Spread(TileNode node, TileEffect effect)
 {
     return;
 }
コード例 #31
0
 public void SetTileEffect(TileEffect tileEffect)
 {
     if (tileEffect == TileEffect.Default)
     {
     }
 }
コード例 #32
0
        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,
            };
        }