public static Queue <ImageEffect> ChangeSprite(UI2DSprite uiSprite, Sprite sprite)
        {
            AnimationBuilder builder = new AnimationBuilder();

            return(builder.BeginWith(EffectBuilder.ChangeSprite(uiSprite, sprite
                                                                )).Get());
        }
Exemple #2
0
 /// <summary>
 /// 初始化系统
 /// </summary>
 private void InitSystem()
 {
     root = GameObject.Find("UI Root");
     //ps初始化
     if (ps == null)
     {
         ps = transform.GetComponent <PanelSwitch>();
         Debug.Log("PanelSwitch 再获取");
     }
     ps.Init();
     //im初始化
     if (im == null)
     {
         im = transform.GetComponent <ImageManager>();
         Debug.Log("ImageManager 再获取");
     }
     //dm初始化
     dm = DataManager.GetInstance();
     //em初始化
     em = EventManager.GetInstance();
     //eb初始化
     EffectBuilder.Init(im, sm, CharacterManager.GetInstance());
     //nf初始化
     nodeFactory = NodeFactory.GetInstance();
     nodeFactory.Init(dm, root, ps);
 }
        /// <summary>
        /// 移除背景
        /// </summary>
        public static Queue <ImageEffect> RemoveBackground()
        {
            AnimationBuilder builder = new AnimationBuilder();
            UI2DSprite       ui      = EffectBuilder.backgroundSprite;

            return(builder.BeginWith(EffectBuilder.ChangeSprite(ui, null)).Get());
        }
Exemple #4
0
        public void should_not_shout_if_hushed()
        {
            var player = new PlayerBuilder()
                         .With(p => p.User, new UserBuilder()
                               .With(u => u.Id, "abcde")
                               .BuildAndSave())
                         .With(p => p.Location, LocationsStatics.STREET_200_MAIN_STREET)
                         .With(p => p.ShoutsRemaining, 1)
                         .BuildAndSave();

            var effectSourceHushed = new EffectSourceBuilder()
                                     .With(e => e.Id, CharacterPrankProcedures.HUSHED_EFFECT)
                                     .BuildAndSave();

            var effectHushed = new EffectBuilder()
                               .With(e => e.EffectSource, effectSourceHushed)
                               .BuildAndSave();

            player.Effects.Add(effectHushed);

            var cmd = new Shout {
                Message = "Hello world!", UserId = player.User.Id
            };

            Assert.That(() => Repository.Execute(cmd),
                        Throws.TypeOf <DomainException>().With.Message.EqualTo("You have been hushed and cannot currently shout."));
        }
        /// <summary>
        /// 淡出并移除背景
        /// </summary>
        /// <param name="time">淡出时间</param>
        public static Queue <ImageEffect> FadeOutBackground(float time)
        {
            AnimationBuilder builder = new AnimationBuilder();
            UI2DSprite       ui      = EffectBuilder.backgroundSprite;

            return(builder.BeginWith(EffectBuilder.FadeOut(ui, time)).Then(EffectBuilder.RemoveSprite(ui)).Get());
        }
Exemple #6
0
        public void Should_throw_exception_if_player_is_mind_controlled_with_forced_march()
        {
            player = new PlayerBuilder()
                     .With(n => n.Id, 9)
                     .With(p => p.User, new UserBuilder().BuildAndSave())
                     .With(p => p.Money, 1000)
                     .With(p => p.Mobility, PvPStatics.MobilityFull)
                     .With(p => p.Location, LocationsStatics.STREET_270_WEST_9TH_AVE)
                     .With(p => p.LastCombatTimestamp, DateTime.UtcNow.AddHours(-3))
                     .BuildAndSave();

            var effectSourceMarch = new EffectSourceBuilder()
                                    .With(e => e.Id, MindControlStatics.MindControl__Movement_DebuffEffectSourceId)
                                    .BuildAndSave();

            var effectMarch = new EffectBuilder()
                              .With(e => e.EffectSource, effectSourceMarch)
                              .BuildAndSave();

            player.Effects.Add(effectMarch);

            var cmd = new TakeBus {
                playerId = player.Id, destination = LocationsStatics.STREET_160_SUNNYGLADE_DRIVE
            };

            Assert.That(() => Repository.Execute(cmd),
                        Throws.TypeOf <DomainException>().With.Message
                        .EqualTo("You can't ride the bus while under the Forced March! mind control spell."));
        }
 public AnimationBuilder BeginWith(ImageEffect e)
 {
     animation = new Queue <ImageEffect>();
     animation.Enqueue(EffectBuilder.BlockClick(false));
     animation.Enqueue(e);
     return(this);
 }
        /// <summary>
        /// 从当前位置向某一位置移动
        /// </summary>
        /// <param name="depth">图像层数</param>
        /// <param name="target">目标位置</param>
        /// <param name="time">移动时间</param>
        public static Queue <ImageEffect> MoveCharacterSprite(int depth, Vector3 target, float time)
        {
            AnimationBuilder builder = new AnimationBuilder();

            return(builder.BeginWith(EffectBuilder.MoveByDepth(depth, target, time))
                   .Get());
        }
 protected override void SetupEffect(EffectBuilder effectBuilder)
 {
     effectBuilder.SetType(_effectType)
     .SetOwnerToSource()
     .WithPropertyModifier(_effectModifier.ToPropertyModifier())
     .WithRadiusModifier(_effectEnhancerAuraRadiusModifier.Value);
 }
 protected override void SetupEffect(EffectBuilder effectBuilder)
 {
     effectBuilder.SetType(EffectType.effect_remote_sensor_boost)
     .SetSource(ParentRobot)
     .WithPropertyModifier(_effectSensorBoosterLockingRangeModifier.ToPropertyModifier())
     .WithPropertyModifier(_effectSensorBoosterLockingTimeModifier.ToPropertyModifier());
 }
        /// <summary>
        /// 淡出并移除立绘
        /// </summary>
        /// <param name="depth">图像层数</param>
        /// <param name="time">淡出时间</param>
        public static Queue <ImageEffect> RemoveCharacterSprite(int depth, float time)
        {
            AnimationBuilder builder = new AnimationBuilder();

            return(builder.BeginWith(EffectBuilder.FadeOutByDepth(depth, time))
                   .Then(EffectBuilder.DeleteSpriteByDepth(depth))
                   .Get());
        }
        /// <summary>
        /// 消除对话框
        /// </summary>
        /// <param name="fadeout">淡出时间</param>
        public static Queue <ImageEffect> FadeOutDialog(float fadeout)
        {
            AnimationBuilder builder = new AnimationBuilder();

            return(builder.BeginWith(EffectBuilder.FadeOutDialog(fadeout))
                   .Then(EffectBuilder.SetDialog(false))
                   .Get());
        }
        /// <summary>
        /// 设置并淡入立绘
        /// </summary>
        /// <param name="depth">图像层数</param>
        /// <param name="sprite">图像名</param>
        /// <param name="time">淡入时间</param>
        public static Queue <ImageEffect> SetCharacterSprite(int depth, Sprite sprite, float time)
        {
            AnimationBuilder builder = new AnimationBuilder();

            return(builder.BeginWith(EffectBuilder.SetSpriteByDepth(depth, sprite))
                   .Then(EffectBuilder.FadeInByDepth(depth, time))
                   .Get());
        }
 protected override void SetupEffect(EffectBuilder effectBuilder)
 {
     effectBuilder.SetType(EffectType.effect_armor_hardener)
     .WithPropertyModifier(GetPropertyModifier(AggregateField.effect_resist_kinetic))
     .WithPropertyModifier(GetPropertyModifier(AggregateField.effect_resist_chemical))
     .WithPropertyModifier(GetPropertyModifier(AggregateField.effect_resist_thermal))
     .WithPropertyModifier(GetPropertyModifier(AggregateField.effect_resist_explosive));
 }
        //public static Queue<ImageEffect> ChangeFront(string character, Sprite sprite)
        //{
        //    ImageManager im = GameObject.Find("GameManager").GetComponent<ImageManager>();
        //    return ChangeSprite(im.GetFront(character), sprite);
        //}

        public static Queue <ImageEffect> ChangeSpriteFade(UI2DSprite ui, Sprite sprite, float fadeout, float fadein)
        {
            AnimationBuilder builder = new AnimationBuilder();

            return(builder.BeginWith(EffectBuilder.FadeOut(ui, fadeout))
                   .Then(EffectBuilder.ChangeSprite(ui, sprite))
                   .Then(EffectBuilder.FadeIn(ui, fadein))
                   .Get());
        }
        /// <summary>
        /// 设置并淡入背景
        /// </summary>
        /// <param name="sprite">图像名</param>
        /// <param name="time">淡入时间</param>
        public static Queue <ImageEffect> FadeInBackground(Sprite sprite, float time)
        {
            AnimationBuilder builder = new AnimationBuilder();
            UI2DSprite       ui      = EffectBuilder.backgroundSprite;

            return(builder.BeginWith(EffectBuilder.ChangeSprite(ui, sprite))
                   .Then(EffectBuilder.FadeIn(ui, time))
                   .Get());
        }
Exemple #17
0
 private void Awake()
 {
     _wait             = new WaitForSeconds(waitTime);
     _takeDamageEffect = new EffectBuilder(this);
     _takeDamageEffect
     .AddEffect(new ShakeRectEffect(slider.GetComponent <RectTransform>(), maxShakeRotation, shakeSpeed, OnEffectComplete))
     .AddEffect(new FlashColorEffect(sliderFill.color, takeDamageColor, sliderFill, _wait))
     .AddEffect(new ScaleRectEffect(slider.GetComponent <RectTransform>(), maxScaleSize, scaleSpeed, _wait))
     .OnAllEffectsComplete += OnAllEffectsComplete;
 }
        public void psychotic_players_should_not_lock_permanently()
        {
            var botVictim = new PlayerBuilder()
                            .With(p => p.Id, 55)
                            .With(p => p.FirstName, "Victim")
                            .With(p => p.LastName, "McGee")
                            .With(p => p.GameMode, (int)GameModeStatics.GameModes.PvP)
                            .With(p => p.BotId, AIStatics.PsychopathBotId)
                            .With(p => p.Level, 7)
                            .BuildAndSave();

            var effectSourcePsychotic = new EffectSourceBuilder()
                                        .With(e => e.Id, JokeShopProcedures.PSYCHOTIC_EFFECT)
                                        .BuildAndSave();

            var effectPsychotic = new EffectBuilder()
                                  .With(e => e.EffectSource, effectSourcePsychotic)
                                  .With(e => e.Duration, 1)
                                  .With(e => e.Owner, botVictim)
                                  .BuildAndSave();

            botVictim.Effects.Add(effectPsychotic);

            var cmd = new PlayerBecomesItem {
                AttackerId = attacker.Id, VictimId = botVictim.Id, NewFormId = formSource.Id
            };

            Assert.That(DomainRegistry.Repository.Execute(cmd),
                        Has.Property("AttackerLog")
                        .EqualTo("<br><b>You fully transformed Victim McGee into a A new Item!</b>!")
                        .And.Property("VictimLog")
                        .EqualTo("<br><b>You have been fully transformed into a A new Item!!</b>!")
                        .And.Property("LocationLog")
                        .EqualTo("<br><b>Victim McGee was completely transformed into a A new Item!</b> here."));

            var victimPostTF = DataContext.AsQueryable <Player>().FirstOrDefault(p => p.Id == botVictim.Id);

            Assert.That(victimPostTF, Is.Not.Null);
            Assert.That(victimPostTF.Mobility, Is.EqualTo(PvPStatics.MobilityInanimate));
            Assert.That(victimPostTF.FormSource.Id, Is.EqualTo(formSource.Id));
            Assert.That(victimPostTF.Item.ItemSource.Id, Is.EqualTo(itemSource.Id));

            var newItem = DataContext.AsQueryable <Item>().FirstOrDefault(i => i.FormerPlayer != null && i.FormerPlayer.Id == botVictim.Id);

            Assert.That(newItem, Is.Not.Null);
            Assert.That(newItem.Owner.Id, Is.EqualTo(attacker.Id));
            Assert.That(newItem.PvPEnabled, Is.EqualTo((int)GameModeStatics.GameModes.Protection));
            Assert.That(newItem.IsPermanent, Is.False);
            Assert.That(newItem.Level, Is.EqualTo(botVictim.Level));
            Assert.That(newItem.dbLocationName, Is.Empty);
            Assert.That(newItem.ItemSource.FriendlyName, Is.EqualTo(itemSource.FriendlyName));
            Assert.That(newItem.ConsentsToSoulbinding, Is.False);
        }
        /// <summary>
        /// 删除所有
        /// </summary>
        /// <param name="back">是否包含背景</param>
        public static Queue <ImageEffect> RemoveAll(bool back)
        {
            List <int>          charanums = EffectBuilder.GetDepthNum();
            Queue <ImageEffect> animation = new Queue <ImageEffect>();

            animation.Enqueue(EffectBuilder.BlockClick(false));
            foreach (int x in charanums)
            {
                //Debug.Log(x);
                animation.Enqueue(EffectBuilder.DeleteSpriteByDepth(x));
            }
            //if (back) animation.Enqueue(EffectBuilder.RemoveSprite(EffectBuilder.backgroundSprite));
            animation.Enqueue(EffectBuilder.BlockClick(true));
            return(animation);
        }
Exemple #20
0
        protected override void SetupEffect(EffectBuilder effectBuilder)
        {
            var effectProperty = _effectMassivnesSpeedMaxModifier.ToPropertyModifier();

            effectProperty.Add(effectBuilder.Owner.Massiveness);

            if (effectProperty.Value >= 1.0)
            {
                effectProperty.ResetToDefaultValue();
            }

            effectBuilder.SetType(EffectType.effect_demobilizer)
            .SetSource(ParentRobot)
            .WithPropertyModifier(effectProperty);
        }
        /// <summary>
        /// 改变原有立绘(淡出淡入)
        /// </summary>
        /// <param name="depth">图像层数</param>
        /// <param name="sprite">图像名</param>
        /// <param name="fadeout">原图淡出时间</param>
        /// <param name="fadein">淡入时间</param>
        public static Queue <ImageEffect> ChangeCharacterSprite(int depth, Sprite sprite, float fadeout, float fadein)
        {
            AnimationBuilder builder = new AnimationBuilder();

            if (fadeout == 0)
            {
                builder.BeginWith(EffectBuilder.ChangeByDepth(depth, sprite));
            }
            else
            {
                builder.BeginWith(EffectBuilder.FadeOutByDepth(depth, fadeout))
                .Then(EffectBuilder.SetSpriteByDepth(depth, sprite));
            }
            if (fadein != 0)
            {
                return(builder.Then(EffectBuilder.FadeInByDepth(depth, fadein)).Get());
            }
            return(builder.Get());
        }
    public void Next()
    {
        if (builder == null)
        {
            builder = new EffectBuilder(currentCompilerNode);
        }

        FieldData nextFieldData = currentCompilerNode.GetNextFieldData();

        if (nextFieldData == null)
        {
            if (currentCompilerNode.parent == null)
            {
                Last();
                return;
            }
            else
            {
                currentCompilerNode = currentCompilerNode.parent;
                Next();
                return;
            }
        }

        currentFieldData = nextFieldData;

        // handling for auxiliary bytes
        if (Array.IndexOf(currentFieldData.attributes, "auxiliary") != -1)
        {
            string      typeString  = currentFieldData.returnType.ToString();
            Instruction instruction = EffectData.GetEffectDataByName(typeString).instruction;
            currentCompilerNode.Add(
                new EffectBuilderItem(new List <byte> {
                (byte)instruction
            })
                );
            Next();
            return;
        }

        SetState();
    }
        /// <summary>
        /// 淡出所有立绘
        /// </summary>
        /// <param name="time">淡出时间</param>
        //public static Queue<ImageEffect> FadeOutAllChara(float time)
        //{
        //    AnimationBuilder builder = new AnimationBuilder();
        //    List<int> charanums = EffectBuilder.GetDepthNum();
        //    Queue<ImageEffect> animation = new Queue<ImageEffect>();
        //    animation.Enqueue(EffectBuilder.BlockClick(false));
        //    foreach (int x in charanums)
        //    {
        //        animation.Enqueue(EffectBuilder.FadeOutByDepth(x, time));
        //    }
        //    return animation;
        //}

        ///// <summary>
        ///// 移除所有立绘
        ///// </summary>
        //public static Queue<ImageEffect> RemoveAllChara()
        //{
        //    AnimationBuilder builder = new AnimationBuilder();
        //    List<int> charanums = EffectBuilder.GetDepthNum();
        //    Queue<ImageEffect> animation = new Queue<ImageEffect>();
        //    animation.Enqueue(EffectBuilder.BlockClick(false));
        //    foreach (int x in charanums)
        //    {
        //        animation.Enqueue(EffectBuilder.DeleteSpriteByDepth(x));
        //    }
        //    animation.Enqueue(EffectBuilder.BlockClick(true));
        //    return animation;
        //}

        ///// <summary>
        ///// 淡出所有图片(包括背景)
        ///// </summary>
        ///// <param name="time">淡出时间</param>
        //public static Queue<ImageEffect> FadeOutAllPic(float time)
        //{
        //    AnimationBuilder builder = new AnimationBuilder();
        //    List<int> charanums = EffectBuilder.GetDepthNum();
        //    Queue<ImageEffect> animation = new Queue<ImageEffect>();
        //    animation.Enqueue(EffectBuilder.BlockClick(false));
        //    foreach (int x in charanums)
        //    {
        //        animation.Enqueue(EffectBuilder.FadeOutByDepth(x, time));
        //    }
        //    animation.Enqueue(EffectBuilder.FadeOut(EffectBuilder.backgroundSprite, time));
        //    return animation;
        //}
        #endregion

        #region 新增同步特效 所有图片
        /// <summary>
        /// 淡出所有
        /// </summary>
        /// <param name="back">是否包含背景</param>
        /// <param name="dialog">是否包含对话框</param>
        /// <param name="time">淡出时间</param>
        public static Queue <ImageEffect> FadeOutAll(bool back, bool dialog, float time)
        {
            List <int>          charanums = EffectBuilder.GetDepthNum();
            Queue <ImageEffect> animation = new Queue <ImageEffect>();

            animation.Enqueue(EffectBuilder.BlockClick(false));
            if (dialog)
            {
                animation.Enqueue(EffectBuilder.FadeOutDialog(time));
            }
            foreach (int x in charanums)
            {
                animation.Enqueue(EffectBuilder.FadeOutByDepth(x, time));
            }
            if (back)
            {
                animation.Enqueue(EffectBuilder.FadeOut(EffectBuilder.backgroundSprite, time));
            }
            return(animation);
        }
Exemple #24
0
        public void should_throw_exception_if_player_is_mind_controlled()
        {
            var mindControl = new VictimMindControlBuilder()
                              .With(v => v.FormSourceId, MindControlStatics.MindControl__MovementFormSourceId)
                              .With(v => v.TurnsRemaining, 3)
                              .BuildAndSave();

            var mindControlList = new List <VictimMindControl>
            {
                mindControl
            };

            new PlayerBuilder()
            .With(p => p.Id, 51)
            .With(p => p.User, new UserBuilder()
                  .With(u => u.Id, "abcde")
                  .With(u => u.Stats, stats)
                  .BuildAndSave())
            .With(p => p.Location, LocationsStatics.STREET_200_MAIN_STREET)
            .With(p => p.VictimMindControls, mindControlList)
            .BuildAndSave();

            var effectSourceMarch = new EffectSourceBuilder()
                                    .With(e => e.Id, MindControlStatics.MindControl__Movement_DebuffEffectSourceId)
                                    .BuildAndSave();

            var effectMarch = new EffectBuilder()
                              .With(e => e.EffectSource, effectSourceMarch)
                              .BuildAndSave();

            player.Effects.Add(effectMarch);

            var cmd = new Move {
                PlayerId = 51, destination = destination
            };

            Assert.That(() => Repository.Execute(cmd),
                        Throws.TypeOf <DomainException>().With.Message.EqualTo(
                            "You try to move but discover you cannot!  Some other mage has partial control of your mind, disabling your ability to move on your own!"));
        }
 protected virtual void OnApplyEffect(EffectBuilder builder)
 {
 }
 public void SetEffectBuilder(EffectResourceBuilder source)
 {
     if (this.mEffectBuilder != null)
     {
         this.mEffectBuilder.RemoveIndex(this);
     }
     this.mEffectBuilder = new EffectBuilder(this.EffectType, this.ComponentIndex);
     this.mEffectBuilder.Effect = source.GetEffect(this.EffectType, this.ComponentIndex);
     this.mEffectBuilder.AddIndex(this);
 }
 public void Clear()
 {
     builder             = null;
     currentCompilerNode = null;
     currentFieldData    = null;
 }
Exemple #28
0
 protected override void SetupEffect(EffectBuilder effectBuilder)
 {
     effectBuilder.SetType(EffectType.effect_target_painting)
     .SetSource(ParentRobot)
     .WithPropertyModifier(_effectStealthStrengthModifier.ToPropertyModifier());
 }
 public void SetEffectBuilder(EffectBuilder builder)
 {
     if (builder == null)
         throw new ArgumentNullException("builder");
     if (this.mEffectBuilder != null)
     {
         this.mEffectBuilder.RemoveIndex(this);
     }
     this.mEffectBuilder = builder;
     this.mEffectBuilder.AddIndex(this);
     this.ComponentType = (byte)this.mEffectBuilder.EffectType;
     this.ComponentIndex = this.mEffectBuilder.EffectIndex;
 }
Exemple #30
0
 protected override void SetupEffect(EffectBuilder effectBuilder)
 {
     effectBuilder.SetType(EffectType.effect_sensor_supress).SetSource(ParentRobot)
     .WithPropertyModifier(_effectSensorDampenerLockingRangeModifier.ToPropertyModifier())
     .WithPropertyModifier(_effectSensorDampenerLockingTimeModifier.ToPropertyModifier());
 }
 protected override void OnApplyEffect(EffectBuilder builder)
 {
     builder.WithRadius(EmitRadius);
     base.OnApplyEffect(builder);
 }
 public Queue <ImageEffect> Get()
 {
     animation.Enqueue(EffectBuilder.BlockClick(true));
     return(animation);
 }