Esempio n. 1
0
        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();
            }
        }
Esempio n. 2
0
        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;
                    }
                }
            }
        }
Esempio n. 3
0
        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;
            }
        }