Exemple #1
0
        internal void Effect(string path, float deleteTime, string attachPath, bool isAttach, Vector3 position)
        {
            EffectCommand cmd = CommandManager.Instance.CreateCommand("effect") as EffectCommand;

            cmd.Load(path, deleteTime, attachPath, isAttach, position);
            cmd.Execute(m_Instance, m_DeltaTime);
        }
Exemple #2
0
    private void Awake()
    {
        if (Instance)
        {
            DestroyImmediate(Instance);
            return;
        }

        Instance = this;
    }
Exemple #3
0
        public override void Init()
        {
            base.Init();

            this[CardField.Vitality] = 2;
            replaceDescribeValue     = this[CardField.Vitality];

            cardAbility[TriggerTime.When][TriggerType.Play] = new List <Func <TriggerInfo, Task> >()
            {
                async(triggerInfo) =>
                {
                    await GameSystem.SelectSystem.SelectLocation(this);

                    await GameSystem.TransSystem.DeployCard(TriggerInfo.Build(this, this));
                }
            };
            cardAbility[TriggerTime.When][TriggerType.Deploy] = new List <Func <TriggerInfo, Task> >()
            {
                async(triggerInfo) =>
                {
                    if (!this[CardState.Seal])
                    {
                        List <Card> targetCardList = cardSet[Orientation.My][RegionTypes.Deck].CardList.Where(card => card.CardId == 10007 || card.CardId == 10008).ToList();
                        await GameSystem.TransSystem.SummonCard(new TriggerInfo(this, targetCardList));
                    }
                }
            };
            cardAbility[TriggerTime.When][TriggerType.FieldChange] = new List <Func <TriggerInfo, Task> >()
            {
#pragma warning disable CS1998 // 此异步方法缺少 "await" 运算符,将以同步方式运行。请考虑使用 "await" 运算符等待非阻止的 API 调用,或者使用 "await Task.Run(...)" 在后台线程上执行占用大量 CPU 的工作。
                async(triggerInfo) =>
#pragma warning restore CS1998 // 此异步方法缺少 "await" 运算符,将以同步方式运行。请考虑使用 "await" 运算符等待非阻止的 API 调用,或者使用 "await Task.Run(...)" 在后台线程上执行占用大量 CPU 的工作。
                {
                    EffectCommand.Bullet_Gain(triggerInfo);
                    EffectCommand.AudioEffectPlay(1);
                    //await Task.Delay(1000);
                    this[CardField.Vitality] = triggerInfo.point;
                    replaceDescribeValue     = this[CardField.Vitality];
                }
            };
        }
Exemple #4
0
        public override void Init()
        {
            base.Init();

            this[CardField.Vitality] = 2;
            replaceDescribeValue     = this[CardField.Vitality];

            cardAbility[TriggerTime.When][TriggerType.Play] = new List <Func <TriggerInfo, Task> >()
            {
                async(triggerInfo) =>
                {
                    await GameSystem.SelectSystem.SelectLocation(this);

                    await GameSystem.TransSystem.DeployCard(TriggerInfo.Build(this, this));
                }
            };
            cardAbility[TriggerTime.When][TriggerType.Deploy] = new List <Func <TriggerInfo, Task> >()
            {
                async(triggerInfo) =>
                {
                    List <Card> targetCardList = cardSet[Orientation.My][RegionTypes.Deck].CardList.Where(card => card.CardId == 10006 || card.CardId == 10007).ToList();
                    await GameSystem.TransSystem.SummonCard(new TriggerInfo(this, targetCardList));
                }
            };
            cardAbility[TriggerTime.When][TriggerType.FieldChange] = new List <Func <TriggerInfo, Task> >()
            {
                async(triggerInfo) =>
                {
                    EffectCommand.Bullet_Gain(triggerInfo);
                    EffectCommand.AudioEffectPlay(1);
                    await Task.Delay(1000);

                    this[CardField.Vitality] = triggerInfo.point;
                    replaceDescribeValue     = this[CardField.Vitality];
                }
            };
        }
        public AddCommandPageViewModel(INavigationService navigationService)
        {
            Navigation        = navigationService;
            EffectOn          = true;
            EffectColor       = Color.FromHex("#FFFF00");
            IsExecutedCommand = false;
            IsExecutedLong    = false;
            EnableRipple      = true;
            TestParam         = "Hoge";
            TestLongParam     = "LongHoge";

            EnableSound    = true;
            SyncCanExecute = true;

            ToggleCanExecute.Subscribe(_ => {
                CanExecute.Value = !CanExecute.Value;
            });

            IDisposable subCommand = null;

            ChangeCommand.Subscribe(_ => {
                if (EffectCommand != null)
                {
                    subCommand?.Dispose();
                    EffectCommand = null;
                }
                else
                {
                    EffectCommand = CanExecute.ToReactiveCommand();
                    subCommand    = EffectCommand.Subscribe(ExecCommand);
                }
                OnPropertyChanged(() => this.EffectCommand);
            });

            ChangeCommand.Execute();

            IDisposable subLongCommand = null;

            ChangeLongCommand.Subscribe(_ => {
                if (LongCommand != null)
                {
                    subLongCommand.Dispose();
                    LongCommand = null;
                }
                else
                {
                    LongCommand    = CanExecute.ToReactiveCommand();
                    subLongCommand = LongCommand.Subscribe(ExecLongCommand);
                }
                OnPropertyChanged(() => this.LongCommand);
            });

            ChangeLongCommand.Execute();



            CanExecuteNullToggle.Subscribe(_ => {
                if (CanExecuteCommand != null)
                {
                    CanExecuteCommand    = null;
                    CommandParameterText = "Command is null";
                }
                else
                {
                    CanExecuteCommand = CanExecute.ToAsyncReactiveCommand();
                    CanExecuteCommand.Subscribe(async x => {
                        CommandParameterText = "Done Command";
                        await Task.Delay(500);
                    });
                }
                OnPropertyChanged(() => CanExecuteCommand);
            });

            CanExecuteLongNullToggle.Subscribe(_ => {
                if (CanExecuteLongCommand != null)
                {
                    CanExecuteLongCommand = null;
                    CommandParameterText  = "LongCommand is null";
                }
                else
                {
                    CanExecuteLongCommand = CanExecuteLong.ToReactiveCommand();
                    CanExecuteLongCommand.Subscribe(async x => {
                        CommandParameterText = "Done Long Command";
                        await Task.Delay(500);
                    });
                }
                OnPropertyChanged(() => CanExecuteLongCommand);
            });

            CanExecuteNullToggle.Execute();
            CanExecuteLongNullToggle.Execute();
        }
    void CustomCommand( string command, bool pushCommand = false )
    {
        char[] delimiter = new char[3];
        delimiter[0] = ' ';
        delimiter[1] = '\t';
        delimiter[2] = '%';
        string[] parsedCommand = command.Split( delimiter, System.StringSplitOptions.RemoveEmptyEntries );
        switch( parsedCommand[0].ToLower() )
        {
            case "bgm":
                {

                    if (parsedCommand.Length > 1)
                    {
                        Debug.Log("<color=green>[StringParser]</color> CREATED NEW BGM COMMAND + " + parsedCommand[1].ToLower());
                        MusicCommand BGM = new MusicCommand();
                        BGM.Set(parsedCommand[1].ToLower());
                        CommandManager.Instance.AddCommand(BGM);
                    }
                }
                break;
        //NOTE(Hendry)::Add command here
        case "bg":
        BgCommand bgc = new BgCommand();
        if( parsedCommand.Length == 2 )
        {
            bgc.SetBg(parsedCommand[1].ToLower());
            if (parsedCommand.Length == 3)
            {
                bgc.SetSpd(int.Parse(parsedCommand[2]));
            }
            if( pushCommand )
            {
                CommandManager.Instance.AddPushCommand(bgc);
            }
            else
            {
                CommandManager.Instance.AddCommand( bgc );
            }
        }

        break;

        case "show":
        ShowCharacterCommand character = new ShowCharacterCommand();
        if( parsedCommand.Length >= 3 )
        {
            character.SetCharacterName( parsedCommand[1].ToLower() );
            character.SetSpawnLocation( parsedCommand[2].ToLower() );
            if( pushCommand )
            {
                CommandManager.Instance.AddPushCommand( character );
            }
            else
            {
                CommandManager.Instance.AddCommand( character );
            }
            if (parsedCommand.Length >= 4)
            {
                character.SetFacing( parsedCommand[3].ToLower() );
            }
        }
        break;

        case "pose":
        ChangePoseCommand newPoseCommand = new ChangePoseCommand();
        newPoseCommand.SetNewPose( parsedCommand[1].ToLower(), parsedCommand[2].ToLower() );
        if( pushCommand )
        {
            CommandManager.Instance.AddPushCommand( newPoseCommand );
        }
        else
        {
            CommandManager.Instance.AddCommand( newPoseCommand );
        }
        break;

        case "location":
        if( parsedCommand.Length == 3 )
        {
            bool set = false;
            if( parsedCommand[2].ToLower() == "on" )
            {
                set = true;
            }
            else if( parsedCommand[2].ToLower() == "off" )
            {
                set = false;
            }
            else
            {
                Debug.Log( "[String Parser]<color=red>wrong command</color> !! the format is icon iconName on/off" );
                //Debug.Break();
            }
            locationManager.Instance.SetButton(parsedCommand[1], set);
        }
        else
        {
            Debug.Log( "[String Parser]<color=red>wrong command</color> !! the format is icon iconName on/off" );
            //Debug.Break();
        }
        break;

        case "eff":
        EffectCommand newEffect = new EffectCommand();
        newEffect.SetEffect( parsedCommand[1] );
        if( pushCommand )
        {
            CommandManager.Instance.AddPushCommand( newEffect );
        }
        else
        {
            CommandManager.Instance.AddCommand( newEffect );
        }
        break;

        case "item":
        if(!GameManager.instance.IsDemoMode())
        ItemManager.Instance.AddItem( parsedCommand[1].ToLower() );
        break;

        case "icon":
        //Note(Hendry) : format is -> icon itemName position scale
        // position[] = middle/mid/m left/l right/r
        // scale float value
        // to destroy -> icon destroy
        IconCommand iconCommand;
        if( parsedCommand[1].ToLower() == "destroy" )
        {
            iconCommand = new IconCommand( true );
        }
        else
        {
            iconCommand = new IconCommand( parsedCommand[1], parsedCommand[2], float.Parse( parsedCommand[3] ) );
        }
        CommandManager.Instance.AddCommand( iconCommand );
        break;

        case "prompt":
        // note : prompt will call the menu then open evidence tab
        // format -> prompt itemName
        CommandManager.Instance.correctItem = parsedCommand[1];
        OpenMenuCommand menuCommand = new OpenMenuCommand();
        CommandManager.Instance.AddCommand( menuCommand );
        break;

        case "advquest":
        if (!GameManager.instance.IsDemoMode())
        SceneManager.Instance.AdvQuest();
        break;

        case "load":
        LoadCommand dialogue = new LoadCommand();
        if( parsedCommand.Length == 2 )
        {
            dialogue.SetLoad( parsedCommand[1].ToLower() );
            CommandManager.Instance.AddCommand( dialogue );
        }
        break;
            case"fade":
                {
                    if (parsedCommand.Length > 2)
                    {
                        FadeCommand foo = new FadeCommand();

                        if (parsedCommand[1].ToLower() == "in")
                            foo.SetFade(-1, float.Parse(parsedCommand[2]));
                        else
                            foo.SetFade(1, float.Parse(parsedCommand[2]));

                        CommandManager.Instance.AddCommand(foo);
                    }
                    else if(parsedCommand.Length > 1)
                    {
                        FadeCommand foo = new FadeCommand();

                        if (parsedCommand[1].ToLower() == "in")
                            foo.SetFade(-1);
                        else
                            foo.SetFade(1);

                        CommandManager.Instance.AddCommand(foo);
                    }
                    else
                    {
                        Debug.Log("STRING PARSER - FADE COMMAND NOT LONG ENOUGH");
                    }
                }
                break;
        }
    }