コード例 #1
0
    private void CreateCard()
    {
        if (entryType != null && entryAmount != 0)
        {
            manaTypes.Add(entryType);
            amounts.Add(entryAmount);

            entryType   = null;
            entryAmount = 0;
        }

        if (selected == 0)
        {
            return;
        }
        else if (selected == 1)
        {
            CreateCostly();
        }
        else if (selected == 2)
        {
            CreateCommander();
        }
        else if (selected == 3)
        {
            CreateUnit();
        }

        AssetDatabase.CreateAsset(gO, "Assets/Cards/" + cardName + ".asset");

        ClearEntryVariables();
    }
コード例 #2
0
    private void DisplayManaAmountEntryForm()
    {
        if (amounts.Count > 0 && manaTypes.Count > 0)
        {
            for (int i = 0; i < manaTypes.Count; i++)
            {
                EditorGUI.indentLevel = 2;
                GUILayout.BeginHorizontal(GUILayout.Width(entryAreaWidth));
                manaTypes[i] = (ManaType)EditorGUILayout.ObjectField(manaTypes[i], typeof(ManaType), false);
                amounts[i]   = EditorGUILayout.IntField(amounts[i]);
                GUILayout.EndHorizontal();
            }
        }

        EditorGUI.indentLevel = 2;
        GUILayout.BeginHorizontal(GUILayout.Width(entryAreaWidth + buttonWidth));
        entryType   = (ManaType)EditorGUILayout.ObjectField(entryType, typeof(ManaType), false);
        entryAmount = EditorGUILayout.IntField(entryAmount);
        if (GUILayout.Button(addManaCostButton, GUILayout.Width(buttonWidth)))
        {
            if (entryType != null && entryAmount != 0)
            {
                manaTypes.Add(entryType);
                amounts.Add(entryAmount);

                entryType   = null;
                entryAmount = 0;
            }
        }
        GUILayout.EndHorizontal();
    }
コード例 #3
0
 public void Add(ManaType type, int amount = 1, ManaRestriction restriction = null)
 {
     for (int i = 0; i < amount; i++)
     {
         this.ManaFragments.Add(ManaFragment.Get(type, restriction));
     }
 }
コード例 #4
0
 public GUITexture this[ManaType manatype]
 {
     get
     {
         return(this.manacrystals[(int)manatype]);
     }
 }
コード例 #5
0
 public GUITexture this[ManaType manatype]
 {
     get
     {
         return this.manacrystals[(int)manatype];
     }
 }
コード例 #6
0
    public static void ManaDictionaryField(string label, ManaValueDictionary dictionary)
    {
        if (dictionary == null)
        {
            dictionary = new ManaValueDictionary();
        }

        EditorGUILayout.LabelField(label);
        if (dictionary.Count > 0)
        {
            for (int i = 0; i < dictionary.Count; i++)
            {
                EditorGUI.indentLevel += 1;
                GUILayout.BeginHorizontal();
                dictionary.FirstValues[i]  = (ManaType)EditorGUILayout.ObjectField(dictionary.FirstValues[i], typeof(ManaType), false);
                dictionary.SecondValues[i] = EditorGUILayout.IntField(dictionary.SecondValues[i]);
                GUILayout.EndHorizontal();
            }
        }

        GUILayout.BeginHorizontal();
        type   = (ManaType)EditorGUILayout.ObjectField(type, typeof(ManaType), false);
        amount = EditorGUILayout.IntField(amount);
        GUILayout.EndHorizontal();

        ShowButtons(dictionary);
    }
コード例 #7
0
            private void HeroEnter()
            {
                ManaType selfType = ((ManaItem)item).mType;

                ManaCollector.Instance.Add(selfType);
                //Logger.LogDebug("Eat a mana source");
                Destroy(gameObject);
            }
コード例 #8
0
ファイル: LiveCardData.cs プロジェクト: HR-Ince/r_Solitaire
 public void ModifyCost(ManaType type, int amount)
 {
     currentCost.Add(type, amount);
     if (OnValueChange != null)
     {
         OnValueChange.Invoke();
     }
 }
コード例 #9
0
            public static ManaActive Create(Transform parent, ManaType t, bool highlight = false)
            {
                var go = new GameObject("mana_active");

                go.AddComponent <ManaActive>().HandleMana(t, highlight);
                go.transform.SetParent(parent);
                go.transform.localPosition = Vector3.zero;
                go.transform.localScale    = Vector2.one;
                return(go.GetComponent <ManaActive>());
            }
コード例 #10
0
        private bool Cost(ManaType mType, int amount = 1)
        {
            if (amount < 0)
            {
                throw new ArgumentException();
            }
            else if (amount == 0)
            {
                return(true);
            }

            if (mType != ManaType.C)
            {
                if (mana_pool.TryGetValue(mType, out int n))
                {
                    if (n >= amount)
                    {
                        mana_pool[mType] = n - amount;
                        mana_sum        -= amount;
                        _remove_mana_go(mType, amount);
                        return(true);
                    }
                }
                return(false);
            }
            else // cost any color
            {
                if (mana_sum < amount)
                {
                    return(false);
                }
                else
                {
                    int remains = amount;
                    foreach (var k in mana_pool.Keys.ToArray())
                    {
                        if (mana_pool[k] < remains)
                        {
                            remains -= mana_pool[k];
                            _remove_mana_go(k, mana_pool[k]);
                            mana_pool[k] = 0;
                        }
                        else
                        {
                            mana_pool[k] -= remains;
                            _remove_mana_go(k, remains);
                            remains = 0;
                            break;
                        }
                    }
                    mana_sum -= amount;
                    return(true);
                }
            }
        }
コード例 #11
0
        public static ManaType?GetOpposite(this ManaType @this)
        {
            switch (@this)
            {
            case ManaType.Metal:
            case ManaType.Ice:
            case ManaType.Grey:
                return(null);

            case ManaType.Lightning:
                return(ManaType.Sand);

            case ManaType.Sand:
                return(ManaType.Light);

            case ManaType.Air:
                return(ManaType.Earth);

            case ManaType.Fire:
                return(ManaType.Water);

            case ManaType.Earth:
                return(ManaType.Air);

            case ManaType.Water:
                return(ManaType.Fire);

            case ManaType.Umbral:
                return(ManaType.Light);

            case ManaType.Light:
                return(ManaType.Umbral);

            case ManaType.Life:
                return(ManaType.Death);

            case ManaType.Death:
                return(ManaType.Life);

            case ManaType.Mental:
                return(ManaType.Perception);

            case ManaType.Perception:
                return(ManaType.Mental);

            case ManaType.Transference:
                return(ManaType.Enhancement);

            case ManaType.Enhancement:
                return(ManaType.Transference);

            default:
                throw new ArgumentOutOfRangeException(nameof(@this), @this, null);
            }
        }
コード例 #12
0
 public void HandleMana(ManaType t)
 {
     if (Sprites.TryGetValue(t, out var s))
     {
         sr.sprite = s;
     }
     else
     {
         Logger.LogError($"Sprites Contains {t} Key? {Sprites.ContainsKey(t)}");
     }
 }
コード例 #13
0
        public static ManaFragment Get(ManaType type, ManaRestriction restriction = null)
        {
            var          key = new Tuple <ManaType, ManaRestriction>(type, restriction);
            ManaFragment val;

            if (!_dict.TryGetValue(key, out val))
            {
                val        = new ManaFragment(type, restriction);
                _dict[key] = val;
            }
            return(val);
        }
コード例 #14
0
    private void SetDominantMana()
    {
        int i = 0;

        foreach (ManaType type in PlayerMana.FirstValues)
        {
            if (PlayerMana[type] > i)
            {
                DominantMana = type;
                i            = PlayerMana[type];
            }
        }
    }
コード例 #15
0
            public void HandleMana(ManaType t, bool highlight = false)
            {
                var dict = highlight ? SpritesHighlight : Sprites;

                if (dict.TryGetValue(t, out var s))
                {
                    sr.sprite = s;
                }
                else
                {
                    Logger.LogError($"Sprites Contains {t} Key? {Sprites.ContainsKey(t)}");
                }
                MType = t;
            }
コード例 #16
0
    private static void ShowButtons(ManaValueDictionary dictionary)
    {
        EditorGUILayout.BeginHorizontal();
        if (GUILayout.Button(addButtonContent, EditorStyles.miniButton, GUILayout.Width(buttonWidth)))
        {
            dictionary.Add(type, amount);

            type   = null;
            amount = 0;
        }
        if (GUILayout.Button(deleteButtonContent, EditorStyles.miniButton, GUILayout.Width(buttonWidth)))
        {
            dictionary.RemoveAt(dictionary.Count - 1);
        }
    }
コード例 #17
0
 private void ConvertStringToManaCost(String strCost, ref Dictionary <ManaType, int> mana)
 {
     for (ManaType type = ManaType.COMMON; type < ManaType.MANA_TYPE_MAX; ++type)
     {
         if (mana.ContainsKey(type) == true)
         {
             int value = mana[type];
             mana[type] = value + 1;
         }
         else
         {
             int cost = Int32.Parse(strCost.Substring((int)type, 1));
             if (cost != 0)
             {
                 mana.Add(type, cost);
             }
         }
     }
 }
コード例 #18
0
            private void Start()
            {
                string reqStr = ((ItemDef.ManaRequirement)item).Requires;

                if (!string.IsNullOrEmpty(reqStr))
                {
                    Dictionary <ManaType, int> r = new Dictionary <ManaType, int>();
                    try
                    {
                        for (int i = 0; i < reqStr.Length; i++)
                        {
                            char     c = reqStr[i];
                            ManaType t = (ManaType)Enum.Parse(typeof(ManaType), c.ToString());
                            if (r.ContainsKey(t))
                            {
                                r[t]++;
                            }
                            else
                            {
                                r.Add(t, 1);
                            }
                        }
                        require = r;
                    }
                    catch (Exception e)
                    {
                        Logger.LogError("ManaRequire Parse Error");
                        Logger.LogError(e);
                    }
                }
                else
                {
                    Logger.LogDebug("Not Set Requirement");
                }
                if (require == null)
                {
                    require = new Dictionary <ManaType, int> {
                        { ManaType.U, 2 }, { ManaType.G, 3 }, { ManaType.R, 1 }, { ManaType.C, 3 },
                    };
                    ((ItemDef.ManaRequirement)item).Requires = "UUGGGRCCC";
                }
                UpdateRequire();
            }
コード例 #19
0
        private void _remove_mana_go(ManaType t, int amount = 1)
        {
            List <Mana.ManaActive> toRemove = null;

            if (t != ManaType.C)
            {
                toRemove = manas.Where(x => (x != null && x.MType == t)).ToList();
            }
            else
            {
                toRemove = manas.Where(x => (x != null && x.MType != t)).ToList();
            }
            for (int i = 0; i < amount; i++)
            {
                //GameObject target = toRemove[0].gameObject;
                manas.Remove(toRemove[i]);
                toRemove[i].CostSelf();
                //toRemove.Remove(toRemove[0]);
            }
        }
コード例 #20
0
 public void Add(ManaType mType, int amount = 1)
 {
     if (amount < 0)
     {
         throw new ArgumentException();
     }
     if (mana_pool.TryGetValue(mType, out int n))
     {
         mana_pool[mType] = n + amount;
     }
     else
     {
         mana_pool.Add(mType, amount);
     }
     mana_sum += amount;
     for (int i = 0; i < amount; i++)
     {
         manas.Add(Mana.ManaActive.Create(gameObject.transform, mType));
     }
     Logger.LogDebug($"Mana Pool Add - {mType} amount:{amount}");
 }
コード例 #21
0
 private ManaFragment(ManaType type, ManaRestriction restriction)
 {
     this.ManaType        = type;
     this.ManaRestriction = restriction;
 }
コード例 #22
0
        private void ConvertStringListToManaCost(List <String> costList, ref Dictionary <ManaType, int> mana)
        {
            foreach (String str in costList)
            {
                String   strLower = str.ToLower();
                int      cost     = 1;
                ManaType type     = ManaType.MANA_TYPE_MAX;
                if (strLower == "white")
                {
                    type = ManaType.WHITE;
                }
                else if (strLower == "red")
                {
                    type = ManaType.RED;
                }
                else if (strLower == "blue")
                {
                    type = ManaType.BLUE;
                }
                else if (strLower == "green")
                {
                    type = ManaType.GREEN;
                }
                else if (strLower == "black")
                {
                    type = ManaType.BLACK;
                }
                else
                {
                    if (strLower == "white or red" || strLower == "red or white")
                    {
                        type = ManaType.WHITE_RED;
                    }
                    else if (strLower == "white or blue" || strLower == "blue or white")
                    {
                        type = ManaType.WHITE_BLUE;
                    }
                    else if (strLower == "white or green" || strLower == "green or white")
                    {
                        type = ManaType.WHITE_GREEN;
                    }
                    else if (strLower == "white or black" || strLower == "black or white")
                    {
                        type = ManaType.WHITE_BLACK;
                    }
                    else if (strLower == "blue or red" || strLower == "red or blue")
                    {
                        type = ManaType.RED_BLUE;
                    }
                    else if (strLower == "green or red" || strLower == "red or green")
                    {
                        type = ManaType.RED_GREEN;
                    }
                    else if (strLower == "red or black" || strLower == "black or red")
                    {
                        type = ManaType.RED_BLACK;
                    }
                    else if (strLower == "blue or green" || strLower == "green or blue")
                    {
                        type = ManaType.BLUE_GREEN;
                    }
                    else if (strLower == "blue or black" || strLower == "black or blue")
                    {
                        type = ManaType.BLUE_BLACK;
                    }
                    else if (strLower == "green or black" || strLower == "black or green")
                    {
                        type = ManaType.GREEN_BLACK;
                    }
                    else if (strLower == "variable colorless")
                    {
                        type = ManaType.COMMON_X;
                    }
                    else
                    {
                        type = ManaType.COMMON;
                        cost = Int32.Parse(str);
                    }
                }

                if (mana.ContainsKey(type) == true)
                {
                    int value = mana[type];
                    mana[type] = value + 1;
                }
                else
                {
                    mana.Add(type, cost);
                }
            }
        }
コード例 #23
0
        private string ParseServerActorListCBT1(Packet <int> p)
        {
            string parse = string.Empty;

            switch (p.ID)
            {
            case 0x03:
            {
                parse += string.Format("MapInstanceID:{0}\r\n", p.GetUInt(6));
                short count = p.GetShort(14);
                parse += string.Format("Count:{0}\r\n", count);
                for (int i = 0; i < count; i++)
                {
                    ulong actorID = p.GetULong();
                    if (actorID > 0x4000000000000)
                    {
                        p.GetBytes(5);
                        ushort npcID = Global.LittleToBigEndian(p.GetUShort());
                        p.GetBytes(11);
                        parse += string.Format("NPC ActorID:0x{0:X} NPCID:{1}\r\n", actorID, npcID);
                    }
                    else
                    {
                        Race   race   = (Race)p.GetByte();
                        Gender gender = (Gender)p.GetByte();
                        Job    job    = (Job)p.GetByte();
                        p.GetBytes(11);
                        string name = Encoding.Unicode.GetString(p.GetBytes((ushort)((p.GetUShort() + 1) * 2))).Trim('\0');
                        parse += string.Format("PC ActorID:0x{0:X} Race:{1} Gender:{2} Job:{3} Name:{4}\r\n", actorID, race, gender, job, name);
                    }
                }
            }
            break;

            case 0x04:
            {
                parse += string.Format("MapInstanceID:{0}\r\n", p.GetUInt(6));
                short count = p.GetShort(14);
                parse += string.Format("Count:{0}\r\n", count);
                for (int i = 0; i < count; i++)
                {
                    ulong  actorID = p.GetULong();
                    uint   mapID   = p.GetUInt();
                    ushort x       = p.GetUShort();
                    ushort y       = p.GetUShort();
                    ushort z       = p.GetUShort();
                    ushort dir     = p.GetUShort();
                    byte   level   = p.GetByte();
                    p.GetInt();
                    int hp = p.GetInt();
                    int mp = p.GetInt();
                    p.GetUShort();
                    ManaType mana = (ManaType)p.GetInt();
                    p.GetBytes(61);
                    byte   friendly = p.GetByte();
                    int    maxHP    = p.GetInt();
                    ushort maxMP    = p.GetUShort();
                    if (actorID > 0x4000000000000)
                    {
                        p.GetBytes(9);
                        int motion = p.GetInt();
                        p.GetBytes(26);
                        parse += string.Format("NPC ActorID:0x{0:X} Friendly:{13} MapID:{1} Pos:{2},{3},{4} Dir:{5} Level:{6} HP:{7}/{8} MP: {9}/{10} ManaType:{11} Motion:{12}\r\n",
                                               actorID, mapID, x, y, z, dir, level, hp, maxHP, mp, maxMP, mana, motion, friendly);
                    }
                    else
                    {
                        p.GetBytes(39);
                        parse += string.Format("PC ActorID:0x{0:X} MapID:{1} Pos:{2},{3},{4} Dir:{5} Level:{6} HP:{7}/{8} MP: {9}/{10} ManaType:{11}\r\n",
                                               actorID, mapID, x, y, z, dir, level, hp, maxHP, mp, maxMP, mana);
                    }
                }
            }
            break;
            }
            return(parse);
        }
コード例 #24
0
        public void SaveCardData()
        {
            if (Directory.Exists(m_cardDataDir) == false)
            {
                Directory.CreateDirectory(m_cardDataDir);
            }

            foreach (KeyValuePair <eExpansion, Dictionary <String, CardData> > cardList in m_CardList)
            {
                String        expansion = cardList.Key.ToString();
                StringBuilder filePath  = new StringBuilder(m_cardDataDir);
                filePath.Append(expansion);
                filePath.Append(".xml");

                XmlTextWriter writer = new XmlTextWriter(filePath.ToString(), Encoding.UTF8);
                writer.Formatting = Formatting.Indented;
                writer.WriteStartDocument();
                writer.WriteStartElement("CardList");

                foreach (KeyValuePair <String, CardData> card in cardList.Value)
                {
                    Dictionary <ManaType, int> cost = card.Value.GetManaCost();
                    StringBuilder strMana           = new StringBuilder();
                    for (ManaType type = 0; type < ManaType.MANA_TYPE_MAX; ++type)
                    {
                        if (cost.ContainsKey(type))
                        {
                            strMana.Append(cost[type].ToString());
                        }
                        else
                        {
                            strMana.Append("0");
                        }
                    }

                    List <String> typeList = card.Value.GetCardTypes();
                    StringBuilder strTypes = new StringBuilder();
                    foreach (String type in typeList)
                    {
                        strTypes.Append(type);
                        if (typeList.Last() != type)
                        {
                            strTypes.Append(" ");
                        }
                    }

                    writer.WriteStartElement("Card");
                    writer.WriteAttributeString("ID", card.Value.GetCardID());
                    writer.WriteAttributeString("Name", card.Value.GetCardName());
                    writer.WriteAttributeString("ManaCost", strMana.ToString());
                    writer.WriteAttributeString("CMC", card.Value.GetCMC().ToString());
                    writer.WriteAttributeString("Type", strTypes.ToString());
                    writer.WriteAttributeString("Text", card.Value.GetText());
                    writer.WriteAttributeString("Expansion", card.Value.GetCardSet());
                    writer.WriteAttributeString("Rarity", card.Value.GetRarity().ToString());
                    writer.WriteAttributeString("ImagePath", card.Value.GetImagePath());
                    writer.WriteEndElement();
                }

                writer.WriteEndElement();
                writer.WriteEndDocument();
                writer.Flush();
                writer.Close();
            }
        }
コード例 #25
0
 public void AddMana(ManaType type)
 {
     type = ManaType.Green;
     playerManaCount++;
     inUse = false;
 }
コード例 #26
0
 public void ModifyContribution(ManaType type, int amount)
 {
     card.Contribution.Add(type, amount);
 }
コード例 #27
0
    private void Awake()
    {
        currentLifePoints = player.LifePoints;

        DominantMana = PlayerMana.GetFirstMana();
    }