示例#1
0
        public void SkillsCanApplyEffectWithDelay()
        {
            Skill            skill        = Factory.TestDelayedSkill;
            TestEffectEngine effectEngine = new TestEffectEngine();

            GameState state = Factory.DefaultGameState;

            state = state.UpdateCharacter(state.Party[0].WithSkills(skill.Yield()).WithCT(Time.ActionAmount));

            SkillEngine engine = new SkillEngine(effectEngine);

            state = engine.ApplyTargettedSkill(new TargettedSkill(skill, TargettingInfo.Self(state.Party[0])), state);

            Assert.Empty(effectEngine.ActionsUsed);
            Assert.Contains(state.DelayedActions, x => x.SourceSkill.Skill.CosmeticName == skill.CosmeticName);
            Assert.Equal(50, state.DelayedActions[0].CT);

            Assert.True(state.Party[0].IsCasting);

            CastingInfo castingInfo = state.Party[0].Casting;

            Assert.Equal(state.Party[0].Skills[0], castingInfo.Skill);
            Assert.Equal(skill.Delay, castingInfo.Duration);
            Assert.Equal(0, castingInfo.StartingTick);

            Assert.Equal(-50, state.Party[0].CT);
        }
示例#2
0
        public static void ServerStart(string str)
        {
            Console.WriteLine("Loading Data Access Objects.\n"
                              + "-------------------------------------------");

            DAOManager.Initialize(str);

            Console.WriteLine("Loading Data Files.\n"
                              + "-------------------------------------------");

            Data.Data.LoadAll();
            Data.Cache.LoadData();

            StatsService.Init();
            GeoService.Init();
            MapService.Init();
            QuestEngine.Init();
            SkillEngine.Init();
            ActionEngine.Init();
            SkillsLearnService.Init();
            AreaService.Init();
            GuildService.Init();

            InitMainLoop();
        }
示例#3
0
    public override void Start()
    {
        this.tag                  = "Player";
        skillList                 = AddCommponent <SkillEngine>();
        weaponSystem              = AddCommponent <WeaponEngine>();
        Shap                      = new CircleShap(new Fixed(0.25f), 8);
        rigibody.useCheck         = true;
        rigibody.useCheckCallBack = true;
        CanMove                   = true;
        if (IsLocalPlayer)
        {
            client.localPlayer = this;
            Debug.Log("client.localPlayer");
        }
        team  = 1;
        items = AddCommponent <ItemEngine>();
        //  ai=new AiEngine();
        //  ai.aiName="AI_test";

        // ai=AddCommponent<AiEngine>(ai);

        // ai.emenyTag="Zombie";
        base.Start();
        weaponSystem.AddWeapon(WeaponId.无战斗);
        skillList.AddSkill(SkillManager.GetSkill(SkillId.拳击右直));
    }
示例#4
0
        public void CooldownDisappearsAfterTime()
        {
            Skill            skill        = Factory.TestSkillCooldown;
            TestEffectEngine effectEngine = new TestEffectEngine();

            GameState state = Factory.DefaultGameState;

            state = state.UpdateCharacter(state.Party[0].WithSkills(skill.Yield()));

            SkillEngine skillEngine = new SkillEngine(effectEngine);

            state = skillEngine.ApplyTargettedSkill(new TargettedSkill(skill, TargettingInfo.Self(state.Party[0])), state);

            GameEngine engine = Factory.CreateGameEngine(state, skillEngine: skillEngine);

            Assert.False(engine.CurrentState.Party[0].Skills[0].Available);

            for (int i = 0; i < Time.ActionAmount; ++i)
            {
                engine.Process();
            }

            Assert.DoesNotContain(engine.CurrentState.DelayedActions, x => x.TargetAction.Action.Type == ActionType.Cooldown);
            Assert.True(engine.CurrentState.Party[0].Skills[0].Available);
        }
示例#5
0
    public void Update()
    {
        Info.Update();

        Model.Update();

        SkillEngine.Update();
    }
示例#6
0
        public void SkillFailsIfInvokerDoesNotHave()
        {
            Skill            skill        = Factory.TestSkill;
            TestEffectEngine effectEngine = new TestEffectEngine();

            GameState   state  = Factory.DefaultGameState;
            SkillEngine engine = new SkillEngine(effectEngine);

            Assert.Throws <InvalidOperationException> (() => engine.ApplyTargettedSkill(new TargettedSkill(skill, TargettingInfo.Self(state.Party[0])), state));
        }
示例#7
0
        public static void ServerStart()
        {
            Data.Data.LoadAll();
            Data.Cache.LoadData();

            StatsService.Init();
            GeoService.Init();
            MapService.Init();
            QuestEngine.Init();
            SkillEngine.Init();
            ActionEngine.Init();
            SkillsLearnService.Init();
            AreaService.Init();
            GuildService.Init();

            InitMainLoop();
        }
示例#8
0
        public void SkillsCanApplyEffectDirectly()
        {
            Skill            skill        = Factory.TestSkill;
            TestEffectEngine effectEngine = new TestEffectEngine();

            GameState state = Factory.DefaultGameState;

            state = state.UpdateCharacter(state.Party[0].WithSkills(skill.Yield()).WithCT(Time.ActionAmount));

            SkillEngine engine = new SkillEngine(effectEngine);

            state = engine.ApplyTargettedSkill(new TargettedSkill(skill, TargettingInfo.Self(state.Party[0])), state);

            Assert.False(state.Party[0].IsCasting);
            Assert.Single(effectEngine.ActionsUsed);
            Assert.Equal(0, state.Party[0].CT);
        }
示例#9
0
        public void CooldownPreventsReuse()
        {
            Skill            skill        = Factory.TestSkillCooldown;
            TestEffectEngine effectEngine = new TestEffectEngine();

            GameState state = Factory.DefaultGameState;

            state = state.UpdateCharacter(state.Party[0].WithSkills(skill.Yield()));

            SkillEngine engine = new SkillEngine(effectEngine);

            state = engine.ApplyTargettedSkill(new TargettedSkill(skill, TargettingInfo.Self(state.Party[0])), state);

            Assert.Single(state.DelayedActions);
            Assert.Contains(state.DelayedActions, x => x.TargetAction.Action.Type == ActionType.Cooldown);
            Assert.False(state.Party[0].Skills[0].Available);
            Assert.Equal(25, state.DelayedActions[0].CT);

            Assert.Throws <InvalidOperationException> (() => engine.ApplyTargettedSkill(new TargettedSkill(state.Party[0].Skills[0], TargettingInfo.Self(state.Party[0])), state));
        }
示例#10
0
    void SkillMask()
    {
        if (skillList == null)
        {
            if (unityClient != null && unityClient.client.localPlayer != null)
            {
                skillList = (unityClient.client.localPlayer as PlayerData).skillList;
            }
        }

        SkillRuntime skill = GetSkill(key);

        if (skill != null)
        {
            fillImage.fillAmount = (skill.timer / skill.skillData.coolDownTime).ToFloat();
            backImage.enabled    = fillImage.fillAmount > 0;
            if (!useKey)
            {
                group.blocksRaycasts = fillImage.fillAmount <= 0;
            }
        }
    }
示例#11
0
        public void SkillCasting_RemovingCasting_WhenComplete()
        {
            Skill            skill        = Factory.TestDelayedSkill;
            TestEffectEngine effectEngine = new TestEffectEngine();

            GameState state = Factory.DefaultGameState;

            state = state.UpdateCharacter(state.Party[0].WithSkills(skill.Yield()).WithCT(Time.ActionAmount));

            SkillEngine skillEngine = new SkillEngine(effectEngine);

            state = skillEngine.ApplyTargettedSkill(new TargettedSkill(skill, TargettingInfo.Self(state.Party[0])), state);

            Assert.True(state.Party[0].IsCasting);
            GameEngine engine = Factory.CreateGameEngine(state, skillEngine: skillEngine);

            for (int i = 0; i < Time.ActionAmount; ++i)
            {
                engine.Process();
            }

            Assert.False(engine.CurrentState.Party[0].IsCasting);
        }
示例#12
0
 public static void AttackFinished(Creature creature)
 {
     FeedbackService.AttackFinished(creature);
     SkillEngine.AttackFinished(creature);
 }
示例#13
0
 public static void ReleaseAttack(IConnection connection, int attackUid, int type)
 {
     SkillEngine.ReleaseAttack(connection.Player, attackUid, type);
 }
示例#14
0
 public static void MarkTarget(IConnection connection, Creature target, int skillId)
 {
     SkillEngine.MarkTarget(connection, target, skillId);
 }
示例#15
0
 public static void UseSkill(IConnection connection, List <UseSkillArgs> argsList)
 {
     SkillEngine.UseSkill(connection, argsList);
 }
示例#16
0
 public static void UseSkill(IConnection connection, UseSkillArgs args)
 {
     SkillEngine.UseSkill(connection, args);
 }