示例#1
0
        public virtual bool Execute(GameObject target)
        {
            CharacterMana mana = target.GetComponent <CharacterMana>();

            if (mana != null && !mana.IsEmptyMana())
            {
                return(true);
            }
            return(false);
        }
示例#2
0
    //플레이어 정보 초기화
    protected override void Awake()
    {
        base.Awake();

        Health = this.GetComponent <CharacterHealth>();
        Mana   = this.GetComponent <CharacterMana>();

        layerMask = LayerMask.GetMask(clickLayer, enemyLayer);

        Sphere = GameObject.Instantiate(MinimapSphere) as GameObject;
        Sphere.transform.parent        = this.transform;
        Sphere.transform.localPosition = new Vector3(0, 0, 0);

        FxCenter = DummyTF.transform.Find("Bip01/Bip01-Pelvis/Bip01-Spine/Bip01-Spine1/Bip01-Spine2/FxCenter");

        MinAttackDamage = State.AttackDamage - State.AttackDamage * 0.1f;
        MaxAttackDamage = State.AttackDamage + State.AttackDamage * 0.1f;
    }
示例#3
0
 void Awake()
 {
     defaultSpeed             = MoveSpeed;
     PlayerState              = GetComponent <CharacterState>();
     PlayerInput              = GetComponent <PlayerInput>();
     PlayerInput.OnAttack    += Attack;
     PlayerInput.OnCastSpell += CastSpell;
     PlayerInput.OnJump      += Jump;
     animator             = GetComponent <Animator>();
     rigidBody            = GetComponent <Rigidbody2D>();
     lightMask            = GetComponent <SpriteMask>();
     playerSpriteRenderer = GetComponent <SpriteRenderer>();
     PlayerHealth         = GetComponent <CharacterHealth>();
     PlayerHealth.Initialize();
     PlayerMana     = GetComponent <CharacterMana>();
     PlayerUltimate = GetComponent <CharacterUltimate>();
     animator.SetFloat("MoveX", 0);
     animator.SetFloat("MoveY", -1);
     //transform.position = StartingPosition.InitialValue;
     blinkOnHit = GetComponent <BlinkOnHit>();
     LoadData();
 }
示例#4
0
        private void CreateItemDisplay(ItemModel item, List <ItemModel> list)
        {
            var frame = new Frame();

            frame.CornerRadius = 5;
            frame.Padding      = new Thickness(15, 15, 5, 15);

            var layout = new StackLayout();

            layout.Orientation = StackOrientation.Horizontal;

            var Name = new Label();

            Name.Text = item.item;
            Name.VerticalTextAlignment = TextAlignment.Center;
            Name.Margin         = new Thickness(0, 0, 10, 0);
            Name.FontAttributes = FontAttributes.Bold;
            if (item.item.Contains("HealthPotion"))
            {
                Name.TextColor      = Color.FromHex("#F44336");
                frame.BorderColor   = Color.FromHex("#F44336");
                Name.FontAttributes = FontAttributes.Bold;
            }
            else
            {
                Name.TextColor      = Color.DarkTurquoise;
                frame.BorderColor   = Color.DarkTurquoise;
                Name.FontAttributes = FontAttributes.Bold;
            }


            var extras = new Label();

            extras.FontSize  = 10;
            extras.TextColor = Color.Black;
            extras.Text      = string.Format("{0}: {1} - {2} {3}",
                                             ItemInfoModel.ObtainItemString(item.item, true),
                                             ItemInfoModel.ObtainItemInfo(item.item, true),
                                             ItemInfoModel.ObtainItemInfo(item.item, false),
                                             ItemInfoModel.ObtainItemString(item.item, false));
            extras.HorizontalTextAlignment = TextAlignment.Center;
            extras.HorizontalOptions       = LayoutOptions.CenterAndExpand;
            extras.VerticalTextAlignment   = TextAlignment.Center;

            var button = new Button();

            button.HorizontalOptions = LayoutOptions.EndAndExpand;
            button.Text            = "USE";
            button.CornerRadius    = 5;
            button.BackgroundColor = Color.White;
            button.TextColor       = Color.Accent;


            button.Clicked += async(s, e) =>
            {
                if (battlesequence)
                {
                    battlesequence = false;
                    await Task.Run(async() =>
                    {
                        Animations.CloseStackLayout(layout, "closing", 30, 500);
                    });

                    Items.Children.Remove(frame);
                    pots.Remove(item); // Remove off list
                    string invetory = "";
                    foreach (ItemModel itemInv in pots)
                    {
                        if (!String.IsNullOrEmpty(itemInv.item))
                        {
                            invetory += itemInv.item + ","; // Create string for file
                        }
                    }
                    UserModel.Rewrite("Items:", invetory, dungeon.items.Localfile);

                    try
                    {
                        dungeon.items.Invfile.Object.Items = invetory;
                        await dungeon.items.UpdateInv();
                    }
                    catch { }

                    dungeon.itemInv.pots = this.pots;

                    await ItemAbility.FadeTo(0, 200);

                    DisableorEnableFrameLayouts(false, ItemAbility);

                    if (item.item.Contains("HealthPotion"))
                    {
                        int buff = Obtainbuff(item.item);
                        CharacterHP += buff;
                        await Announcer(string.Format("Healed for {0}", buff.ToString()), true);

                        CharacterHealth.Text = CharacterHP.ToString();
                        CharacterHealth.RelRotateTo(360, 500);
                        await CharacterHealth.ScaleTo(5, 300);

                        await CharacterHealth.ScaleTo(1, 300);
                    }
                    else if (item.item.Contains("MagicPotion"))
                    {
                        int buff = Obtainbuff(item.item);
                        CharacterMP += buff;
                        await Announcer(string.Format("Restored {0} Mana", buff.ToString()), true);

                        CharacterMana.Text = CharacterMP.ToString();
                        CharacterMana.RelRotateTo(360, 500);
                        await CharacterMana.ScaleTo(5, 300);

                        await CharacterMana.ScaleTo(1, 300);
                    }

                    await Announcer("BOSS TURN", false);

                    BossAttack();
                }
            };

            layout.Children.Add(Name);
            layout.Children.Add(extras);
            layout.Children.Add(button);

            frame.Content = layout;
            Items.Children.Add(frame);
        }
示例#5
0
        /*
         * The dodge sequence, this combines all animations, health checks and damage counters.
         *  Param Nothing
         *  Returns Nothing.
         */
        private async void MagicBtn(object sender, EventArgs e)
        {
            if (MagicAbility.IsEnabled != true)
            {
                DisableorEnableFrameLayouts(false, ItemAbility);

                if (!ItemAbility.IsEnabled && !ANNOUNCING && battlesequence)
                {
                    DisableorEnableFrameLayouts(true, MagicAbility);
                    MagicAbility.Opacity = 0;
                    await MagicAbility.FadeTo(1, 200);

                    if (!MagicPage)
                    {
                        MagicPage           = true;
                        ButtonFire.Clicked += async(s, a) =>
                        {
                            if (CheckMana(CharacterMP, 15))
                            {
                                Random rand = new Random();
                                CharacterMP -= 15;
                                MagicDamage  = rand.Next(15, 30 + 1);
                                message      = "Casted Fireball";
                                await MagicAbility.FadeTo(0, 200);

                                DisableorEnableFrameLayouts(false, MagicAbility);
                            }
                            else
                            {
                                DisplayAlert("Error", "Not enough mana", "Close");
                            }
                        };

                        ButtonLightning.Clicked += async(s, a) =>
                        {
                            if (CheckMana(CharacterMP, 30))
                            {
                                Random rand = new Random();
                                CharacterMP -= 30;
                                MagicDamage  = rand.Next(25, 45 + 1);
                                message      = "Casted Lightning";
                                await MagicAbility.FadeTo(0, 200);

                                DisableorEnableFrameLayouts(false, MagicAbility);
                            }
                            else
                            {
                                DisplayAlert("Error", "Not enough mana", "Close");
                            }
                        };

                        ButtonVoid.Clicked += async(s, a) =>
                        {
                            if (CheckMana(CharacterMP, 50))
                            {
                                Random rand = new Random();
                                CharacterMP -= 50;
                                MagicDamage  = rand.Next(35, 55 + 1);
                                message      = "Casted Voidball";
                                await MagicAbility.FadeTo(0, 200);

                                DisableorEnableFrameLayouts(false, MagicAbility);
                            }
                            else
                            {
                                DisplayAlert("Error", "Not enough mana", "Close");
                            }
                        };
                    }


                    while (MagicDamage == 0)
                    {
                        await Task.Delay(25); if (!battlesequence)
                        {
                            return;
                        }
                        if (ItemAbility.IsEnabled)
                        {
                            return;
                        }
                    }
                    await Task.Delay(200);
                    await Announcer(message, true);
                    await Announcer(string.Format("Dealt {0} damage", MagicDamage.ToString()), true);

                    battlesequence = false;
                    BossHP        -= MagicDamage;

                    MagicDamage = 0;
                    message     = "";


                    CharacterMana.Text = CharacterMP.ToString();
                    CharacterMana.RelRotateTo(360, 500);
                    await AttackPixelCharacter();

                    BossHealth.RelRotateTo(360, 500);
                    await BossHealth.ScaleTo(5, 300);

                    await BossHealth.ScaleTo(1, 300);

                    if (BossHP <= 0)
                    {
                        WON = true; await CheckHP();
                    }
                    await Announcer("BOSS TURN", false);

                    BossAttack();
                }
            }
        }