/// <summary> /// 表示物の消去を行う /// </summary> /// <param name="command"></param> /// <returns></returns> public async Task Clear(ClearCommand command) { switch (command.ClearTarget) { case EScenarioClearTargetType.All: // RemoveAllEmotion(command.FadeTimeMilliSecond); await RemoveAllStand(command.FadeTimeMilliSecond); _view.MessagePresenter.ClearText(); break; case EScenarioClearTargetType.Text: _view.MessagePresenter.ClearText(); break; case EScenarioClearTargetType.Face: _view.ClearFace(); break; case EScenarioClearTargetType.Left: case EScenarioClearTargetType.Center: case EScenarioClearTargetType.Right: // RemoveEmotion(EScenarioStandPositionExtension.GetEnum( // command.ClearTarget.GetName(), command.FadeTimeMilliSecond)); await RemoveStand(EScenarioStandPositionExtension.GetEnum( command.ClearTarget.GetName()), command.FadeTimeMilliSecond, true); break; default: throw new ArgumentOutOfRangeException(); } }
/// <summary> /// 立ち絵を表示する /// </summary> public async Task ShowStand(StandCommand command) { if (!EScenarioStandPositionExtension.IsContain(command.Position.ToLower())) { // displayWarningMessage('無効な立ち位置です。 "' + cmd.position + '"'); return; } var position = EScenarioStandPositionExtension.GetEnum(command.Position.ToLower()); // 同じ場所に同一人物が既に表示されている場合は、反転状態を反映するだけ // TODO: 表示順を最前面にする if (IsSameStandImageAtPosition(command.StandName, position)) { _view.GetStandImageView(position).GetComponent <ImageView>().SetReverse(command.Reverse); return; } await RemoveStand(position, ClearCommand.DefaultFadeTimeMilliSecond / 2, true); var sprite = await GetStandImageSprite(command.FilePath); if (sprite) { var imageView = ImageView.Instantiate(command.StandName); imageView.SetSprite(sprite); imageView.SetAlpha(0); imageView.SetReverse(command.Reverse); _view.AddStand(imageView, position); AdjustStand(imageView.gameObject, position, command); await Fade(imageView.Image, imageView.Image.color, command.FadeTimeMilliSecond, 1f, command.IsWait); _currentStandNames[position] = command.StandName; } }