예제 #1
0
 public void Make()
 {
     _Speed  = 0.0f;
     _Trun   = 0.0f;
     _Status = ACTOR_STATUS_TYPE.MAKE;
     _InvokeStatusEvent();
 }
 private void _Cast(ACTOR_STATUS_TYPE actor_status_type)
 {
     if (_CastSkill != null)
     {
         _CastSkill.Cast(actor_status_type);
     }
 }
예제 #3
0
 public void Damage()
 {
     _Speed  = 0.0f;
     _Trun   = 0.0f;
     _Status = ACTOR_STATUS_TYPE.DAMAGE1;
     _InvokeStatusEvent();
 }
예제 #4
0
 public void Stun()
 {
     _Speed  = 0.0f;
     _Trun   = 0.0f;
     _Status = ACTOR_STATUS_TYPE.STUN;
     _InvokeStatusEvent();
 }
예제 #5
0
 private void _Cast(ACTOR_STATUS_TYPE id)
 {
     _Speed  = 0.0f;
     _Trun   = 0.0f;
     _Status = id;
     _InvokeStatusEvent();
 }
예제 #6
0
 public void Aid()
 {
     _Speed  = 0.0f;
     _Trun   = 0.0f;
     _Status = ACTOR_STATUS_TYPE.AID;
     _InvokeStatusEvent();
 }
예제 #7
0
    private void _SetStatus(ACTOR_STATUS_TYPE status)
    {
        Status = status;

        if (Avatar != null)
        {
            _BeginSpeed = Avatar.GetFloat("Speed");
            _EndSpeed   = Speed;
            _SpeedStep  = 0.0f;

            _BeginTrun = Avatar.GetFloat("Trun");

            _EndTrun = Trun > 0.0f
                ? 1
                : Trun < 0.0f
                    ? -1
                    : 0;
            _TrunStep = 0.0f;

            if (Status == ACTOR_STATUS_TYPE.CHEST_OPEN)
            {
                Avatar.SetBool("Open", true);
            }
            else if (Status == ACTOR_STATUS_TYPE.NORMAL_IDLE && Speed == 0.0f)
            {
                ResetLongIdle();
            }
        }
    }
예제 #8
0
        public SkillCaster GetBattleCaster()
        {
            var skill = Equipment.GetSkill();
            ACTOR_STATUS_TYPE status = skill.Idle;
            var data = _Datas.First((s) => s.Id == status);

            return(new SkillCaster(data, new Determination(data.Lefts, data.Rights, data.Total, data.Begin, data.End)));
        }
예제 #9
0
 private TICKRESULT _UseSkill(ACTOR_STATUS_TYPE skill)
 {
     if (_CastSkill != null)
     {
         _CastSkill.Cast(skill);
         return(TICKRESULT.SUCCESS);
     }
     return(TICKRESULT.FAILURE);
 }
예제 #10
0
 public Skill(EFFECT_TYPE skill_effect, ITEM_FEATURES right, ITEM_FEATURES left, ACTOR_STATUS_TYPE idle, ACTOR_STATUS_TYPE injury, ACTOR_STATUS_TYPE knockout)
 {
     _SkillEffect = skill_effect;
     _Idle        = idle;
     _Right       = right;
     _Left        = left;
     _Knockout    = knockout;
     _Injury      = injury;
 }
예제 #11
0
        void ICastSkill.Cast(ACTOR_STATUS_TYPE skill)
        {
            if (_Overdraft)
            {
                return;
            }


            _NextCaster = _Caster.FindNext(skill);
        }
예제 #12
0
        public void Damage()
        {
            _Speed = 0.0f;
            _Trun  = 0.0f;

            var skill = Equipment.GetSkill();

            _Status = skill.Injury;
            _InvokeStatusEvent();
        }
예제 #13
0
        public SkillCaster GetBattleCaster()
        {
            ACTOR_STATUS_TYPE status = ACTOR_STATUS_TYPE.MELEE_IDLE;
            var item = this.Equipment.Find(EQUIP_PART.RIGHT_HAND);

            if (item != null)
            {
                status = _GetWeaponIdle(item.GetPrototype().Features);
            }

            var data = _Datas.First((s) => s.Id == status);

            return(new SkillCaster(data, new Determination(data.Lefts, data.Rights, data.Total, data.Begin, data.End)));
        }
예제 #14
0
        public SkillCaster FindNext(ACTOR_STATUS_TYPE skill)
        {
            var skillPrototype = Resource.Instance.FindSkill(skill);

            if (skillPrototype != null)
            {
                if (Data.Nexts.Any(s => s == skill))
                {
                    return(new SkillCaster(skillPrototype, new Determination(skillPrototype)));
                }

                if (_IsHit && Data.HitNexts.Any(s => s == skill))
                {
                    return(new SkillCaster(skillPrototype, new Determination(skillPrototype)));
                }
            }
            return(null);
        }
    private void _AddSkill(ACTOR_STATUS_TYPE actorStatusType)
    {
        //Resources.Load("UI/Skill/" + actorStatusType.ToString())
        var obj   = GameObject.Instantiate(SkillButtomSource);
        var image = obj.GetComponentInChildren <UnityEngine.UI.Image>();

        image.sprite = (Sprite)Resources.Load("Icon/Skill/" + actorStatusType.ToString(), typeof(Sprite));
        var button = obj.GetComponentInChildren <UnityEngine.UI.Button>();
        var tmp    = actorStatusType;

        button.onClick.AddListener(
            () => { _Cast(tmp); });
        _Childs.Add(obj);
        var rect = obj.GetComponent <RectTransform>();

        rect.SetParent(GetComponent <RectTransform>(), false);

        var element = obj.GetComponentInChildren <RMF_RadialMenuElement>();

        Menu.elements.Add(element);
    }
예제 #16
0
        IEnumerable <Item> IIndividual.Stolen(Guid id)
        {
            if (_SignRoster.Sign(id) == false)
            {
                return(new Item[0]);
            }
            if (_EntityType == ENTITY.DEBIRS)
            {
                var unlockSuccess = Regulus.Utility.Random.Instance.NextFloat() > 0.3f;
                if (UnlockEvent != null)
                {
                    UnlockEvent(unlockSuccess);
                }

                if (unlockSuccess == false)
                {
                    return(new Item[0]);
                }

                _Status = ACTOR_STATUS_TYPE.CHEST_OPEN;
                _InvokeStatusEvent();
            }

            if (Bag.Any())
            {
                var items = Bag.Shuffle().Take(1).ToArray();
                Bag.Remove(items);
                if (_TheftEvent != null)
                {
                    _TheftEvent(id, items);
                }

                return(items);
            }


            return(new Item[0]);
        }
예제 #17
0
        private TICKRESULT _FindSkill(ref ACTOR_STATUS_TYPE skill, ref float distance)
        {
            var strength = _Entiry.GetStrength();

            if (strength < 0)
            {
                return(TICKRESULT.FAILURE);
            }
            var len = _UsableSkills.Count;

            if (len == 0)
            {
                return(TICKRESULT.FAILURE);
            }
            var index = Regulus.Utility.Random.Instance.NextInt(0, len);

            skill    = _UsableSkills[index];
            distance = 1f;
            if (skill == ACTOR_STATUS_TYPE.BATTLE_AXE_ATTACK1 ||
                skill == ACTOR_STATUS_TYPE.BATTLE_AXE_ATTACK2
                )
            {
                distance = 1.3f;
            }
            else if (skill == ACTOR_STATUS_TYPE.BATTLE_AXE_BLOCK)
            {
                distance = 3f;
            }
            else if (skill == ACTOR_STATUS_TYPE.CLAYMORE_ATTACK1)
            {
                distance = 3f;
            }



            return(TICKRESULT.SUCCESS);
        }
예제 #18
0
 private void _Cast(ACTOR_STATUS_TYPE id)
 {
     _Speed = 0.0f;
     _Trun = 0.0f;
     _Status = id;
     _InvokeStatusEvent();
 }
예제 #19
0
 public Skill(EFFECT_TYPE skill_effect, ACTOR_STATUS_TYPE status_idle, ITEM_FEATURES right, ITEM_FEATURES left)
 {
     _SkillEffect = skill_effect;
     _StatusIdle = status_idle;
     _Right = right;
     _Left = left;
 }
    private void _AddSkill(ACTOR_STATUS_TYPE actorStatusType)
    {
        //Resources.Load("UI/Skill/" + actorStatusType.ToString())
        var obj = GameObject.Instantiate(SkillButtomSource);
        var image = obj.GetComponentInChildren<UnityEngine.UI.Image>();
        image.sprite = (Sprite)Resources.Load("Icon/Skill/" + actorStatusType.ToString(), typeof (Sprite));
        var button = obj.GetComponentInChildren<UnityEngine.UI.Button>();
        var tmp = actorStatusType;
        button.onClick.AddListener(
            () => { _Cast(tmp); });
        _Childs.Add(obj);
        var rect = obj.GetComponent<RectTransform>();
        rect.SetParent(GetComponent<RectTransform>(), false);

        var element = obj.GetComponentInChildren<RMF_RadialMenuElement>();
        Menu.elements.Add(element);
    }
예제 #21
0
 public void CastBegin(ACTOR_STATUS_TYPE id)
 {
     _Cast(id);
 }
예제 #22
0
 public void CastEnd(ACTOR_STATUS_TYPE id)
 {
 }
예제 #23
0
 public void Explore()
 {
     _Status = ACTOR_STATUS_TYPE.NORMAL_EXPLORE;
     _InvokeStatusEvent();
 }
 private void _Cast(ACTOR_STATUS_TYPE actor_status_type)
 {
     if(_CastSkill != null)
         _CastSkill.Cast(actor_status_type);
 }
예제 #25
0
        public static SkillCaster Build(ACTOR_STATUS_TYPE type)
        {
            var skill = Resource.Instance.FindSkill(type);

            return(new SkillCaster(skill, new Determination(skill)));
        }
예제 #26
0
    private void _SetStatus(ACTOR_STATUS_TYPE status)
    {
        Status = status;

        if (Avatar != null)
        {
            if(Status == ACTOR_STATUS_TYPE.DAMAGE1)
                Avatar.SetTrigger(ACTOR_STATUS_TYPE.DAMAGE1.ToString());
            Avatar.SetInteger("Status", (int)Status);
            _BeginSpeed = Avatar.GetFloat("Speed");
            _EndSpeed = Speed;
            _SpeedStep = 0.0f;

            _BeginTrun = Avatar.GetFloat("Trun");

            _EndTrun = Trun > 0.0f
                ? 1
                : Trun < 0.0f
                    ? -1
                    : 0;
            _TrunStep = 0.0f;

            if (Status == ACTOR_STATUS_TYPE.CHEST_OPEN)
            {
                Avatar.SetBool("Open", true);
            }
            else if (Status == ACTOR_STATUS_TYPE.NORMAL_IDLE && Speed == 0.0f)
            {
                ResetLongIdle();
            }
        }
    }
예제 #27
0
 public void Stun()
 {
     _Speed = 0.0f;
     _Trun = 0.0f;
     _Status = ACTOR_STATUS_TYPE.STUN;
     _InvokeStatusEvent();
 }
        void ICastSkill.Cast(ACTOR_STATUS_TYPE skill)
        {
            if (_Overdraft)
                return;

            _NextCaster = _Caster.FindNext(skill);
        }
예제 #29
0
 public void Explore()
 {
     _Status = ACTOR_STATUS_TYPE.NORMAL_EXPLORE;
     _InvokeStatusEvent();
 }
예제 #30
0
 public void Damage()
 {
     _Speed = 0.0f;
     _Trun = 0.0f;
     _Status = ACTOR_STATUS_TYPE.DAMAGE1;
     _InvokeStatusEvent();
 }
 private TICKRESULT _UseSkill(ACTOR_STATUS_TYPE skill)
 {
     if (_CastSkill != null)
     {
         _CastSkill.Cast(skill);
         return TICKRESULT.SUCCESS;
     }
     return TICKRESULT.FAILURE;
 }
예제 #32
0
 public void Normal()
 {
     _Status = ACTOR_STATUS_TYPE.NORMAL_IDLE;
     Stop();
 }
 private void _AddSkills(ACTOR_STATUS_TYPE[] obj)
 {
     _UsableSkills.AddRange(obj);
 }
예제 #34
0
 public void CastBegin(ACTOR_STATUS_TYPE id)
 {
     _Cast(id);
 }
        private TICKRESULT _FindSkill(ref ACTOR_STATUS_TYPE skill, ref float distance)
        {
            var strength = _Entiry.GetStrength();
            if (strength < 0)
                return TICKRESULT.FAILURE;
            var len = _UsableSkills.Count;
            if(len == 0)
                return TICKRESULT.FAILURE;
            var index = Regulus.Utility.Random.Instance.NextInt(0, len);

            skill = _UsableSkills[index];
            distance = 1f;
            if (skill == ACTOR_STATUS_TYPE.BATTLE_AXE_ATTACK1 ||
                skill == ACTOR_STATUS_TYPE.BATTLE_AXE_ATTACK2
                )
            {
                distance = 1.3f;
            }
            else if (skill == ACTOR_STATUS_TYPE.BATTLE_AXE_BLOCK)
            {
                distance = 3f;
            }
            else if (skill == ACTOR_STATUS_TYPE.CLAYMORE_ATTACK1)
            {
                distance = 3f;
            }

            return TICKRESULT.SUCCESS;
        }
예제 #36
0
 public void CastEnd(ACTOR_STATUS_TYPE id)
 {
 }
예제 #37
0
 public void Normal()
 {
     _Status = ACTOR_STATUS_TYPE.NORMAL_IDLE;
     Stop();
 }
예제 #38
0
 public void Aid()
 {
     _Speed = 0.0f;
     _Trun = 0.0f;
     _Status = ACTOR_STATUS_TYPE.AID;
     _InvokeStatusEvent();
 }
예제 #39
0
 public void Make()
 {
     _Speed = 0.0f;
     _Trun = 0.0f;
     _Status = ACTOR_STATUS_TYPE.MAKE;
     _InvokeStatusEvent();
 }
 private void _AddHitSkills(ACTOR_STATUS_TYPE[] skills)
 {
     foreach (var actorStatusType in skills)
     {
         _AddSkill(actorStatusType);
     }
     Menu.arrangeElements();
 }
예제 #41
0
        IEnumerable<Item> IIndividual.Stolen(Guid id)
        {
            if (_SignRoster.Sign(id) == false)
            {
                return new Item[0];
            }
            if (_EntityType == ENTITY.DEBIRS)
            {
                var unlockSuccess = Regulus.Utility.Random.Instance.NextFloat() > 0.3f;
                if(UnlockEvent != null)
                    UnlockEvent(unlockSuccess);

                if (unlockSuccess == false)
                {
                    return new Item[0];
                }

                _Status = ACTOR_STATUS_TYPE.CHEST_OPEN;
                _InvokeStatusEvent();
            }

            if (Bag.Any())
            {
                var items = Bag.Shuffle().Take(1).ToArray();
                Bag.Remove(items);
                if (_TheftEvent != null)
                    _TheftEvent(id, items);

                return items;
            }

            return new Item[0];
        }
예제 #42
0
 public SkillData FindSkill(ACTOR_STATUS_TYPE name)
 {
     return((from e in this.SkillDatas where e.Id == name select e).Single());
 }
예제 #43
0
        private Entity()
        {
            _Datas = Resource.Instance.SkillDatas;

            this._Id = Guid.NewGuid();
            this._BaseView = 30.0f;
            _DetectionRange = 1.0f ;

            _SignRoster = new SignRoster();
            _CollideTargets = new DifferenceNoticer<IIndividual>();

            _SkillOffsetVector = new Vector2();

            _BaseSpeed = 1.0f;
            _MaxHealth = 10f;

            Equipment = new Equipment(this);
            Equipment.AddEvent += _BroadcastEquipEvent;
            Equipment.RemoveEvent += _BroadcastEquipEvent;

            _Status = ACTOR_STATUS_TYPE.NORMAL_IDLE;
        }