Ejemplo n.º 1
0
        private Level Modifiy(Level before, Level after, MonsterProperty property)
        {
            switch (after)
            {
            case Level.Few when before == Level.Medium:
                Modify(MutateResult.Decrease, property);
                break;

            case Level.Few when before == Level.Many:
                Modify(MutateResult.DecreaseMany, property);
                break;

            case Level.Medium when before == Level.Many:
                Modify(MutateResult.Increase, property);
                break;

            case Level.Medium when before == Level.Few:
                Modify(MutateResult.DecreaseMany, property);
                break;

            case Level.Many when before == Level.Medium:
                Modify(MutateResult.Increase, property);
                break;

            case Level.Many when before == Level.Few:
                Modify(MutateResult.IncreaseMany, property);
                break;
            }

            return(after);
        }
Ejemplo n.º 2
0
 public CharacterStatus(MonsterProperty property)
 {
     m_hp      = property.hp;
     m_attack  = property.attack;
     m_defence = property.defence;
     m_speed   = property.speed;
 }
Ejemplo n.º 3
0
    public void UpdateData(CopyMonsterData.MonsterData data)
    {
        // nameText.Text = "";
        // avatar.PlayAnim("");

        property = gameObject.GetComponent <MonsterProperty>() as MonsterProperty;
        if (null == property)
        {
            property = gameObject.AddComponent <MonsterProperty>() as MonsterProperty;
        }

        property.FleetID    = data.FleetID;
        property.Name       = data.MonsterName;
        property.DialogText = data.MonsterDialog;
        property.ModelName  = data.ModelName;

        nameText.Text = property.Name;
        avatar.PlayAnim(property.ModelName);

        BattleTrigger btTrigger = gameObject.GetComponent <BattleTrigger>() as BattleTrigger;

        if (null == btTrigger)
        {
            btTrigger = gameObject.AddComponent <BattleTrigger>() as BattleTrigger;
        }

        btTrigger.BoxSize = new Vector3(avatar.width, avatar.height, 1.0f);

        btTrigger.TriggerEnterEvents += GameStatusManager.Instance.MCopyStatus.OnRequestBattle;
    }
Ejemplo n.º 4
0
        public void Mutate(Knowledge newVal, MonsterProperty property)
        {
            switch (property)
            {
            case MonsterProperty.KnowledgeGroup:
                switch (newVal)
                {
                case Knowledge.Strength:
                    Modifiers.Add("Спортивного");
                    break;

                case Knowledge.Intelligence:
                    Modifiers.Add("Магического");
                    break;

                default:
                    throw new ArgumentOutOfRangeException(nameof(newVal), newVal, null);
                }

                break;

            case MonsterProperty.Artifact:
            case MonsterProperty.DefenceLevel:
            case MonsterProperty.KnowledgeLevel:
            case MonsterProperty.Gold:
            case MonsterProperty.Damage:
            case MonsterProperty.Health:
                throw new ArgumentException($"Cannot set bool to {property}", nameof(property));

            default:
                throw new ArgumentOutOfRangeException(nameof(property), property, null);
            }
        }
Ejemplo n.º 5
0
 /* 加载当前关卡信息  GameRunning.cs调用
  * param[check_point]:当前关卡数
  */
 private void LoadCurrentCheckPointMessage(MonsterProperty mp)
 {
     mp.speed *= GameRunning.EnlargRatio;
     current   = mp;
     origin    = mp;
     SetSpeed();
 }
Ejemplo n.º 6
0
 //GameRunning.cs调用
 private void SetMonsterProperties(MonsterProperty arg)
 {
     SetHitpoint(arg.hit_point);
     SetDefensePoint(arg.defense_point);
     SetSpeed(arg.speed);
     SetArmorType(arg.armor_type);
 }
Ejemplo n.º 7
0
        public void Mutate(bool newVal, MonsterProperty property)
        {
            switch (property)
            {
            case MonsterProperty.Artifact:
            {
                switch (newVal)
                {
                case true when !Artifact:
                    Modify(MutateResult.Increase, MonsterProperty.Artifact);
                    break;

                case false when Artifact:
                    Modify(MutateResult.Decrease, MonsterProperty.Artifact);
                    break;
                }

                Artifact = newVal;

                break;
            }

            case MonsterProperty.DefenceLevel:
            case MonsterProperty.KnowledgeLevel:
            case MonsterProperty.KnowledgeGroup:
            case MonsterProperty.Gold:
            case MonsterProperty.Damage:
            case MonsterProperty.Health:
                throw new ArgumentException($"Cannot set bool to {property}", nameof(property));

            default:
                throw new ArgumentOutOfRangeException(nameof(property), property, null);
            }
        }
Ejemplo n.º 8
0
        public void Mutate(Level newVal, MonsterProperty property)
        {
            switch (property)
            {
            case MonsterProperty.Gold:
                Gold = Modifiy(Gold, newVal, property);
                break;

            case MonsterProperty.KnowledgeLevel:
                KnowledgeLevel = Modifiy(KnowledgeLevel, newVal, property);
                break;

            case MonsterProperty.DefenceLevel:
                Defence = Modifiy(Defence, newVal, property);
                break;

            case MonsterProperty.Damage:
            case MonsterProperty.Health:
            case MonsterProperty.KnowledgeGroup:
            case MonsterProperty.Artifact:
                throw new ArgumentException($"Cannot set Level to {property}", nameof(property));

            default:
                throw new ArgumentOutOfRangeException(nameof(property), property, null);
            }
        }
Ejemplo n.º 9
0
        private decimal Modify(decimal before, decimal after, MonsterProperty property)
        {
            // 0%-15% -- Same
            // 15% - 30% -- Different
            // 30% -- 50% -- Very different

            var diff = after / before - 1;
            var abs  = Math.Abs(diff);

            if (abs > 0.3M)
            {
                // Very differnet
                Modify(diff > 0
                    ? MutateResult.IncreaseMany
                    : MutateResult.DecreaseMany, property);
            }
            else if (abs > 0.15M)
            {
                // Different
                Modify(diff > 0
                    ? MutateResult.Increase
                    : MutateResult.Decrease, property);
            }

            return(after);
        }
Ejemplo n.º 10
0
    internal override void OnInitialize(params object[] parameters)
    {
        int             monsterID = (int)parameters[0];
        MonsterProperty property  = MonsterTable.GetProperty(monsterID);

        SetInfo(property);
    }
Ejemplo n.º 11
0
    //产生怪物
    private IEnumerator AttackOnMonster()
    {
        xml.Open(check_point_data);
        //先加载开始信息
        xml.BeginParentNode("start_setting");
        Gold_Text.text     = xml.GetValue("coin");
        HPNumber_Text.text = xml.GetValue("hp");
        xml.EndParentNode();

        LinkedList <string> cp = xml.GetChildren();
        float   small          = LocalMessage.grid.width > LocalMessage.grid.height ? LocalMessage.grid.height : LocalMessage.grid.width;
        Vector3 scale          = new Vector3(small, small, small);

        for (current_check_point = 1; current_check_point <= cp.Count - 1; current_check_point++)
        {
            ushort new_type = 0;
            //获取下一关的护甲
            if (xml.HasNode("number_" + (current_check_point + 1).ToString()))
            {
                xml.BeginParentNode("number_" + (current_check_point + 1).ToString());
                new_type = ushort.Parse(xml.GetValue(DEFENSE_TYPE));
                xml.EndParentNode();
            }
            //先加载准备时间
            xml.BeginParentNode("number_" + current_check_point.ToString());
            int ready_time = int.Parse(xml.GetValue(READY_TIME));
            for (; ready_time > 0; ready_time--)
            {
                Timer.text = ready_time.ToString();
                yield return(new WaitForSeconds(1));
            }
            Timer.text           = "0";
            CheckPoint_Text.text = current_check_point.ToString();
            //准备时间结束,产生怪物
            string          defense_type = Armor[byte.Parse(xml.GetValue(DEFENSE_TYPE))];
            int             amount       = int.Parse(xml.GetValue(AMOUNT));
            MonsterProperty temp_mp      = new MonsterProperty().ParseArmorType(xml.GetValue(DEFENSE_TYPE))
                                           .ParseBonus(xml.GetValue(BONUS)).ParseDefensePoint(xml.GetValue(DEFENSE_POINT))
                                           .ParseHipPoint(xml.GetValue(HIT_POINT)).ParseSpeed(xml.GetValue(MOVE_SPEED));
            MonsterInfoPanel.SendMessage("SetMonsterProperties", temp_mp);         //MonsterInfo.cs
            MonsterInfoPanel.SendMessage("SetNextArmorType", new_type);            //MonsterInfo.cs
            float interval_time = float.Parse(xml.GetValue(INTERVAL_TIME)) / 1000;
            for (; amount > 0; amount--)
            {
                CreateMonster("Monster/" + defense_type, temp_mp, scale);
                yield return(new WaitForSeconds(interval_time));
            }
            //如果是boss关卡,则产生一个BOSS
            if (byte.Parse(xml.GetValue(BOSS_CHECK_POINT)) == 1)
            {
                temp_mp = new MonsterProperty().ParseArmorType(xml.GetValue(BOSS_DEFENSE_TYPE))
                          .ParseBonus(xml.GetValue(BOSS_BONUS)).ParseDefensePoint(xml.GetValue(BOSS_DEFENSE_POINT))
                          .ParseHipPoint(xml.GetValue(BOSS_HIP_POINT)).ParseSpeed(xml.GetValue(BOSS_MOVE_SPEED));
                CreateMonster("BOSS/BOSS" + current_check_point.ToString(), temp_mp, scale);
            }
            xml.EndParentNode();
        }
        xml.Close();
    }
Ejemplo n.º 12
0
 private void Awake()
 {
     _monsterCtrl     = GetComponentInParent <MonsterCtrl>();
     _monsterProperty = new MonsterProperty
     {
         Hp     = 100,
         Damage = 5,
     };
 }
Ejemplo n.º 13
0
    private void CreateMonster(string monster, MonsterProperty message, Vector3 scale)
    {
        GameObject go = (GameObject)Instantiate(Resources.Load("Prefabs/" + monster));

        go.transform.SetParent(MapPanel.transform);
        UIFunction.SetScale(go, scale);
        go.SetActive(true);
        go.SendMessage("SetMessageReceiver", gameObject);        //MoveRoute.cs
        go.SendMessage("LoadCurrentCheckPointMessage", message); //MonsterProperties.cs
    }
Ejemplo n.º 14
0
    public static MonsterProperty GetProperty(int id)
    {
        MonsterProperty property = s_datas.Find(rhs => rhs.id == id);

        if (null == property)
        {
            UnityEngine.Debug.Log("찾으려는 Data가 존재하지 않습니다.");
            return(null);
        }

        return(property);
    }
Ejemplo n.º 15
0
        private int GetIndex(MonsterProperty monsterProperty)
        {
            Type t = monsterProperty.GetType();

            if (t.Name == "DiffEasy" || t.Name == "RankUnranked")
            {
                return(0);
            }
            if (t.Name == "DiffNormal" || t.Name == "RankMiniboss")
            {
                return(1);
            }
            if (t.Name == "DiffTough" || t.Name == "RankBoss")
            {
                return(2);
            }
            return(0);            // if all else fails
        }
Ejemplo n.º 16
0
        private static void Mutate(RaceStats stats, MonsterProperty property, Random random)
        {
            switch (property)
            {
            case MonsterProperty.Artifact:
            {
                stats.Mutate(random.NextDouble() < 0.5, property);
                break;
            }

            case MonsterProperty.DefenceLevel:
            case MonsterProperty.KnowledgeLevel:
            case MonsterProperty.Gold:
            {
                stats.Mutate((Level)random.Next(0, 3), property);
                break;
            }

            case MonsterProperty.KnowledgeGroup:
            {
                stats.Mutate((Knowledge)random.Next(0, 2), property);
                break;
            }

            case MonsterProperty.Damage:
            {
                stats.Mutate(stats.Damage * ((decimal)random.NextDouble() - 0.5M + 1), property);
                break;
            }

            case MonsterProperty.Health:
            {
                stats.Mutate(stats.Health * ((decimal)random.NextDouble() - 0.5M + 1), property);
                break;
            }

            default:
            {
                throw new ArgumentOutOfRangeException(nameof(property), property, null);
            }
            }
        }
Ejemplo n.º 17
0
    public void Start()
    {
        for (int i = 0; i < m_monsterIDs.Count; ++i)
        {
            MonsterProperty property = MonsterTable.GetProperty(m_monsterIDs[i]);

            if (null == property)
            {
                return;
            }

            CharacterBase result    = AssetManager.Instance.Character.Retrieve(property.prefabName, m_monsterIDs[i]);
            float         randomPos = Random.Range(-2.0f, 2.0f);
            Vector3       initPos   = this.transform.position;
            initPos.x += randomPos;
            initPos.z += randomPos;

            result.transform.position = initPos;

            IngameManager.Instance.EnemyRegister(result as Enemy);
        }
    }
Ejemplo n.º 18
0
        public void Mutate(decimal newVal, MonsterProperty property)
        {
            switch (property)
            {
            case MonsterProperty.Damage:
                Damage = Modify(Damage, newVal, property);
                break;

            case MonsterProperty.Health:
                Health = Modify(Health, newVal, property);
                break;

            case MonsterProperty.Artifact:
            case MonsterProperty.DefenceLevel:
            case MonsterProperty.KnowledgeLevel:
            case MonsterProperty.KnowledgeGroup:
            case MonsterProperty.Gold:
                throw new ArgumentException($"Cannot set decimal to {property}", nameof(property));

            default:
                throw new ArgumentOutOfRangeException(nameof(property), property, null);
            }
        }
Ejemplo n.º 19
0
        public void AddProperty(MonsterProperty p)
        {
            bool validToAdd = true;

            //validate the property to make sure we're not adding
            //a second instance of a unique property.
            if (p.Unique())
            {
                Type pType = p.GetType();
                Type compareType;
                //make sure we don't already have an instance of p
                foreach (MonsterProperty compare in properties)
                {
                    compareType = compare.GetType();
                    if (compareType == pType)
                    {
                        p.Complain(3);
                        validToAdd = false;
                    }
                }
            }
            if (validToAdd)
            {
                if (p.Prepare(this))
                {
                    if (slotsUsed + p.SlotCost() > slots)
                    {
                        p.Complain(4);
                    }
                    else
                    {
                        properties.Add(p);
                        properties.Sort();
                    }
                }
            }
        }
Ejemplo n.º 20
0
 private void delPropButton_Click(object sender, EventArgs e)
 {
     monster.RemoveProperty(selectedProperty);
     selectedProperty = new NullProperty();
     this.UpdateData();
 }
Ejemplo n.º 21
0
 public void AddProperty(MonsterProperty p)
 {
     bool validToAdd = true;
     //validate the property to make sure we're not adding
     //a second instance of a unique property.
     if (p.Unique())
     {
         Type pType = p.GetType();
         Type compareType;
         //make sure we don't already have an instance of p
         foreach (MonsterProperty compare in properties)
         {
             compareType = compare.GetType();
             if (compareType == pType)
             {
                 p.Complain(3);
                 validToAdd = false;
             }
         }
     }
     if (validToAdd)
     {
         if (p.Prepare(this))
         {
             if (slotsUsed + p.SlotCost() > slots)
             {
                 p.Complain(4);
             }
             else
             {
                 properties.Add(p);
                 properties.Sort();
             }
         }
     }
 }
Ejemplo n.º 22
0
 set => this.SetValue(MonsterProperty, value);
Ejemplo n.º 23
0
 public void RemoveProperty(MonsterProperty p)
 {
     properties.Remove(p);
 }
Ejemplo n.º 24
0
 private void propsListBox_SelectedIndexChanged(object sender, EventArgs e)
 {
     selectedProperty = (MonsterProperty)propsListBox.SelectedItem;
     editPropButton.Enabled = selectedProperty.IsEditable();
 }
Ejemplo n.º 25
0
 public void RemoveProperty(MonsterProperty p)
 {
     properties.Remove(p);
 }
Ejemplo n.º 26
0
 private void Modify(MutateResult mutate, MonsterProperty property)
 {
     Modifiers.Add(_modifiers[property][mutate]);
 }
Ejemplo n.º 27
0
 private int GetIndex(MonsterProperty monsterProperty)
 {
     Type t = monsterProperty.GetType();
     if (t.Name == "DiffEasy" || t.Name == "RankUnranked")
     {
         return 0;
     }
     if (t.Name == "DiffNormal" || t.Name == "RankMiniboss")
     {
         return 1;
     }
     if (t.Name == "DiffTough" || t.Name == "RankBoss")
     {
         return 2;
     }
     return 0; // if all else fails
 }
Ejemplo n.º 28
0
 private void propsListBox_SelectedIndexChanged(object sender, EventArgs e)
 {
     selectedProperty       = (MonsterProperty)propsListBox.SelectedItem;
     editPropButton.Enabled = selectedProperty.IsEditable();
 }
Ejemplo n.º 29
0
 protected void SetInfo(MonsterProperty property)
 {
     m_name   = property.name;
     m_status = new CharacterStatus(property);
 }
Ejemplo n.º 30
0
 private void delPropButton_Click(object sender, EventArgs e)
 {
     monster.RemoveProperty(selectedProperty);
     selectedProperty = new NullProperty();
     this.UpdateData();
 }