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); }
private void Awake() { if (Instance) { DestroyImmediate(Instance); return; } Instance = this; }
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]; } }; }
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; } }