public override void Update() { if (targetTextSpriteIndex < textSprites.Length) { if (textSprites[targetTextSpriteIndex] != null) { textSprites[targetTextSpriteIndex].Update(); } } if (scriptAPI.__waitEnter) { waitEnterIconTimer++; if (waitEnterIconTimer > waitEnterIconTimerMax) { waitEnterIconTimer = 0; } ImageSpriteWaitEnterIcon.Rect.Position.Y = 800 - 10 + ((double)waitEnterIconTimer / waitEnterIconTimerMax) * waitEnterIconTimerMove; //ImageSpriteWaitEnterIcon.IsDraw = true; } else { ImageSpriteWaitEnterIcon.IsDraw = false; } if (ImageSpriteTalkCharacter != null) { { if (fadeTimerTime < fadeTimerTimeMax) { var x = (double)fadeTimerTime / fadeTimerTimeMax; var y = fadeTimerSpline.ValueXtoY(x); ImageSpriteTalkCharacter.Color.A = y; fadeTimerTime++; } } { if (slideTimerTime < slideTimerTimeMax) { var x = (double)slideTimerTime / slideTimerTimeMax; var y = slideTimerSpline.ValueXtoY(x); var slide = 100; ImageSpriteTalkCharacter.Rect.Position.X = characterPosition.X - slide * y + slide; slideTimerTime++; } } } if (scriptAPI.__waitEnter) { DoScript(); var input = Emugen.Input.InputCore.Instance; if (input.GetKeyEventType(Emugen.Input.InputCore.KeyEventCode.MouseLeftButton) == Emugen.Input.InputCore.KeyEventType.Up) { if (choice != null) { // 選択肢のクリック var result = choice.GetChoiseText(); if (result != null) { scriptAPI.__waitEnter = false; scriptAPI.__choiseResult = choice.GetChoiseText(); layer.Del(choice); choice = null; } } else { // 通常の待機クリック scriptAPI.__waitEnter = false; } } } else if (scriptAPI.__wait > 0) { scriptAPI.__wait--; DoScript(); } if (sceneStartFadeStart && (sceneStartFadeTimer < 30)) { sceneStartFadeTimer++; sceneStartFadeImageSprite.Color.A = 1.0 - sceneStartFadeTimer / 30.0; } if (choice != null) { choice.Update(); } }
private void DoScript() { if (!sceneStartFadeStart) { sceneStartFadeStart = true; } if (scriptAPI.__isMainDo) { scriptAPI.__isMainDo = false; { if (scriptAPI.__clearText) { for (var i = 0; i < textSprites.Length; i++) { if (textSprites[i] != null) { layer.Del(textSprites[i]); textSprites[i].Dispose(); textSprites[i] = null; } } textLineNum = 0; targetTextSpriteIndex = 0; scriptAPI.__clearText = false; } if (scriptAPI.__talkText != null) { lock (scriptAPI._lock__talkText) { var t = scriptAPI.__talkText; var t2 = t.Split('\n'); foreach (var t3 in t2) { //if (t3 == "") continue; var x = 100 + 5; var y = 600 + 55 + 50 * textLineNum; var font = new Font(Config.MainConfig.MainFontPath, 20, new Color(1, 1, 1, 1), new Font.FontFrame[] { new Font.FontFrame(2, new Color(1, 0, 0, 0)), }, 0); var ts = new TextSprite(t3, font, new Vector2D(x, y), TextSprite.Type.Separation, null, 0, 100); layer.Add(ts, 200); textSprites[textLineNum] = ts; ts.OnShowEnd += () => { targetTextSpriteIndex++; if (textSprites.Count() <= targetTextSpriteIndex) { ImageSpriteWaitEnterIcon.IsDraw = true; } else if (textSprites[targetTextSpriteIndex] == null) { ImageSpriteWaitEnterIcon.IsDraw = true; } }; ImageSpriteWaitEnterIcon.IsDraw = false; textLineNum++; } scriptAPI.__talkText = null; } } if (scriptAPI.__talkCharacterImagePath != null) { if (ImageSpriteTalkCharacter != null) { layer.Del(ImageSpriteTalkCharacter); ImageSpriteTalkCharacter.Dispose(); } var texture = TextureResourceManager.Instance.GetTexture(scriptAPI.__talkCharacterImagePath); var w = texture.Size.X;// 1300;//1024; var h = (int)((double)texture.Size.Y / (double)texture.Size.X * w); var sprite = new ImageSprite( texture, new Rect( new Vector2D(characterPosition.X, characterPosition.Y), new Vector2D(w, h)), new Color(1, 1, 1, 1) ); layer.Add(sprite, 100); ImageSpriteTalkCharacter = sprite; ImageSpriteTalkCharacter.Color.A = 0; fadeTimerTime = 0; slideTimerTime = 0; scriptAPI.__talkCharacterImagePath = null; } if (scriptAPI.__talkCharacterViewName != null) { if (CharacterViewNameTextSprite != null) { layer.Del(CharacterViewNameTextSprite); CharacterViewNameTextSprite.Dispose(); } var x = 100 + 5; var y = 600; var font = new Font(Config.MainConfig.MainFontPath, 20, new Color(1, 1, 1, 1), new Font.FontFrame[] { new Font.FontFrame(2, new Color(1, 0, 0, 0)), }, 0); var ts = new TextSprite(scriptAPI.__talkCharacterViewName, font, new Vector2D(x, y)); layer.Add(ts, 200); CharacterViewNameTextSprite = ts; scriptAPI.__talkCharacterViewName = null; } if (scriptAPI._nextBattleScript != null) { WindowManager.nextScene = new Scene.BattleScene(scriptAPI._nextBattleScript); scriptAPI._nextBattleScript = null; } if (scriptAPI._nextTalkScript != null) { WindowManager.nextScene = new Scene.TalkScene(scriptAPI._nextTalkScript); scriptAPI._nextTalkScript = null; } if (scriptAPI._nextTitle != null) { WindowManager.nextScene = new Scene.TitleScene(); scriptAPI._nextTitle = null; } if (scriptAPI.__choiseText != null) { if (choice != null) { layer.Del(choice); } // todo : Choiceのなかで文字のDisposeがいるはず choice = new UI.Talk.Choice(scriptAPI.__choiseText); layer.Add(choice, 200); scriptAPI.__choiseText = null; } if (scriptAPI.__backGroundImagePath != null) { // todo : 背景のリソースをクリーンにする処理が見当たらない if (ImageSpriteBackGround != null) { layer.Del(ImageSpriteBackGround); ImageSpriteBackGround.Dispose(); } var texture = TextureResourceManager.Instance.GetTexture(scriptAPI.__backGroundImagePath); var w = 1600; var h = (int)((double)texture.Size.Y / (double)texture.Size.X * w); var sprite = new ImageSprite(texture, new Rect(new Vector2D(0, 0), new Vector2D(w, h)), new Color(1, 1, 1, 1)); layer.Add(sprite, 10); ImageSpriteBackGround = sprite; scriptAPI.__backGroundImagePath = null; } if (scriptAPI.__bgmPath != null) { var bgm = new Emugen.Sound.SoundPlayer(scriptAPI.__bgmPath, 0.20f, true, Emugen.Sound.SoundPlayer.SoundType.BGM); scriptAPI.__bgmPath = null; } if (scriptAPI.__playSE != null) { var se = new Emugen.Sound.SoundPlayer(scriptAPI.__playSE, scriptAPI.__playSEVolume, false, Emugen.Sound.SoundPlayer.SoundType.SE); scriptAPI.__playSE = null; } } } }
public override void Update() { isInputEventNowFrame = false; //uiStep switch (uiStep) { case UIStep.None: break; case UIStep.SkillSelect: break; case UIStep.SkillTargetSelect: { if ((InputCore.Instance.GetKeyEventType(InputCore.KeyEventCode.MouseRightButton) == InputCore.KeyEventType.Up)) { if (!isInputEventNowFrame) { isInputEventNowFrame = true; uiStep = UIStep.None; new Emugen.Sound.SoundPlayer(MainConfig.SoundEffect.UICancel01, 0.10f, false, Emugen.Sound.SoundPlayer.SoundType.SE); } } } break; } if (battleStep == BattleStep.Main) { Data.DataCreater.Instance.Update(); // 行動シンボルの増加を戦闘中のみに限定するためのif文 } SkillCards.Update(); PlayerCards.Update(); EnemyCards.Update(); switch (battleStep) { case BattleStep.Main: if (actionTimer == 0) { Action action = null; Data.Character character = null; foreach (var i in DataCreater.Instance.playerCharacters) { if (i.ActionStock != null) { action = i.ActionStock; character = i; } } foreach (var i in DataCreater.Instance.enemyCharacters) { if (i.ActionStock != null) { action = i.ActionStock; character = i; } } if (action != null) { action(); character.ActionStock = null; } actionTimer = actionTimerMax; } else { actionTimer--; } if (EnemyCards.Count == 0) { battleStep = BattleStep.End; var bgm = new Emugen.Sound.SoundPlayer(Config.MainConfig.BattleScene.BGMStageClear, 0.20f, true, Emugen.Sound.SoundPlayer.SoundType.BGM); } else if (DataCreater.Instance.IsPlayerCharacterAllDead()) { battleStep = BattleStep.LostClickWait; var choice = new UI.Talk.Choice(new string[] { "もう一度戦う", "タイトルに戻る" }); layer.Add(choice, 200); LostClickWaitChoice = choice; var bgm = new Emugen.Sound.SoundPlayer(Config.MainConfig.BattleScene.BGMGameOver, 0.20f, true, Emugen.Sound.SoundPlayer.SoundType.BGM); } else { var data = Data.DataCreater.Instance; var tmp = new List <Data.Character>(); foreach (var i in data.enemyCharacters.Where(x => x.HP.Now <= 0)) { tmp.Add(i); } foreach (var i in tmp) { EnemyCards.Del(i.enemyCard); data.enemyCharacters.Remove(i); } } break; case BattleStep.LostClickWait: { LostClickWaitChoice.Update(); var input = Emugen.Input.InputCore.Instance; if ((input.GetKeyEventType(Emugen.Input.InputCore.KeyEventCode.MouseLeftButton) == Emugen.Input.InputCore.KeyEventType.Up)) { var tmp = LostClickWaitChoice.GetChoiseText(); switch (tmp) { case "もう一度戦う": { var data = Data.DataCreater.Instance; var i = 0; foreach (var v in retrayPlayerCaracters) { var chara = data.playerCharacters[i]; chara.HP.Now = v.HP.Now; chara.elementTimer = v.elementTimer; chara.ElementLing.pos = v.ElementLing.pos; chara.Elements.Clear(); foreach (var element in v.Elements) { chara.Elements.Add(new Element(element.Name)); } i++; } WindowManager.nextScene = new Scene.BattleScene(this.script.Path); } break; case "タイトルに戻る": { WindowManager.nextScene = new Scene.TitleScene(); } break; } } } break; case BattleStep.End: { var input = Emugen.Input.InputCore.Instance; if ((input.GetKeyEventType(Emugen.Input.InputCore.KeyEventCode.MouseLeftButton) == Emugen.Input.InputCore.KeyEventType.Up)) { WindowManager.nextScene = new Scene.TalkScene(scriptAPI.__nextTalkScriptPath); } } break; } }