示例#1
0
    public void OnMcTypeChanged(int newValue)
    {
        mcType = newValue <= (int)MagicCircleType.END ? (MagicCircleType)newValue : MagicCircleType.END;
        if (!drag)
        {
            selectedMagicCircle = null;
        }

        if (selectedMagicCircle != null)
        {
            mcType = selectedMagicCircle.GetMcType();
            if (newValue != (int)mcType)
            {
                mainTypeDropdown.value = (int)mcType;
            }
        }
        print("mcType = " + mcType);
        if (subTypeDropdown != null)
        {
            switch (mcType)
            {
            case MagicCircleType.Element:
                subTypeDropdown.options.Clear();
                for (int i = (int)ElementType.START; i <= (int)ElementType.END; i++)
                {
                    subTypeDropdown.options.Add(new Dropdown.OptionData((( ElementType )i).ToString()));
                }
                break;

            case MagicCircleType.Form:
                subTypeDropdown.options.Clear();
                for (int i = (int)FormType.START; i <= (int)FormType.END; i++)
                {
                    subTypeDropdown.options.Add(new Dropdown.OptionData((( FormType )i).ToString()));
                }
                break;

            case MagicCircleType.Movement:
                subTypeDropdown.options.Clear();
                for (int i = (int)MovementType.START; i <= (int)MovementType.END; i++)
                {
                    subTypeDropdown.options.Add(new Dropdown.OptionData((( MovementType )i).ToString()));
                }
                break;

            default:
                subTypeDropdown.options.Clear();
                break;
            }
            mainTypeDropdown.RefreshShownValue();
            subTypeDropdown.RefreshShownValue();
        }
    }
示例#2
0
 private void ShowSecond()
 {
     First.IsVisible = false;
     MagicCircle.Show(this, 1000, async() =>
     {
         Flash.Show(this);
         Current.CountUpBattle();
         Enemy            = await _vm.GetOtherRandomAsync();
         Second.IsVisible = true;
         SecondButton.Refresh();
     });
 }
示例#3
0
        private void ShowNames()
        {
            Sound.Pray();
            MagicCircle.Show(this, 3000, () =>
            {
                Flash.Show(this, 1000, () =>
                {
                    Second.IsVisible = true;
                    var masters      = CodeMasterServce.GetMasters <JobMaster>();
                    var target1      = CodeMasterServce.GetNameRandom();
                    while (_vm.User.Names.Any(item => target1.Attribute == item.Attribute))
                    {
                        target1 = CodeMasterServce.GetNameRandom();
                    }
                    var target2 = masters[MyRandom.GetRandom(masters.Count)];
                    var gotName = new Name(target1, target2);
                    _vm.User.Names.Add(gotName);

                    var name               = new Chu2Name();
                    name.BindingContext    = gotName;
                    name.ShowAttribute     = true;
                    name.ShowAttributeType = true;
                    name.ShowParameter     = true;
                    GetResult.Children.Add(name);

                    var image               = new Charactor();
                    image.BindingContext    = gotName;
                    image.HorizontalOptions = LayoutOptions.End;
                    Second.Children.Insert(0, image);

                    Device.StartTimer(TimeSpan.FromSeconds(3), () =>
                    {
                        if (_vm.User.Names.Count == 2)
                        {
                            Second.IsVisible  = false;
                            Third.IsVisible   = true;
                            _vm.User.MainName = _vm.User.Names[0];
                            _vm.User.SubName  = _vm.User.Names[1];
                            Sound.Normal();
                            _steps.Next();
                        }
                        else
                        {
                            GetResult.Children.Clear();
                            Second.Children.Remove(image);
                            ShowNames();
                        }
                        return(false);
                    });
                });
            });
        }
 public virtual bool AddMagicCircle(MagicCircle mc)
 {
     if (innerMagicCircleList.ContainsKey((int)mc.GetMcType()))
     {
         Debug.LogError("This Magic Circle already contains this type.  Can't add new Magic Circle " + mc.mcType);
         return(false);
     }
     else
     {
         mc.mcParent = this;
         innerMagicCircleList.Add((int)mc.GetMcType(), mc);
         UpdateCirclePositions();
         return(true);
     }
 }
示例#5
0
    public void readySpell(Entity target)
    {
        _nextSpell = selectedSpell;
        if (target != null)
        {
            player_.startCast();
            casting_ = true;

            GameObject a = Instantiate(magicCircle, player_.getCirclePos().position, Quaternion.identity);

            MagicCircle c = a.GetComponent <MagicCircle>();
            circles.Add(c);
            c.player   = player_.getCirclePos();
            c.selector = this;
        }
    }
    public void ActivateMagicCircle(bool shouldActivate)
    {
        MagicCircle mc = (MagicCircle)selectedUISN.linkedSpellNode;

        if (mc != null)
        {
            if (shouldActivate)
            {
                mc.Activate();
            }
            else
            {
                mc.Deactivate();
            }
        }
    }
示例#7
0
 void _battle_DamagedEvent(object sender, DamageEventArgs args)
 {
     if (args.Target == Current)
     {
         if (args.Damage == 0)
         {
             Damege.Show(CurrentDamage, "Miss");
             return;
         }
         Damege.Show(CurrentDamage, args.Damage.ToString());
         CurrentImage.Damaged();
         if (args.IsCritical)
         {
             Flash.Show(this);
             MagicCircle.Show(this, 500);
             CutInFace.Show(this, new NameModelViewModel().Hissatsu, Enemy.MainName, false, 2);
             DependencyService.Get <IDeviceService>().PlayVibrate();
         }
         else if (MyRandom.GetRandom(10) > 3)
         {
             BattleComment.Show(BattleCommentAreaForCurrent, Current.GetBattleComment());
         }
     }
     else
     {
         if (args.Damage == 0)
         {
             Damege.Show(EnemyDamage, "Miss");
             return;
         }
         Damege.Show(EnemyDamage, args.Damage.ToString());
         EnemyImage.Damaged();
         if (args.IsCritical)
         {
             Flash.Show(this);
             MagicCircle.Show(this, 500);
             CutInFace.Show(this, new NameModelViewModel().Hissatsu, Current.MainName, true, 2);
             DependencyService.Get <IDeviceService>().PlayVibrate();
         }
         else if (MyRandom.GetRandom(10) > 3)
         {
             BattleComment.Show(BattleCommentAreaForEnemy, Enemy.GetBattleComment());
         }
     }
 }
示例#8
0
文件: DefenseMagic.cs 项目: wHo2/TMC
    void Start()
    {
        EnergyManager.Instance.StartTurn += this.StartTurn;
        EnergyManager.Instance.TurnsEnd += this.TurnsEnd;
        UIValue = transform.FindChild("Value").GetComponent<UILabel>();
        UIValue.text = magicValue.ToString();
        magicCircle = gameObject.AddComponent<MagicCircle>();

        //AddEffect("Refresh", 2);
        MagicCircleStart();
        //if (test == 0)//||test==1 ||test==2
        // AddEffect("Weaken", 1);
        //if (test == 1)
        //    AddEffect("Entrench", 3);
        //if (test == 2)
        //    AddEffect("Refresh", 1);
        //test++;
    }
    public void DestroyNode(SpellNode node)
    {
        RemoveNode(node);
        MagicCircle mc = (MagicCircle)node;

        if (mc != null)
        {
            mc.Deactivate();
            // for( int i = 0; i < links.Count; i++ )
            // {
            //     if( links[i].destination == node || links[i].source == node )
            //     {
            //         DestroyLink(links[i]);
            //     }
            // }
        }
        Destroy(node);
    }
示例#10
0
    public void checkTeleport()
    {
        PlayerMove           playerMove  = this.GetComponent <PlayerMove>();
        MagicCircleCollision magcCircCol = playerMove.ColMagicCircle.GetComponent <MagicCircleCollision>();
        bool onPortal = magcCircCol.inMagicCircle;

        if (onPortal)
        {
            MagicCircle magicCircle = magcCircCol.targetPortal.GetComponent <MagicCircle>();
            playerMove.isDead = !playerMove.isDead;
            magicCircle.teleport(this.gameObject);
        }
        else if (playerMove.cooldownAtack == 0)
        {
            Debug.Log("Attack");
            playerMove.playerAnim.GetComponent <Animator>().SetBool("beAttacking", true);
            playerMove.Speed         = 0;
            playerMove.cooldownAtack = playerMove.cooldownAtackTimer;
        }
    }
 public virtual bool RemoveMagicCircle(MagicCircle mc)
 {
     foreach (int currMcType in innerMagicCircleList.Keys)
     {
         Debug.Log("innerMagicCircleList: " + ((MagicCircleType)currMcType).ToString());
     }
     if (innerMagicCircleList.ContainsKey((int)mc.GetMcType()))
     {
         mc.Deactivate();
         mc.RemoveAllMagicCircles();
         innerMagicCircleList.Remove((int)mc.GetMcType());
         Destroy(mc.gameObject);
         UpdateCirclePositions();
         return(true);
     }
     else
     {
         Debug.LogError("This Magic Circle is not on the parent magic circle.  Can't remove it " + mc.mcType);
         return(false);
     }
 }
示例#12
0
文件: AttackMagic.cs 项目: wHo2/TMC
    void Start()
    {
        EnergyManager.Instance.StartTurn += this.StartTurn;
        EnergyManager.Instance.FireGo += this.FireGo;
        oldMagicValue = magicValue;
        
        
        explainLabel = GameObject.Find("ExplainLabel").GetComponent<UILabel>();
        magicCircle = gameObject.AddComponent<MagicCircle>();
        UpdateTexture();
        magicCircle.EnlargeStart();
        magicCircle.Type = StartType.Shrink;
        UpdateMagicValue();
        //AddEffect("Cohension", 2);

        //关卡判断
        if (LevelManager.Instance.level == 1 && LevelManager.Instance.key.Contains("AttackMagic"))
        {
            GuideText.Instance.ReturnText(3);
            LevelManager.Instance.key.Remove("AttackMagic");
            StartCoroutine(Level1());
        }
    }
示例#13
0
 public void SetMagicCircle(MagicCircle magicCircle)
 {
     this.magicCircle = magicCircle;
 }
示例#14
0
        private void ShowSecond()
        {
            First.IsVisible = false;
            if (!string.IsNullOrEmpty(_achivementCode))
            {
                StartPrayText.Text = "実績解禁!!";
            }
            StartPray.IsVisible = true;
            Sound.Pray();
            Sound.PrayVoice();
            MagicCircle.Show(this, 3000, () =>
            {
                StartPray.IsVisible = false;
                Flash.Show(this, 1000, () =>
                {
                    Second.IsVisible = true;
                    var masters      = CodeMasterServce.GetMasters <JobMaster>();
                    var target1      = string.IsNullOrEmpty(_achivementCode) ? CodeMasterServce.GetNameRandom() : CodeMasterServce.GetNameRandomByAttribute(_achivementCode);
                    var target2      = masters[MyRandom.GetRandom(masters.Count)];
                    var gotName      = new Name(target1, target2);

                    var name               = new Chu2Name();
                    name.BindingContext    = gotName;
                    name.ShowAttribute     = true;
                    name.ShowAttributeType = true;
                    name.ShowParameter     = true;
                    GetResult.Children.Add(name);

                    var image               = new Charactor();
                    image.BindingContext    = gotName;
                    image.HorizontalOptions = LayoutOptions.End;
                    Second.Children.Insert(0, image);

                    _current.CountUpPray();

                    var hasName = _current.Names.FirstOrDefault(n => n.Attribute == gotName.Attribute);

                    if (hasName != null)
                    {
                        BackButton.IsVisible = false;
                        Device.StartTimer(TimeSpan.FromSeconds(3), () =>
                        {
                            SelectItem.Show(this, "同じ属性の二つ名を既に持っています。二つ名を入れ替えますか?",
                                            new List <SelectItem.Item>()
                            {
                                new SelectItem.Item()
                                {
                                    Label    = "二つ名を入れ替える",
                                    Selected = () => {
                                        _current.Names.Remove(hasName);
                                        AddNewName(gotName);
                                        Device.StartTimer(TimeSpan.FromSeconds(2), () => { Back(); return(false); });
                                    }
                                },
                                new SelectItem.Item()
                                {
                                    Label    = "キャンセル",
                                    Selected = () => {
                                        CutIn.Show(this, "二つ名の取得をキャンセルしました", 3, () => { Back(); });
                                    }
                                }
                            });
                            return(false);
                        });
                    }
                    else
                    {
                        AddNewName(gotName);
                    }
                });
            });
        }
示例#15
0
    public void OnCreateMC()
    {
        if (spell == null)
        {
            CreateSpell();
        }
        if (rootMagicCircle == null || !rootMagicCircle.Contains((int)mcType))
        {
            if (mcType == MagicCircleType.None)
            {
                rootMagicCircle = null;
            }
            OnEmissionRateChanged(value1Slider.value);
            Transform pos = rootMagicCircle == null ? defaultMagicCircle.transform : rootMagicCircle.transform;
            // GameObject newObj = Instantiate( defaultMagicCircle, pos ) as GameObject;
            // newObj.name = mcType.ToString() + " Magic Circle";
            SpellNode newNode = spell.AddNode(mcType);
            newNode.name = mcType.ToString() + " Magic Circle";
            MagicCircle newMc;
            switch (mcType)
            {
            case MagicCircleType.Element:
                ElementMagicCircle tempMC = newNode as ElementMagicCircle;
                // tempMC.SetMcType( mcType );
                tempMC.SetElement((ElementType)subType);
                tempMC.emissionRate.SetDefaultValue(emissionRate);
                newMc = tempMC as MagicCircle;
                break;

            case MagicCircleType.Form:
                FormMagicCircle tempFormMC = newNode as FormMagicCircle;
                // tempMC.SetMcType( mcType );
                // tempMC.SetElement( (ElementType) subType );
                tempFormMC.SetForm((FormType)subType);
                tempFormMC.sizeMultiplier.SetDefaultValue(sizeMultiplier);
                newMc = tempFormMC as MagicCircle;
                break;

            case MagicCircleType.Movement:
                MovementMagicCircle tempMovementMC = newNode as MovementMagicCircle;
                // tempMC.SetMcType( mcType );
                // tempMC.SetElement( (ElementType) subType );
                tempMovementMC.SetMovement((MovementType)subType);
                tempMovementMC.force.SetDefaultValue(force);
                newMc = tempMovementMC as MagicCircle;
                break;

            default:
                newMc = newNode as MagicCircle;
                newMc.SetMcType(mcType);
                break;
            }
            if (rootMagicCircle == null)
            {
                rootMagicCircle = newMc;
            }
            else
            {
                // rootMagicCircle.AddMagicCircle( newMc );
            }
            selectedMagicCircle = newMc;
        }
    }
示例#16
0
    // Update is called once per frame
    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            // if left click is pressed...
            Vector3    mousePoint = Camera.main.ScreenToWorldPoint(Input.mousePosition);
            Collider2D obj        = Physics2D.OverlapPoint((Vector2)mousePoint);
            if (obj != null)
            {
                MagicCircle mc = obj.GetComponent <MagicCircle>();
                if (mc != null)
                {
                    drag = true;
                }
                if (mc != null && selectedMagicCircle != mc)
                {
                    selectedMagicCircle = mc;
                    if (selectedMagicCircle.GetMcType() == MagicCircleType.None)
                    {
                        rootMagicCircle = selectedMagicCircle;
                    }
                    UpdateSelectSensitiveDropdowns();
                }
            }
        }
        if (Input.GetMouseButtonDown(2))
        {
            if (selectedMagicCircle != null)
            {
                Vector3    mousePoint = Camera.main.ScreenToWorldPoint(Input.mousePosition);
                Collider2D obj        = Physics2D.OverlapPoint((Vector2)mousePoint);
                if (obj != null)
                {
                    MagicCircle mc = obj.GetComponent <MagicCircle>();
                    if (mc != null && selectedMagicCircle != mc)
                    {
                        linkableSourceMagicCircle = mc;
                        print(linkablePropertiesSink.captionText.text);
                        string[] linkableMethods = LinkableFinder.FindPropertiesToLinkTo(linkablePropertiesSink.captionText.text, selectedMagicCircle, linkableSourceMagicCircle);

                        linkablePropertiesSource.options.Clear();
                        for (int i = 0; i < linkableMethods.Length; i++)
                        {
                            linkablePropertiesSource.options.Add(new Dropdown.OptionData(linkableMethods[i]));
                        }
                        linkablePropertiesSource.RefreshShownValue();
                    }
                }
            }
        }
        if (Input.GetMouseButtonUp(1))
        {
            selectedMagicCircle = null;
            linkablePropertiesSink.options.Clear();
            linkablePropertiesSource.options.Clear();
        }
        if (Input.GetMouseButtonUp(0))
        {
            drag = false;
        }
        if (drag)
        {
            Vector3 mousePoint = Camera.main.ScreenToWorldPoint(Input.mousePosition);
            selectedMagicCircle.transform.position = new Vector3(mousePoint.x, mousePoint.y, selectedMagicCircle.transform.position.z);
        }
    }
示例#17
0
 public PatternMatching(MagicCircle magicCircle, short[][] target2DArray)
 {
     this.MagicCircle   = magicCircle;
     this.target2DArray = target2DArray;
 }
    void FixedUpdate()
    {
        if (source != null && destination != null && source.IsMagicCircle() && destination.IsMagicCircle())
        {
            MagicCircle mcSource      = (MagicCircle)source;
            MagicCircle mcDestination = (MagicCircle)destination;
            if (mcSource.isActive != wasActivated)
            {
                wasActivated = mcSource.isActive;
                PendingOperation operation = mcSource.isActive ? PendingOperation.Activate : PendingOperation.Deactivate;
                pendingOpList.Add(new PendingOperationContainer(operation, delayTime));
                // timeTillActivate = delayTime;
                // pendingOperation = mcSource.isActive ? PendingOperation.Activate : PendingOperation.Deactivate;
            }
            // Timer to count down until you activate the magic circle
            List <int> removePoc = new List <int>();
            for (int i = 0; i < pendingOpList.Count; i++)
            {
                if (pendingOpList[i].timeTillOp <= 0)
                {
                    // Activate the magic
                    if (pendingOpList[i].pendingOp == PendingOperation.Activate)
                    {
                        mcDestination.Activate();
                    }
                    // Only Deactivate the magic if it hasn't already been deactivated
                    else if (mcDestination.isActive && pendingOpList[i].pendingOp == PendingOperation.Deactivate)
                    {
                        mcDestination.Deactivate();
                    }
                    removePoc.Add(i);
                }
                // Keep decreasing the time until it reaches 0;
                else
                {
                    pendingOpList[i].timeTillOp -= Time.fixedDeltaTime;
                }
            }
            for (int i = removePoc.Count - 1; i >= 0; i--)
            {
                pendingOpList.RemoveAt(i);
            }

            // if( timeTillActivate <= 0 )
            // {
            //     // Only Activate the magic if it hasn't already been activated
            //     if( !mcDestination.isActive && pendingOperation == PendingOperation.Activate )
            //     {
            //         mcDestination.Activate();
            //     }
            //     // Only Deactivate the magic if it hasn't already been activated
            //     else if( mcDestination.isActive &&  pendingOperation == PendingOperation.Deactivate )
            //     {
            //         mcDestination.Deactivate();
            //     }
            // }
            // // Keep decreasing the time until it reaches 0;
            // else
            // {
            //     timeTillActivate -= Time.fixedDeltaTime;
            // }
        }
        else
        {
            timeTillActivate = 0;
        }
    }