예제 #1
0
        void HandleConditionMenuItemClicked(object sender, ButtonStringPopover.PopoverEventArgs e)
        {
            ButtonStringPopover p  = (ButtonStringPopover)sender;
            ActiveCondition     ac = (ActiveCondition)p.Data;

            if (e.Tag is int)
            {
                int turns = (int)e.Tag;

                if (turns > 0)
                {
                    _CombatState.AddConditionTurns(_Character, ac, turns);
                }
                else
                {
                    _CombatState.RemoveConditionTurns(_Character, ac, -turns);
                }
            }
            else if (e.Tag is string)
            {
                string text = (string)e.Tag;
                if (text == "delete")
                {
                    _Character.Monster.RemoveCondition(ac);
                }
                else if (text == "deleteall")
                {
                    foreach (Character ch in _CombatState.Characters)
                    {
                        ch.RemoveConditionByName(ac.Condition.Name);
                    }
                }
            }
        }
예제 #2
0
 protected virtual void SetActiveConditionIfNull()
 {
     if (activeCondition == null)
     {
         activeCondition = DefaultCondition;
     }
 }
예제 #3
0
 private void BuildConditionMenu(ButtonStringPopover p, ActiveCondition c)
 {
     p.Data = c;
     p.Items.Add(new ButtonStringPopoverItem()
     {
         Text = "Add 5 Turns", Icon = "arrowsup", Tag = 5
     });
     p.Items.Add(new ButtonStringPopoverItem()
     {
         Text = "Add Turn", Icon = "arrowup", Tag = 1
     });
     p.Items.Add(new ButtonStringPopoverItem()
     {
         Text = "Remove Turn", Icon = "arrowdown", Tag = -1
     });
     p.Items.Add(new ButtonStringPopoverItem()
     {
         Text = "Remove 5 Turns", Icon = "arrowsdown", Tag = -5
     });
     p.Items.Add(new ButtonStringPopoverItem());
     p.Items.Add(new ButtonStringPopoverItem()
     {
         Text = "Delete", Icon = "delete", Tag = "delete"
     });
     p.Items.Add(new ButtonStringPopoverItem()
     {
         Text = "Delete From All Characters", Tag = "deleteall"
     });
     p.ItemClicked += HandleConditionMenuItemClicked;
 }
예제 #4
0
        void ConditionApplied(object sender, ConditionViewEventArgs args)
        {
            Condition c = args.Condition;

            ActiveCondition a = new ActiveCondition();

            a.Condition = c;
            _Character.Stats.AddCondition(a);
            Condition.PushRecentCondition(a.Condition);
        }
예제 #5
0
    public void ApplyNewCondition(Condition NewCondition, Character SourceCharacter, ItemSkill SourceItemSkill, float Duration)
    {
        // If the maximum Instances of this Condition is reached, one is removed and the new one applied:
        if (CheckIfConditionExists(NewCondition) >= NewCondition.GetInstanceMaximum())
        {
            RemoveCondition(NewCondition);
        }

        ActiveCondition NewActiveCondition = new ActiveCondition(this, SourceCharacter, SourceItemSkill, NewCondition, Duration);

        ActiveConditions.Add(NewActiveCondition);
    }
        public static RemoteActiveCondition ToRemote(this ActiveCondition activeCondition)
        {
            if (activeCondition == null)
            {
                return(null);
            }

            RemoteActiveCondition remoteActiveCondition = new RemoteActiveCondition();

            remoteActiveCondition.Conditon        = activeCondition.Condition.ToRemote();
            remoteActiveCondition.Details         = activeCondition.Details;
            remoteActiveCondition.InitiativeCount = activeCondition.InitiativeCount.ToRemote();
            remoteActiveCondition.Turns           = activeCondition.Turns;

            return(remoteActiveCondition);
        }
예제 #7
0
    public void RemoveCondition(Condition ConditionToRemove)
    {
        ActiveCondition ActCondToRemove = null;

        for (int i = 0; i < ActiveConditions.Count; i++)
        {
            if (ActiveConditions[i].RepresentsThisCondition(ConditionToRemove))
            {
                ActCondToRemove = ActiveConditions[i];
            }
        }

        if (ActCondToRemove != null)
        {
            ActCondToRemove.RemoveThisCondition();
            ActiveConditions.Remove(ActCondToRemove);
        }
    }
        public async Task <bool> AddCondition()
        {
            return(await TakeCharacterPostAction <AddConditionRequest>((res, data, ch) =>
            {
                Condition c = Condition.ByName(data.Name);
                if (c == null)
                {
                    res.Failed = true;
                    return;
                }
                ActiveCondition ac = new ActiveCondition();
                ac.Condition = c;
                ac.InitiativeCount = state.CurrentInitiativeCount;
                ac.Turns = data.Turns;
                ch.Monster.AddCondition(ac);
                saveCallback();

                res.Data = ch.ToRemote();
            }));
        }
            public ConditionButtonChangedHandler(View view, View b, Character character, ActiveCondition ac, CharacterListAdapter adp, ViewGroup parent)
            {
                _View            = view;
                _Character       = character;
                _Button          = b;
                _Adp             = adp;
                _Parent          = parent;
                _ActiveCondition = ac;

                _ActiveCondition.PropertyChanged += HandlePropertyChanged;
                _View.ViewDetachedFromWindow     += (object sender, View.ViewDetachedFromWindowEventArgs e) =>
                {
                    _ActiveCondition.PropertyChanged -= HandlePropertyChanged;
                    _Adp._ButtonHandlers.Remove(this);
                };
                b.ViewDetachedFromWindow += (object sender, View.ViewDetachedFromWindowEventArgs e) =>
                {
                    _ActiveCondition.PropertyChanged -= HandlePropertyChanged;
                    _Adp._ButtonHandlers.Remove(this);
                };
            }
예제 #10
0
 public StaticAbility(ActiveCondition activeCondition, params Modification[] mods)
 {
     this.activeCondition = activeCondition;
     modifications.AddRange(mods);
     SetActiveConditionIfNull();
 }
예제 #11
0
        public ConditionDialog(Context context, CombatState state, Character character) : base(context)
        {
            RequestWindowFeature((int)WindowFeatures.NoTitle);
            SetContentView(Resource.Layout.ConditionDialog);
            SetCanceledOnTouchOutside(true);

            _State     = state;
            _Character = character;

            deleteButton = FindViewById <Button>(Resource.Id.deleteButton);

            Button close = (Button)FindViewById(Resource.Id.cancelButton);

            close.Click += delegate
            {
                Dismiss();
            };

            Button okButton = (Button)FindViewById(Resource.Id.okButton);

            okButton.Click += delegate
            {
                if (SelectedCondition != null)
                {
                    ActiveCondition ac = new ActiveCondition();
                    ac.Condition       = SelectedCondition;
                    ac.InitiativeCount = _State.CurrentInitiativeCount;
                    _Character.Monster.ActiveConditions.Add(ac);
                    Condition.PushRecentCondition(ac.Condition);
                    Dismiss();
                }
            };

            Button b;

            b        = FindViewById <Button>(Resource.Id.conditionsButton);
            b.Click += delegate
            {
                SetSelectedTab(0);
            };
            b        = FindViewById <Button>(Resource.Id.spellsButton);
            b.Click += delegate
            {
                SetSelectedTab(1);
            };
            b        = FindViewById <Button>(Resource.Id.afflictionsButton);
            b.Click += delegate
            {
                if (!Condition.MonsterConditionsLoaded)
                {
                    Condition.LoadMonsterConditions();
                }
                SetSelectedTab(2);
            };

            EditText et = FindViewById <EditText>(Resource.Id.filterText);

            et.TextChanged += (object sender, Android.Text.TextChangedEventArgs e) =>
            {
                RefreshList();
            };


            ListView lv = FindViewById <ListView>(Resource.Id.itemList);

            lv.ItemClick += (object sender, AdapterView.ItemClickEventArgs e) =>
            {
                e.View.Selected = true;
                _SelectedIndex  = e.Position;
                _Adapter.NotifyDataSetChanged();
                ShowSelection();
            };

            deleteButton.Click += (sender, e) =>
            {
                DeleteSelectedItem();
            };

            PrepareList();
        }