コード例 #1
0
    public void RenderSkillsPanel(List <SkillData> data)
    {
        if (data != null)
        {
            if (skillsOptionPrefab != null)
            {
                int new_panels = data.Count - content.childCount;
                for (int i = 0; i < new_panels; i++)
                {
                    Instantiate(skillsOptionPrefab, content).gameObject.SetActive(false);
                }
            }

            int total = content.childCount;
            int index = 0;
            for (int i = 0; i < total; i++)
            {
                SkillRow  row        = content.GetChild(i).GetComponent <SkillRow>();
                SkillData skill_data = data[index];
                if (row != null)
                {
                    if (EffectsController.instance.GetCurrentLevel() >= skill_data.UnlocksAtLevel)
                    {
                        row.RenderSkillBlock(skill_data);
                    }
                    index++;
                }
            }
        }
        else
        {
            Debug.LogError("Skill data is null");
        }
    }
コード例 #2
0
 public void AfterSkillUsed(int skillId)
 {
     foreach (Transform child in content)
     {
         SkillRow row = child.GetComponent <SkillRow>();
         if (row != null && row.currentSkill.Id == skillId)
         {
             row.AfterSkillUsed();
         }
     }
 }
コード例 #3
0
 public Skill(SkillRow skillRow)
 {
     EffectType      = skillRow.EffectType;
     Variety         = skillRow.Variety;
     ID              = skillRow.ID;
     Name            = skillRow.Name;
     MpCost          = skillRow.MpCost;
     Multiple        = skillRow.Multiple;
     IsConstant      = skillRow.IsConstant;
     EffectValue     = skillRow.EffectValue;
     IsRemote        = skillRow.IsRemote;
     EffectiveWay    = skillRow.EffectiveWay;
     EffectiveResult = skillRow.EffectiveResult;
     Duration        = skillRow.Duration;
     MoveSpeed       = skillRow.MoveSpeed;
     Desc            = _GetDescription();
     if (!string.IsNullOrEmpty(skillRow.ImageKey))
     {
         ImageKey = IMAGE_PATH_PREFIX + skillRow.ImageKey;
     }
 }
コード例 #4
0
        public void UpdateView()
        {
            pushedPage = null;
            var sheet = CharacterSheetStorage.Instance.selectedCharacter;

            if (sheet == null)
            {
                return;
            }
#if USE_GRID
            var grid = new Grid()
            {
                ColumnSpacing   = 5,
                RowSpacing      = 5,
                BackgroundColor = Color.LightGray,
            };
            grid.ColumnDefinitions = new ColumnDefinitionCollection()
            {
                new ColumnDefinition()
                {
                    Width = GridLength.Auto,
                },
                new ColumnDefinition()
                {
                    Width = GridLength.Star,
                },
                new ColumnDefinition()
                {
                    Width = GridLength.Auto,
                },
            };
            Skills.Children.Add(grid);
#endif
            var skillsCount = sheet.skills.Count;
            var rowsCount   = skillRows.Count;
            var updateCount = Math.Min(skillsCount, rowsCount);
            var index       = skillsCount;
            var hasChanges  = false;
            while (--index >= 0)
            {
                if (sheet.skills[index] == null)
                {
                    sheet.skills.RemoveAt(index);
                    hasChanges = true;
                }
            }
            if (hasChanges)
            {
                CharacterSheetStorage.Instance.SaveCharacter();
            }
            for (var i = 0; i < updateCount; i++)
            {
                var skillIndex = i;
                var row        = skillRows[i];
                var skill      = sheet.skills[i];
                UpdateValue(row.classSkill, skill.classSkill);
                UpdateValue(row.name, skill.Name);
                row.name.TextColor = (skill.trainedOnly && (skill.rank.GetTotal(sheet) <= 0)) ? Color.Red : Color.Black;
                UpdateValue(row.total, skill.GetTotal(sheet).ToString());
                EventHandler handler = (s, e) => Skill_DoubleTap(skill, skillIndex);
                MainPage.SetTapHandler(row.nameFrame, handler, 2);
                MainPage.SetTapHandler(row.totalFrame, handler, 2);
            }
            var count = skillsCount - rowsCount;
            if (count > 0)
            {
                for (var i = 0; i < count; i++)
                {
                    var skillIndex = updateCount + i;
                    var skill      = sheet.skills[skillIndex];
                    var skillRow   = new SkillRow();
                    skillRow.classSkill = new CheckBox()
                    {
                        IsChecked         = skill.classSkill,
                        IsEnabled         = false,
                        HorizontalOptions = LayoutOptions.Start,
                        VerticalOptions   = LayoutOptions.Center,
                    };
#if !USE_GRID
                    skillRow.layout = new StackLayout()
                    {
                        Orientation = StackOrientation.Horizontal,
                    };
#endif
                    skillRow.nameFrame = CreateFrame(skill.Name);
                    skillRow.nameFrame.HorizontalOptions = LayoutOptions.FillAndExpand;
                    skillRow.name           = skillRow.nameFrame.Content as Label;
                    skillRow.name.TextColor = (skill.trainedOnly && (skill.rank.GetTotal(sheet) <= 0)) ? Color.Red : Color.Black;
                    skillRow.totalFrame     = CreateFrame(skill.GetTotal(sheet).ToString());
                    skillRow.totalFrame.HorizontalOptions = LayoutOptions.End;
                    skillRow.totalFrame.WidthRequest      = 40;
                    skillRow.total = skillRow.totalFrame.Content as Label;
                    EventHandler handler = (s, e) => Skill_DoubleTap(skill, skillIndex);
                    MainPage.AddTapHandler(skillRow.nameFrame, handler, 2);
                    MainPage.AddTapHandler(skillRow.totalFrame, handler, 2);
                    skillRows.Add(skillRow);
#if USE_GRID
                    var row = skillIndex + 1;
                    grid.Children.Add(skillRow.classSkill, 0, row);
                    grid.Children.Add(skillRow.nameFrame, 1, row);
                    grid.Children.Add(skillRow.totalFrame, 2, row);
#else
                    skillRow.layout.Children.Add(skillRow.classSkill);
                    skillRow.layout.Children.Add(skillRow.nameFrame);
                    skillRow.layout.Children.Add(skillRow.totalFrame);
                    Skills.Children.Add(skillRow.layout);
#endif
                }
            }
            else if (count < 0)
            {
                while (skillRows.Count > sheet.skills.Count)
                {
                    var last     = skillRows.Count - 1;
                    var skillRow = skillRows[last];
                    skillRows.RemoveAt(last);
                    Skills.Children.Remove(skillRow.totalFrame);
                    Skills.Children.Remove(skillRow.nameFrame);
                    Skills.Children.Remove(skillRow.classSkill);
                }
            }
#if USE_GRID
            rowsCount = skillRows.Count + 1;
            if ((grid.RowDefinitions == null) || (grid.RowDefinitions.Count != rowsCount))
            {
                grid.RowDefinitions = new RowDefinitionCollection();
                for (int i = 0; i < rowsCount; i++)
                {
                    grid.RowDefinitions.Add(new RowDefinition()
                    {
                        Height = GridLength.Auto,
                    });
                }
            }
#endif
            var ranksSpent = 0;
            foreach (var skill in sheet.skills)
            {
                ranksSpent += skill.rank.GetTotal(sheet);
            }
            var ranksLeft = sheet.skillRanks.GetTotal(sheet) - ranksSpent;
            SkillRanksLeft.Text = ranksLeft.ToString();
            if (ranksLeft < 0)
            {
                SkillRanksLeft.TextColor = Color.Red;
            }
            else if (ranksLeft > 0)
            {
                SkillRanksLeft.TextColor = Color.Green;
            }
            else
            {
                SkillRanksLeft.TextColor = Color.Black;
            }
            Languages.Text = sheet.Languages;
        }
コード例 #5
0
 public void RemoveSkillRow(SkillRow row)
 {
     this.Rows.Remove(row);
 }
コード例 #6
0
 public void AddSkillRow(SkillRow row)
 {
     this.Rows.Add(row);
 }
コード例 #7
0
 public SpellEffectRow AddSpellEffectRow(string SpellEffectBaseId, SkillRow parentSkillRowBySkill_SpellEffect)
 {
     SpellEffectRow rowSpellEffectRow = ((SpellEffectRow)(this.NewRow()));
     object[] columnValuesArray = new object[] {
             SpellEffectBaseId,
             null,
             null};
     if ((parentSkillRowBySkill_SpellEffect != null)) {
         columnValuesArray[2] = parentSkillRowBySkill_SpellEffect[6];
     }
     rowSpellEffectRow.ItemArray = columnValuesArray;
     this.Rows.Add(rowSpellEffectRow);
     return rowSpellEffectRow;
 }
コード例 #8
0
 public SkillRowChangeEvent(SkillRow row, global::System.Data.DataRowAction action)
 {
     this.eventRow = row;
     this.eventAction = action;
 }
コード例 #9
0
        public AttributeCreation(CharacterCreation parent, CharacterCreationOutput output)
        {
            myParent = parent;
            myOutput = output;



            float y = 4;

            myPointsLabel = new UILabel(Font.Large, new Vector2(4, y));
            AddChild(myPointsLabel);
            UnusedPoints = GameClient.CharacterUnusedAttribPoints;

            y += 30;

            foreach (CharAttribute attrib in CharAttribute.GetAll())
            {
                var row = new AttribRow(this, attrib, myOutput);
                row.Top  = y;
                row.Left = 4;
                y       += 30;
                AddChild(row);
            }

            y += 20;

            var skills = CharSkill.GetAll();

            skillRows = new SkillRow[skills.Length];

            int i = 0;

            foreach (CharSkill skill in skills)
            {
                var row = new SkillRow(new Vector2(4, y), skill, myOutput);
                y           += 25;
                skillRows[i] = row;
                i++;
                AddChild(row);
            }

            var button = new UIButton(new Vector2(150, 20), new Vector2(300 - 150 - 4, y))
            {
                Text       = "Create Character",
                CentreText = true
            };

            AddChild(button);
            button.Click += new MouseButtonEventHandler(button_Click);

            var back = new UIButton(new Vector2(50, 20), new Vector2(4, y))
            {
                Text       = "Back",
                CentreText = true
            };

            back.Click += new MouseButtonEventHandler(back_Click);
            AddChild(back);

            y += 20;

            Width  = 300;
            Height = y + 4 + PaddingTop + PaddingBottom;
        }