Exemplo n.º 1
0
        private GameObject CreateCard(TimelineSerializableData item)
        {
            GameObject turnCard;

            if (BattleDictionary.IsActor(item.uniqId))
            {
                turnCard = Object.Instantiate((GameObject)Resources.Load("Prefabs/Battle/TurnCard"),
                                              Vector3.zero, Quaternion.identity, GameObject.Find("Timeline/TurnCards").transform);
            }
            else
            {
                turnCard = Object.Instantiate((GameObject)Resources.Load("Prefabs/Battle/EnemyTurnCard"),
                                              Vector3.zero, Quaternion.identity, GameObject.Find("Timeline/TurnCards").transform);
            }
            GameObject          battlerImage = turnCard.transform.Find("Mask/BattlerImage").gameObject;
            string              monsterId    = BattlerDictionary.GetBattlerByUniqId(item.uniqId).monsterId;
            MonsterSerializable monster      = MonsterDicionary.GetMonsterData(monsterId);
            var sprite = Resources.Load <Sprite>(monster.imageData.spritePath);
            //Sprite sprite = AssetDatabase.LoadAssetAtPath<Sprite>(monster.imageData.spritePath);
            var image = battlerImage.GetComponent <Image>();

            image.sprite = sprite;
            battlerImage.GetComponent <RectTransform>().sizeDelta =
                new Vector3(sprite.rect.width, sprite.rect.height);
            battlerImage.GetComponent <RectTransform>().localPosition = new Vector3(monster.imageData.timelineCard.x,
                                                                                    monster.imageData.timelineCard.y, 0);
            battlerImage.GetComponent <RectTransform>().localScale =
                new Vector3(monster.imageData.timelineCard.scaleX, monster.imageData.timelineCard.scaleY, 0);
            _turnCards.Add(new TimelineViewStruct()
            {
                Card = turnCard,
                Id   = item.id
            });
            return(turnCard);
        }
Exemplo n.º 2
0
        /// <summary>
        /// モンスターからドロップを抽選する
        /// </summary>
        /// <param name="monsterId"></param>
        /// <returns></returns>
        public static List <LootItemStruct> MonsterLootChoice(string monsterId)
        {
            var monsterData = MonsterDicionary.GetMonsterData(monsterId);
            //ドロップアイテムを抽選する
            var drops = DropLottery(monsterData.drops);

            return(drops);
        }
Exemplo n.º 3
0
        public void Refresh(BattlerSerializable battler)
        {
            monsterName.GetComponent <TextMeshProUGUI>().text = battler.name;
            var sprite = MonsterDicionary.GetSprite(battler.monsterId);

            monsterImage.GetComponent <Image>().sprite         = sprite;
            monsterLevel.GetComponent <TextMeshProUGUI>().text = "レベル " + battler.level;
            CreateStatusContent(battler);
        }
        private SpriteRenderer CreateSprite(GameObject targetObject, string monsterId)
        {
            var monsterData    = MonsterDicionary.GetMonsterData(monsterId);
            var spriteRenderer = targetObject.AddComponent <SpriteRenderer>();

            spriteRenderer.sprite       = MonsterDicionary.GetSprite(monsterId);
            spriteRenderer.material     = Resources.Load("Material/AllinDefaultMaterials", typeof(Material)) as Material;
            spriteRenderer.sortingOrder = 2;
            return(spriteRenderer);
        }
        private void CreateMemberSprite()
        {
            var actorsTransformParent = GameObject.Find("Actors");
            var members    = MemberDataModel.Instance.GetActorData();
            var memberSize = members.Count;

            foreach (var(battler, index) in members.Select((battler, index) => (battler, index)))
            {
                var        monsterData    = MonsterDicionary.GetMonsterData(battler.monsterId);
                GameObject memberObject   = new GameObject();
                var        spriteRenderer = CreateSprite(memberObject, battler.monsterId);
                var        padding        = 16 / memberSize;
                var        posX           = (padding * index) - (padding * (memberSize - 1) / 2) - (0.5f * memberSize);
                memberObject.transform.position = new Vector3(posX, -1.9f, 0);
                if (monsterData.imageData.actorScale != 0)
                {
                    memberObject.transform.localScale = new Vector3(monsterData.imageData.actorScale,
                                                                    monsterData.imageData.actorScale, 1);
                }

                memberObject.transform.SetParent(actorsTransformParent.transform, false);
                memberObject.AddComponent <BoxCollider2D>();
                var ui = Object.Instantiate(
                    (GameObject)Resources.Load("Prefabs/Battle/MemberInfo"), memberObject.transform.position, Quaternion.identity,
                    GameObject.Find("FrontCanvas/EnemiesInfo").transform
                    );
                var uiStruct = new UiStruct
                {
                    UiParent = ui.transform,
                    HpBar    = ui.transform.Find("HPBar"),
                    HpText   = ui.transform.Find("HPBar/ValueText"),
                    MpBar    = ui.transform.Find("MPBar"),
                    MpText   = ui.transform.Find("MPBar/ValueText")
                };
                uiStruct.HpText.GetComponent <TextMeshProUGUI>().SetText(battler.parameter.hp.ToString());
                uiStruct.MpText.GetComponent <TextMeshProUGUI>().SetText(battler.parameter.mp.ToString());
                float rate = (float)battler.parameter.hp / battler.parameter.maxHp;
                uiStruct.HpBar.GetComponent <Slider>().value = rate;
                rate = (float)battler.parameter.mp / battler.parameter.maxMp;
                uiStruct.MpBar.GetComponent <Slider>().value = rate;
                _sprites.Add(new BattlerSpriteStruct()
                {
                    UniqId                = battler.uniqId,
                    SpriteObject          = memberObject.transform,
                    SpriteRenderer        = spriteRenderer,
                    MaterialPropertyBlock = new MaterialPropertyBlock(),
                    Ui = uiStruct,
                    StatusTransform = ui.transform.Find("Status"),
                    Statuses        = new List <StateStruct>()
                });
            }
        }
Exemplo n.º 6
0
        /// <summary>
        /// スキルの習得
        /// </summary>
        /// <param name="battler"></param>
        /// <returns></returns>
        public static List <string> SkillLearning(BattlerSerializable battler)
        {
            var monster = MonsterDicionary.GetMonsterData(battler.monsterId);
            int level   = battler.level;

            if (battler.learning.Contains(SkillIds.ATTACK) == false)
            {
                battler.learning.Add(SkillIds.ATTACK);
            }
            monster.learning.ForEach(x =>
            {
                if (level >= x.learnLevel)
                {
                    if (battler.learning.Contains(x.skillId) == false)
                    {
                        battler.learning.Add(x.skillId);
                    }
                }
            });
            return(battler.learning);
        }
Exemplo n.º 7
0
        /// <summary>
        /// バトラーを作成する
        /// </summary>
        /// <param name="monsterId"></param>
        /// <param name="level"></param>
        public static BattlerSerializable Create(string monsterId, int level = 1)
        {
            MonsterSerializable monster = MonsterDicionary.GetMonsterData(monsterId);
            BattlerSerializable battler = new BattlerSerializable();

            battler.level     = level;
            battler.monsterId = monsterId;
            battler.name      = monster.data.name;
            battler.potential = monster.potential;
            battler.parameter = CalcParameter(monster, level);
            LevelUp(level, battler);
            battler.learning   = new List <string>();
            battler.learning   = SkillLearning(battler);
            battler.skills     = new List <string>();
            battler.skills     = AllSkillEquipment(battler);
            battler.resistRate = new BattlerSerializableResistRate();
            battler.status     = new List <BattlerSerializableStatus>();
            battler.ai         = monster.ai;
            battler.uniqId     = CreateUniqId();

            return(battler);
        }
Exemplo n.º 8
0
        /// <summary>
        /// 経験値追加
        /// TODO 使わないので仕様をfixしたら消す
        /// </summary>
        /// <param name="addExp"></param>
        /// <returns></returns>
        private AsyncSubject <Unit> AddExp(int addExp)
        {
            AsyncSubject <Unit> subject = new AsyncSubject <Unit>();

            _itemTransform.GetComponent <CanvasGroup>()
            .DOFade(0, 0.2f).Play();
            _actorTransform.GetComponent <CanvasGroup>().DOFade(1, 0.2f).Play();

            var actors = MemberDataModel.Instance.GetActorData();

            var maxDuration = 0f;

            actors.ForEach(actor =>
            {
                var duration = GetAddExpDuration(actor, addExp);
                if (duration > maxDuration)
                {
                    maxDuration = duration;
                }
            });

            var countUp = 0;

            DOVirtual.Float(0, 1, maxDuration, value =>
            {
                countUp++;
                if (countUp > 10)
                {
                    countUp = 0;
                    //TODO SEないほうがいいかも
                    //PlaySe.GetInstance().Play("SE/GaugeUp", 0.4f);
                }
            }).SetEase(Ease.InQuad).Play();
            actors.ForEach(actor =>
            {
                var actorObject = Object.Instantiate((GameObject)Resources.Load("Prefabs/GUI/ResultActor"),
                                                     Vector3.zero, Quaternion.identity, _actorTransform);
                var image    = actorObject.transform.Find("Image").GetComponent <Image>();
                image.sprite =
                    MonsterDicionary.GetSprite(actor.monsterId);
                image.GetComponent <RectTransform>().localScale = MonsterDicionary.GetScale(actor.monsterId);
                image.SetNativeSize();
                var bar         = actorObject.transform.Find("ExpBar").GetComponent <Slider>();
                bar.value       = (float)actor.hasExp / actor.needExp;
                var needExpText = actorObject.transform.Find("ExpBar/ExpText/Exp/NeedExpText")
                                  .GetComponent <TextMeshProUGUI>();
                needExpText.text = $"/{actor.needExp.ToString()}";
                var hasExpText   = actorObject.transform.Find("ExpBar/ExpText/Exp/HasExpText")
                                   .GetComponent <TextMeshProUGUI>();
                hasExpText.text = actor.hasExp.ToString();
                var addExpText  = actorObject.transform.Find("ExpBar/AddExpText").GetComponent <TextMeshProUGUI>();
                addExpText.text = $"+{addExp}";
                var levelText   = actorObject.transform.Find("ExpBar/LvText/Level").GetComponent <TextMeshProUGUI>();
                levelText.text  = actor.level.ToString();

                // TODO
                float virtualHasExp  = actor.hasExp;
                float virtualNeedExp = actor.needExp;
                int virtualLevel     = actor.level;
                var currentValue     = 0f;
                var duration         = GetAddExpDuration(actor, addExp);
                DOVirtual.Float(0, addExp, duration, value =>
                {
                    var addValue   = value - currentValue;
                    currentValue   = value;
                    virtualHasExp += addValue;
                    if (virtualHasExp >= virtualNeedExp)
                    {
                        virtualHasExp -= virtualNeedExp;
                        virtualLevel++;
                        virtualNeedExp   = ActorLogic.CalcNeedExp(actor.monsterId, virtualLevel);
                        needExpText.text = $"/{((int) virtualNeedExp).ToString()}";
                        levelText.text   = virtualLevel.ToString();
                        LevelUpPopUp(actorObject.transform);
                        PlaySe.GetInstance().Play("SE/LevelUp");
                    }

                    hasExpText.text = ((int)virtualHasExp).ToString();
                    bar.value       = virtualHasExp / virtualNeedExp;
                }).SetEase(Ease.InQuad).Play();
            });
            return(subject);
        }
Exemplo n.º 9
0
 public static int CalcNeedExp(string monsterId, int level)
 {
     return((int)Math.Pow(MonsterDicionary.GetMonsterData(monsterId).data.needExp *level, (float)level / 10));
 }
Exemplo n.º 10
0
        public static BattlerSerializable Create(string monsterId, int level = 1)
        {
            string name = MonsterDicionary.GetMonsterData(monsterId).data.name;

            return(Create(monsterId, name, level));
        }