protected override void ExecuteCore()
        {
            actor.image = newImage;
            actor.loadImage();

            TScene scene = actor.ownerScene();

            document.sceneManager.updateThumbnail(scene);
        }
Exemplo n.º 2
0
        protected override void clone(TLayer target)
        {
            base.clone(target);

            TImageActor targetLayer = (TImageActor)target;

            targetLayer.image = this.image;
            targetLayer.loadImage();
            targetLayer.refreshMatrix();
        }
        // execute action for every frame
        // if action is finished, return true;
        public override bool step(FrmEmulator emulator, long time)
        {
            TLayer layer = sequence.animation.layer;

            if (frames.Count > 0 && layer is TImageActor)
            {
                float elapsed = time - run_startTime;
                if (elapsed > duration)
                {
                    elapsed = duration;
                }

                long t     = 0;
                int  index = 0;
                while (t < elapsed && index < frames.Count)
                {
                    t += frames[index++].duration;
                }

                if (index > 0)
                {
                    index--;
                }

                if (index != run_currentFrame)
                {
                    run_currentFrame = index;
                    string image = frames[index].image;

                    TImageActor     target         = (TImageActor)layer;
                    TLibraryManager libraryManager = target.document.libraryManager;
                    int             libImageIndex  = libraryManager.imageIndex(image);
                    if (libImageIndex != -1)
                    {
                        target.loadImage(Image.FromFile(libraryManager.imageFilePath(libImageIndex)));
                    }
                }
            }

            return(base.step(emulator, time));
        }
Exemplo n.º 4
0
        private List <TActor> extraActorsOfEmulator(TScene scene)
        {
            // result
            List <TActor> extras = new List <TActor>();

            // back navigation button
            if (scene.prevButtonVisible && imgPrevButton != null)
            {
                TImageActor btnPrev = new TImageActor(document, imgPrevButton, 0, Program.BOOK_HEIGHT, scene, "[emulator_actor]:prev_button");
                btnPrev.anchor = new PointF(0, 1);
                extras.Add(btnPrev);

                if (document.navigationLeftButtonRender)
                {
                    TAnimation animation = new TAnimation(btnPrev);
                    TSequence  sequence  = animation.addSequence();
                    sequence.addAction(new TActionIntervalDelay()
                    {
                        duration = document.navigationButtonDelayTime * 1000
                    });
                    sequence.addAction(new TActionInstantDispatchEvent()
                    {
                        actor = btnPrev.name, eventu = Program.DEFAULT_EVENT_UNDEFINED, recursive = false
                    });
                    animation.eventu = Program.DEFAULT_EVENT_ENTER;
                    animation.start();
                    btnPrev.animations.Add(animation);

                    animation = new TAnimation(btnPrev);
                    sequence  = animation.addSequence();
                    sequence.addAction(new TActionIntervalDelay()
                    {
                        duration = 500
                    });
                    sequence.addAction(new TActionIntervalScale()
                    {
                        duration = 300, scale = new SizeF(1.4f, 1.4f)
                    });
                    sequence.addAction(new TActionIntervalScale()
                    {
                        duration = 300, scale = new SizeF(1f, 1f)
                    });
                    sequence.repeat  = 100;
                    animation.eventu = Program.DEFAULT_EVENT_UNDEFINED;
                    btnPrev.animations.Add(animation);
                }
                else
                {
                    TAnimation animation = TAnimation.newAnimation(btnPrev, new TActionInstantGoScene()
                    {
                        type = TActionInstantGoScene.ActionType.PREVIOUS
                    });
                    animation.eventu = Program.DEFAULT_EVENT_TOUCH;
                    btnPrev.animations.Add(animation);
                }
            }

            // next navigation button
            if (scene.nextButtonVisible && imgNextButton != null)
            {
                TImageActor btnNext = new TImageActor(document, imgNextButton, Program.BOOK_WIDTH, Program.BOOK_HEIGHT, scene, "[emulator_actor]:next_button");
                btnNext.anchor = new PointF(1, 1);
                extras.Add(btnNext);

                if (document.navigationRightButtonRender)
                {
                    TAnimation animation = new TAnimation(btnNext);
                    TSequence  sequence  = animation.addSequence();
                    sequence.addAction(new TActionIntervalDelay()
                    {
                        duration = document.navigationButtonDelayTime * 1000
                    });
                    sequence.addAction(new TActionInstantDispatchEvent()
                    {
                        actor = btnNext.name, eventu = Program.DEFAULT_EVENT_UNDEFINED, recursive = false
                    });
                    animation.eventu = Program.DEFAULT_EVENT_ENTER;
                    animation.start();
                    btnNext.animations.Add(animation);

                    animation = new TAnimation(btnNext);
                    sequence  = animation.addSequence();
                    sequence.addAction(new TActionIntervalDelay()
                    {
                        duration = 500
                    });
                    sequence.addAction(new TActionIntervalScale()
                    {
                        duration = 300, scale = new SizeF(1.4f, 1.4f)
                    });
                    sequence.addAction(new TActionIntervalScale()
                    {
                        duration = 300, scale = new SizeF(1f, 1f)
                    });
                    sequence.repeat  = 100;
                    animation.eventu = Program.DEFAULT_EVENT_UNDEFINED;
                    btnNext.animations.Add(animation);
                }
                else
                {
                    TAnimation animation = TAnimation.newAnimation(btnNext, new TActionInstantGoScene()
                    {
                        type = TActionInstantGoScene.ActionType.NEXT
                    });
                    animation.eventu = Program.DEFAULT_EVENT_TOUCH;
                    btnNext.animations.Add(animation);
                }
            }

            // menu button
            {
                TImageActor btnMenu = new TImageActor(document, Properties.Resources.emulator_img_menu_button, Program.BOOK_WIDTH, 0, scene, "[emulator_actor]:menu_button");
                btnMenu.anchor = new PointF(1, 0);
                extras.Add(btnMenu);

                TAnimation animation = TAnimation.newAnimation(btnMenu, new TActionInstantDispatchEvent()
                {
                    actor = "[emulator_actor]:menu_dialog", eventu = "[emulator_event]:show_dialog", recursive = true
                });
                animation.eventu = Program.DEFAULT_EVENT_TOUCH;
                btnMenu.animations.Add(animation);
            }

            // menu popup
            {
                // background
                TImageActor dlgMenu = new TImageActor(document, Properties.Resources.emulator_img_menu_dialog_bg, 0, 0, scene, "[emulator_actor]:menu_dialog");
                {
                    dlgMenu.anchor = new PointF(0, 0);
                    dlgMenu.alpha  = 0;
                    extras.Add(dlgMenu);

                    // show dialog
                    TAnimation animShow = new TAnimation(dlgMenu);
                    TSequence  seqShow  = animShow.addSequence();
                    seqShow.addAction(new TActionIntervalFade()
                    {
                        duration = 100, type = TActionIntervalFade.ActionType.IN
                    });
                    animShow.eventu = "[emulator_event]:show_dialog";
                    dlgMenu.animations.Add(animShow);

                    // hide dialog
                    TAnimation animHide = new TAnimation(dlgMenu);
                    TSequence  seqHide  = animHide.addSequence();
                    seqHide.addAction(new TActionIntervalDelay()
                    {
                        duration = 200
                    });
                    seqHide.addAction(new TActionIntervalFade()
                    {
                        duration = 100, type = TActionIntervalFade.ActionType.OUT
                    });
                    animHide.eventu = "[emulator_event]:hide_dialog";
                    dlgMenu.animations.Add(animHide);

                    TAnimation animation = TAnimation.newAnimation(dlgMenu, new TActionInstantDispatchEvent()
                    {
                        actor = "[emulator_actor]:menu_dialog", eventu = "[emulator_event]:hide_dialog", recursive = true
                    });
                    animation.eventu = Program.DEFAULT_EVENT_TOUCH;
                    dlgMenu.animations.Add(animation);
                }

                TAnimation animShowBase = TAnimation.newAnimation(null, new TActionIntervalMove()
                {
                    duration   = 300,
                    easingMode = TEasingFunction.EasingMode.Out,
                    easingType = TEasingFunction.EasingType.Bounce
                });
                animShowBase.eventu = "[emulator_event]:show_dialog";

                TAnimation animHideBase = TAnimation.newAnimation(null, new TActionIntervalMove()
                {
                    duration   = 300,
                    easingMode = TEasingFunction.EasingMode.In,
                    easingType = TEasingFunction.EasingType.Back
                });
                animHideBase.eventu = "[emulator_event]:hide_dialog";

                TImageActor btnBGM = new TImageActor(document, Properties.Resources.emulator_img_bgm_off, -100, 290, dlgMenu, "[emulator_actor]:menu_bgm_button");
                {
                    btnBGM.anchor = new PointF(0.5f, 0.5f);
                    dlgMenu.childs.Add(btnBGM);

                    // show animation from base show animation
                    TAnimation animShow = animShowBase.clone();
                    animShow.layer = btnBGM;
                    ((TActionIntervalMove)animShow.actionAtIndex(0, 0)).position = new PointF(170, 290);
                    btnBGM.animations.Add(animShow);

                    // hide animation from base hide animation
                    TAnimation animHide = animHideBase.clone();
                    animHide.layer = btnBGM;
                    ((TActionIntervalMove)animHide.actionAtIndex(0, 0)).position = btnBGM.position;
                    btnBGM.animations.Add(animHide);

                    // initialize button status, when menu is popuped
                    TAnimation animInit = TAnimation.newAnimation(btnBGM, new TActionRuntime(0, delegate(float percent)
                    {
                        if (bgmOn)
                        {
                            btnBGM.loadImage(Properties.Resources.emulator_img_bgm_on);
                        }
                        else
                        {
                            btnBGM.loadImage(Properties.Resources.emulator_img_bgm_off);
                        }
                    }));
                    animInit.eventu = "[emulator_event]:show_dialog";
                    btnBGM.animations.Add(animInit);

                    // perform action of button and change status when button is clicked
                    TAnimation animToggle = TAnimation.newAnimation(btnBGM, new TActionRuntime(0, delegate(float percent)
                    {
                        toggleBGM();

                        if (bgmOn)
                        {
                            btnBGM.loadImage(Properties.Resources.emulator_img_bgm_on);
                        }
                        else
                        {
                            btnBGM.loadImage(Properties.Resources.emulator_img_bgm_off);
                        }
                    }));
                    animToggle.eventu = Program.DEFAULT_EVENT_TOUCH;
                    btnBGM.animations.Add(animToggle);
                }

                TImageActor btnEffect = new TImageActor(document, Properties.Resources.emulator_img_effect_off, -100, 480, dlgMenu, "[emulator_actor]:menu_effect_button");
                {
                    btnEffect.anchor = new PointF(0.5f, 0.5f);
                    dlgMenu.childs.Add(btnEffect);

                    // show animation from base show animation
                    TAnimation animShow = animShowBase.clone();
                    animShow.layer = btnEffect;
                    ((TActionIntervalMove)animShow.actionAtIndex(0, 0)).position = new PointF(170, 480);
                    btnEffect.animations.Add(animShow);

                    // hide animation from base hide animation
                    TAnimation animHide = animHideBase.clone();
                    animHide.layer = btnEffect;
                    ((TActionIntervalMove)animHide.actionAtIndex(0, 0)).position = btnEffect.position;
                    btnEffect.animations.Add(animHide);

                    // initialize button status, when menu is popuped
                    TAnimation animInit = TAnimation.newAnimation(btnEffect, new TActionRuntime(0, delegate(float percent) {
                        if (effectOn)
                        {
                            btnEffect.loadImage(Properties.Resources.emulator_img_effect_on);
                        }
                        else
                        {
                            btnEffect.loadImage(Properties.Resources.emulator_img_effect_off);
                        }
                    }));
                    animInit.eventu = "[emulator_event]:show_dialog";
                    btnEffect.animations.Add(animInit);

                    // perform action of button and change status when button is clicked
                    TAnimation animToggle = TAnimation.newAnimation(btnEffect, new TActionRuntime(0, delegate(float percent) {
                        toggleEffect();

                        if (effectOn)
                        {
                            btnEffect.loadImage(Properties.Resources.emulator_img_effect_on);
                        }
                        else
                        {
                            btnEffect.loadImage(Properties.Resources.emulator_img_effect_off);
                        }
                    }));
                    animToggle.eventu = Program.DEFAULT_EVENT_TOUCH;
                    btnEffect.animations.Add(animToggle);
                }

                TImageActor btnVoice = new TImageActor(document, Properties.Resources.emulator_img_voice_off, -100, 600, dlgMenu, "[emulator_actor]:menu_voice_button");
                {
                    btnVoice.anchor = new PointF(0.5f, 0.5f);
                    dlgMenu.childs.Add(btnVoice);

                    // show animation from base show animation
                    TAnimation animShow = animShowBase.clone();
                    animShow.layer = btnVoice;
                    ((TActionIntervalMove)animShow.actionAtIndex(0, 0)).position = new PointF(170, 670);
                    btnVoice.animations.Add(animShow);

                    // hide animation from base hide animation
                    TAnimation animHide = animHideBase.clone();
                    animHide.layer = btnVoice;
                    ((TActionIntervalMove)animHide.actionAtIndex(0, 0)).position = btnVoice.position;
                    btnVoice.animations.Add(animHide);

                    // initialize button status, when menu is popuped
                    TAnimation animInit = TAnimation.newAnimation(btnVoice, new TActionRuntime(0, delegate(float percent) {
                        if (voiceOn)
                        {
                            btnVoice.loadImage(Properties.Resources.emulator_img_voice_on);
                        }
                        else
                        {
                            btnVoice.loadImage(Properties.Resources.emulator_img_voice_off);
                        }
                    }));
                    animInit.eventu = "[emulator_event]:show_dialog";
                    btnVoice.animations.Add(animInit);

                    // perform action of button and change status when button is clicked
                    TAnimation animToggle = TAnimation.newAnimation(btnVoice, new TActionRuntime(0, delegate(float percent) {
                        toggleVoice();

                        if (voiceOn)
                        {
                            btnVoice.loadImage(Properties.Resources.emulator_img_voice_on);
                        }
                        else
                        {
                            btnVoice.loadImage(Properties.Resources.emulator_img_voice_off);
                        }
                    }));
                    animToggle.eventu = Program.DEFAULT_EVENT_TOUCH;
                    btnVoice.animations.Add(animToggle);
                }

                TImageActor btnText = new TImageActor(document, Properties.Resources.emulator_img_text_off, -100, 100, dlgMenu, "[emulator_actor]:menu_text_button");
                {
                    btnText.anchor = new PointF(0.5f, 0.5f);
                    dlgMenu.childs.Add(btnText);

                    // show animation from base show animation
                    TAnimation animShow = animShowBase.clone();
                    animShow.layer = btnText;
                    ((TActionIntervalMove)animShow.actionAtIndex(0, 0)).position = new PointF(170, 100);
                    btnText.animations.Add(animShow);

                    // hide animation from base hide animation
                    TAnimation animHide = animHideBase.clone();
                    animHide.layer = btnText;
                    ((TActionIntervalMove)animHide.actionAtIndex(0, 0)).position = btnText.position;
                    btnText.animations.Add(animHide);

                    // initialize button status, when menu is popuped
                    TAnimation animInit = TAnimation.newAnimation(btnText, new TActionRuntime(0, delegate(float percent) {
                        if (textOn)
                        {
                            btnText.loadImage(Properties.Resources.emulator_img_text_on);
                        }
                        else
                        {
                            btnText.loadImage(Properties.Resources.emulator_img_text_off);
                        }
                    }));
                    animInit.eventu = "[emulator_event]:show_dialog";
                    btnText.animations.Add(animInit);

                    // perform action of button and change status when button is clicked
                    TAnimation animToggle = TAnimation.newAnimation(btnText, new TActionRuntime(0, delegate(float percent) {
                        toggleText();

                        if (textOn)
                        {
                            btnText.loadImage(Properties.Resources.emulator_img_text_on);
                        }
                        else
                        {
                            btnText.loadImage(Properties.Resources.emulator_img_text_off);
                        }
                    }));
                    animToggle.eventu = Program.DEFAULT_EVENT_TOUCH;
                    btnText.animations.Add(animToggle);
                }

                /*
                 * TImageActor btnBack = new TImageActor(document, Properties.Resources.emulator_img_menu_dialog_bg, 0, 0, dlgMenu, "[emulator_actor]:menu_back_button");
                 * {
                 *  btnBack.anchor = new PointF(1.0f, 0f);
                 *  dlgMenu.childs.Add(btnBack);
                 *
                 *  // show animation from base show animation
                 *  TAnimation animShow = animShowBase.clone();
                 *  animShow.layer = btnBack;
                 *  ((TActionIntervalMove)animShow.actionAtIndex(0, 0)).position = new PointF(900, 500);
                 *  btnBack.animations.Add(animShow);
                 *
                 *  // hide animation from base hide animation
                 *  TAnimation animHide = animHideBase.clone();
                 *  animHide.layer = btnBack;
                 *  ((TActionIntervalMove)animHide.actionAtIndex(0, 0)).position = btnBack.position;
                 *  btnBack.animations.Add(animHide);
                 *
                 *  TAnimation animation = TAnimation.newAnimation(btnBack, new TActionInstantDispatchEvent() { actor = "[emulator_actor]:menu_dialog", eventu = "[emulator_event]:hide_dialog", recursive = true });
                 *  animation.eventu = Program.DEFAULT_EVENT_TOUCH;
                 *  btnBack.animations.Add(animation);
                 * }
                 */
            }

            return(extras);
        }