コード例 #1
0
    public void create_particle(string aType, Vector3 position, Vector3 speed, QuTimer aTimer, float aScale, bool aUseRandomRotation)
    {
        var cache = mCachedParticles[aType];

        if (!cache.has_particle())
        {
            Texture2D tex = null;
            if (aType == "gold")
            {
                tex = ManagerManager.Manager.mNewRef.partGold;
            }
            if (aType == "silver")
            {
                tex = ManagerManager.Manager.mNewRef.partSilver2;
            }
            var newPart = new FlatElementImage(tex, new Vector2(60, 60), 100);
            foreach (Renderer f in newPart.PrimaryGameObject.GetComponentsInChildren <Renderer>())
            {
                f.gameObject.layer = ManagerManager.Manager.mBackgroundManager.mBackgroundLayer;
            }
            cache.return_particle(newPart);
        }
        var emitter = aType == "gold" ? mEmitter2 : mEmitter;
        var part    = emitter.add_particle(cache.take_particle(), position, speed, 1f, aType);

        part.element.HardFlatRotation = Random.Range(0f, 360f);
        part.element.HardScale        = aScale * Vector3.one;
        part.timer = new QuTimer(aTimer.getCurrent(), aTimer.getTarget());
    }
コード例 #2
0
    public void create_shine_over_character(CharacterIndex aIndex, bool positive, float duration)
    {
        int index                  = aIndex.LevelIndex - 1;
        var shineImage             = mManager.mCharacterBundleManager.get_image("SHINE");
        FlatElementImage shine     = new FlatElementImage(shineImage.Image, shineImage.Data.Size, 3);
        Vector3          targetPos = mCharacters[index].SoftPosition + new Vector3(0, shine.BoundingBox.height / 2 - 340, 0);

        shine.HardPosition = targetPos + new Vector3(0, 2000, 0);
        shine.SoftPosition = targetPos;
        shine.HardColor    = positive ? GameConstants.UiYellow : GameConstants.UiRed;
        shine.PositionInterpolationMinLimit = 200;
        shine.ColorInterpolationMaxLimit    = Mathf.Infinity;
        shine.ColorInterpolationMinLimit    = 1f;
        mElement.Add(shine);
        mShineCleanup.Add(shine);
        TED.add_one_shot_event(
            delegate() {
            shine.SoftColor = GameConstants.UiWhiteTransparent;
        },
            duration).then_one_shot(
            delegate() {
            mShineCleanup.Remove(shine);
            mElement.Remove(shine);
            shine.destroy();
        },
            3);
    }
コード例 #3
0
    public override void Start()
    {
        mManager.GameEventDistributor += game_event_listener;

        //setup flat camera
        mFlatCamera = new FlatCameraManager(new Vector3(10000, 10000, 0), 9);
        mFlatCamera.Camera.depth = 101;         //we want this on top always
        //mFlatCamera.Camera.clearFlags = CameraClearFlags.SolidColor;
        mFlatCamera.Camera.clearFlags      = CameraClearFlags.Depth;
        mFlatCamera.Camera.backgroundColor = new Color32(37, 37, 37, 255);
        mFlatCamera.fit_camera_to_screen(true);


        //setup RT camera
        mRTCamera = new FlatCameraManager(new Vector3(10000, -6000, 0), 10);
        mRTCamera.set_render_texture_mode(true);
        mRTCamera.Camera.GetComponent <Camera>().name = "TCMCAMERA";
        mRTCamera.fit_camera_to_game();
        mRTImage = new FlatElementImage(mRTCamera.RT, 1);
        mRTImage.PrimaryGameObject.name = "TCMIMAGE";
        mRTImage.HardScale = Vector3.one * mFlatCamera.Width / mRTImage.mImage.PixelDimension.x;
        ModeNormalPlay.slide_image(mFlatCamera, null, mRTImage, false, true);
        mElement.Add(mRTImage);

        //this is seen by main flat camera and not RT camera FYI
        initialize_depth_warning();

        mManager.mAssetLoader.new_load_asset_bundle("START", delegate(AssetBundle aBundle){ start_screen_loaded_callback(aBundle, "START"); });

        //this isn't working anyhow
        //mManager.StartCoroutine(test_you_are_playing_as());
    }
コード例 #4
0
    FlatElementImage construct_flat_image(string aName, int aDepth)
    {
        if (mLoader == null)
        {
            throw new UnityException("start screen bundle null");
        }

        CharacterData.ImageSizeOffsetAnimationData sizing;
        FlatElementImage r;

        if (aName != "BACKGROUND")        //this is stupid and you should make background part of the dump..
        {
            sizing = mLoader.Sizes.find_static_element(aName);
            try
            {
                r = new FlatElementImage(mLoader.Images.staticElements[aName], sizing.Size, aDepth);
            }
            catch (System.Exception e)
            {
                Debug.Log("messed up on " + aName);
                throw e;
            }
        }
        else
        {
            var backSize = mLoader.Sizes.mBackSize;
            sizing        = new CharacterData.ImageSizeOffsetAnimationData();
            sizing.Offset = new Vector2(0, 0);
            sizing.Size   = backSize;
            r             = new FlatElementImage(mLoader.Images.background1, backSize, aDepth);
        }
        r.HardPosition = mRTCamera.get_point(Vector3.zero) + sizing.Offset;
        return(r);
    }
コード例 #5
0
    public void sunset_loaded_callback(AssetBundle aBundle, string aBundleName)
    {
        mLoader = new CharacterLoader();
        mLoader.complete_load_character(aBundle, aBundleName);

        mBackground = new FlatElementImage(mLoader.Images.background1, mLoader.Sizes.mBackSize, 0);
        mBackground.HardPosition = mFlatCamera.get_point(0, 0);
        mStubbyHairyGrass        = construct_flat_image("BG-1", 2);

        mElement.Add(mBackground);
        mElement.Add(mStubbyHairyGrass);

        var sun = mManager.mCharacterBundleManager.get_image("SUN");

        mSun = new FlatElementImage(sun.Image, sun.Data.Size, 1);
        var light = mManager.mCharacterBundleManager.get_image("SHINE");

        mLightRay = new FlatElementImage(light.Image, light.Data.Size, 1);
        mLightRay.HardPosition = mFlatCamera.get_point(0, -10000);
        mElement.Add(mSun);
        mElement.Add(mLightRay);

        //mManager.mCharacterBundleManager.add_bundle_to_unload(aBundle);
        IsLoaded = true;

        //prep the sky for fetus
        set_sun(-1, true);
        set_sky_color(0);
    }
コード例 #6
0
    public void add_character(CharacterIndex aChar, bool aGood, bool aShowScore = true)
    {
        Vector3 gDiffLabelOffset = new Vector3(-100, -350, 0);

        if (aChar != CharacterIndex.sFetus)
        {
            string imgname = "SUNSET_" + aChar.StringIdentifier;
            if (aChar != CharacterIndex.sGrave)
            {
                imgname += "-" + (aGood?"a":"b");
            }
            var addMe = construct_flat_image(imgname, 3 + mCharacters.Count * 2);
            //Debug.Log("adding character " + aChar.StringIdentifier + " " + aGood + " " + imgname);

            //special positioning for grave
            if (aChar == CharacterIndex.sGrave)
            {
                //put it at the last character plus one position
                CharacterIndex gravePosition = (new CharacterIndex(mCharacters.Count, 0)).get_future_neighbor(0);

                if (mCharacters.Count == 7) //there is no astronaut dot yet TODO need lea to add astronaut dot
                {
                    gravePosition = new CharacterIndex(9, 0);
                }

                //weird...
                FlatElementImage posImg;
                if (gravePosition.LevelIndex <= 8)
                {
                    posImg = construct_flat_image("SUNSET_" + gravePosition.StringIdentifier + "-a", 0);
                }
                else
                {
                    posImg = construct_flat_image("SUNSET_" + gravePosition.StringIdentifier, 0);
                }

                addMe.HardPosition = posImg.SoftPosition;
                posImg.destroy();
            }
            else if (mCharacters.Count < 7)                //add diff label, note no difficulty for age 100
            {
                string[]         labelNames     = new string[] { "label_easy", "label_normal", "label_hard", "label_extreme" };
                var              diffLabel      = mManager.mCharacterBundleManager.get_image(labelNames[mManager.mGameManager.get_character_difficulty(aChar)]);
                FlatElementImage diffLabelImage = new FlatElementImage(diffLabel.Image, diffLabel.Data.Size, 19);
                diffLabelImage.HardPosition = addMe.HardPosition + gDiffLabelOffset;
                mDiffLabels.Add(diffLabelImage);
                mElement.Add(diffLabelImage);
            }

            mCharacters.Add(addMe);
            mElement.Add(addMe);

            if (aShowScore)
            {
                show_score(aChar, (int)mManager.mGameManager.mModeNormalPlay.CurrentPerformanceStat.AdjustedScore, 4, 1.2f);
            }

            set_sky_color(mCharacters.Count);
        }
    }
コード例 #7
0
    FlatElementImage construct_flat_image(string aName, int aDepth)
    {
        var sizing = mLoader.Sizes.find_static_element(aName);
        var r      = new FlatElementImage(mLoader.Images.staticElements[aName], sizing.Size, aDepth);

        r.HardPosition = mFlatCamera.get_point(Vector3.zero) + sizing.Offset;
        return(r);
    }
コード例 #8
0
    public override void Start()
    {
        mBackground = new FlatElementImage(null, 0);
        mBackground.HardPosition = Vector3.zero;

        mBackgroundElements = new List <FlatElementImage>();
        mForegroundElements = new List <FlatElementImage>();
    }
コード例 #9
0
    public void load_images(CharacterLoader aCharacter, List <FlatElementImage> aImages, int startingDepth, string aPrefix, int aBegin = 0)
    {
        //last to first stupid hack..
        List <CharacterData.ImageSizeOffsetAnimationData> dataList = new List <CharacterData.ImageSizeOffsetAnimationData>();
        List <string> nameList = new List <string>();

        for (int i = aBegin; i < 100; i++)
        {
            string name = aPrefix + i;
            CharacterData.ImageSizeOffsetAnimationData data = aCharacter.Sizes.find_static_element(name);
            if (data == null)            //sometimes there are zero prefixes
            {
                name = aPrefix + "0" + i;
                data = aCharacter.Sizes.find_static_element(name);
            }
            if (data == null)
            {
                break;
            }

            //Debug.Log("loading " + name);



            dataList.Add(data);
            nameList.Add(name);
        }

        for (int i = dataList.Count - 1; i >= 0; i--)
        {
            Texture2D tex = aCharacter.Images.staticElements[nameList[i]];
            //if(tex == null)
            //throw new UnityException("data exists for " + data.Name + " but texture does not");
            var img = new FlatElementImage(tex, dataList[i].Size, startingDepth + aImages.Count);


            //fly in
            //img.HardPosition = random_position();
            //img.SoftPosition = dataList[i].Offset;

            //fade in
            img.HardColor    = GameConstants.UiWhiteTransparent;
            img.SoftColor    = GameConstants.UiWhite;
            img.HardPosition = dataList[i].Offset;

            aImages.Add(img);

            var fx = AnimationEffects.get_effect(dataList[i].AnimationEffect);
            fx = null;             //TODO
            if (fx != null)
            {
                img.Events.add_event(
                    fx
                    , 0);
            }
            //dataList[i].AnimationEffect
        }
    }
コード例 #10
0
    public ElementOffset add_image(Texture2D aTex, Vector3 aOffset, Vector2?aSize = null)
    {
        FlatElementImage image = new FlatElementImage(aTex, aSize, Depth + mElements.Count);
        ElementOffset    r     = new ElementOffset(image, aOffset);

        mElements.Add(r);
        SoftPosition = SoftPosition;
        return(r);
    }
コード例 #11
0
 public DifficultyObject(Texture2D aTex, int aDepth)
 {
     PrimaryGameObject = new GameObject("genDifficultyParent");
     for (int i = 0; i < 4; i++)
     {
         mImageElements[i] = new FlatElementImage(aTex, aDepth);
         mElements.Add(new FlatElementMultiBase.ElementOffset(mImageElements[i], new Vector3(0, i * 47, 0)));
         mImageElements[i].PrimaryGameObject.transform.parent = PrimaryGameObject.transform;
         mNaughtyPositions[i] = (Random.insideUnitCircle.normalized * 3000);
     }
     Difficulty = 0;
 }
コード例 #12
0
    //called by NewGameManager
    public void setup_bb()
    {
        var nameFrame  = mManager.mCharacterBundleManager.get_image("TEXTBOX");
        var scoreFrame = mManager.mCharacterBundleManager.get_image("SCORE");


        //BB small nonsense
        mBBNameText        = new FlatElementText(mManager.mNewRef.genericFont, 50, "", 11);
        mBBNameTextFrame   = new FlatElementImage(nameFrame.Image, nameFrame.Data.Size, 10);
        mBBScoreText       = new FlatElementText(mManager.mNewRef.genericFont, 60, "0", 11);
        mBBScoreFrame      = new FlatElementImage(scoreFrame.Image, scoreFrame.Data.Size, 10);
        mBBMultiplierImage = new FlatElementImage(null, 15);

        //mBBWarningText = new FlatElementText(mManager.mNewRef.genericFont,150,"WARNING",12);
        mBBWarningText              = new FlatElementText(mManager.mNewRef.genericFont, 400, "WARNING", 20);
        mBBWarningText.HardColor    = new Color(0.5f, 0.5f, 0.5f, 0);
        mBBWarningText.HardPosition = mFlatCamera.get_point(Vector3.zero);


        mBBNameText.HardColor  = GameConstants.UiWhite;
        mBBNameText.Alignment  = TextAlignment.Right;
        mBBNameText.Anchor     = TextAnchor.MiddleRight;
        mBBScoreText.HardColor = GameConstants.UiWhite;
        mBBScoreText.Alignment = TextAlignment.Right;
        mBBScoreText.Anchor    = TextAnchor.MiddleRight;

        mBBMultiplierImage.HardPosition = mFlatCamera.get_point(-1, 1) + new Vector3(200, -270, 0)
                                          + new Vector3(mBBMultiplierImage.BoundingBox.width, mBBMultiplierImage.BoundingBox.height, 0) / 2f;

        //this is just to position the text, it's done again in begin_new_character
        Vector3 textOffset = new Vector3(70, 115, 0) / 2;

        mBBNameTextFrame.HardPosition = mBBMultiplierImage.HardPosition + new Vector3(mBBNameTextFrame.BoundingBox.width, 140, 0) / 2 + textOffset;
        mBBNameText.HardPosition      = mBBMultiplierImage.HardPosition + new Vector3(320, 140, 0) / 2 + textOffset;
        mBBScoreFrame.HardPosition    = mBBMultiplierImage.HardPosition + new Vector3(mBBScoreFrame.BoundingBox.width, -140, 0) / 2 + textOffset;
        mBBScoreText.HardPosition     = mBBScoreFrame.HardPosition + new Vector3(-mBBScoreFrame.BoundingBox.width / 2 + 180, 0, 0);


        var warningImage = mManager.mNewRef.redWarning;         //mManager.mCharacterBundleManager.get_image("WARNING");

        mWarningOverlay = new FlatElementImage(warningImage, mFlatCamera.Size, 100);
        mWarningOverlay.HardPosition = mFlatCamera.get_point(Vector3.zero);


        mElement.Add(mBBNameText);
        mElement.Add(mBBNameTextFrame);
        mElement.Add(mBBScoreFrame);
        mElement.Add(mBBScoreText);
        mElement.Add(mBBWarningText);
        mElement.Add(mBBMultiplierImage);
        mElement.Add(mWarningOverlay);
    }
コード例 #13
0
    public void initialize()
    {
        IsLoaded    = false;
        mFlatCamera = new FlatCameraManager(mManager.mCameraManager.BackgroundCamera.transform.position, 10);
        mFlatCamera.fit_camera_to_game();
        mFlatCamera.Camera.cullingMask = (1 << 3) | (1 << 0);
        mFlatCamera.set_render_texture_mode(true);


        mPlayerImage = new FlatElementImage(null, 10);
        mPlayerImage.PrimaryGameObject.name = "PLAYERIMAGE";
        mElement.Add(mPlayerImage);
    }
コード例 #14
0
    public ChoiceObjectPair(Texture2D aLeftTex, int aDepth)
    {
        mSquare = new FlatElementImage(aLeftTex, aDepth);
        //NOTE these assets were removed since this class is no longer being used.
        //mDifficultyStars = new DifficultyObject(ManagerManager.Manager.mNewRef.uiPerfectStar, aDepth);
        //mDifficultyBalls = new DifficultyObject(ManagerManager.Manager.mNewRef.uiPerfectStar, aDepth);
        //just to get rid of warnings...

        mElements.Add(new FlatElementMultiBase.ElementOffset(mSquare, new Vector3(mSide, 0, 0)));
        mElements.Add(new FlatElementMultiBase.ElementOffset(mDifficultyStars, new Vector3(-mSide, mRightBot, 0)));
        mElements.Add(new FlatElementMultiBase.ElementOffset(mDifficultyBalls, new Vector3(-mSide, mRightBot, 0)));

        PrimaryGameObject = create_primary_from_elements();
    }
コード例 #15
0
    public void start_screen_loaded_callback(AssetBundle aBundle, string aBundleName)
    {
        mBundle = aBundle;

        CharacterLoader loader = new CharacterLoader();

        loader.complete_load_character(aBundle, aBundleName);
        mLoader = loader;


        //create background
        mElement.Add(construct_flat_image("BACKGROUND", 0));
        mElement.Add(construct_flat_image("FG-1", 30));
        for (int i = 2; i < 30; i++)
        {
            var img = construct_flat_image("BG-" + i, 30 - i);
            mElement.Add(img);
        }
        set_start_screen_character_transparency();


        NewMenuReferenceBehaviour refs = mManager.mNewRef;

        //kinect required image
        if (!GameConstants.ALLOW_NO_KINECT && mManager.mZigManager.is_reader_connected() == 0)
        {
            //TODO put up a KINECT REQUIRED message
            mKinectRequiredImage = construct_flat_image("FG-1", 1000);
            mKinectRequiredImage.SoftPosition += new Vector3(0, -400, 0);
            mElement.Add(mKinectRequiredImage);
        }


        //mMenuBackground;
        //mMenuSelector;
        //mResume;
        //mRestart;



        //????
        mMessageText = new FlatElementText(refs.genericFont, 60, "", 1);
        mMessageText.HardPosition = mRTCamera.get_point(Vector3.zero) + new Vector3(0, 400, 0);
        mElement.Add(mMessageText);

        start_configuration_display();

        IsInitialized = true;
    }
コード例 #16
0
    FlatElementImage construct_flat_image(string aName, int aDepth)
    {
        var sizing = mLoader.Sizes.find_static_element(aName);

        try{
            var r = new FlatElementImage(mLoader.Images.staticElements[aName], sizing.Size, aDepth);
            r.HardPosition = mFlatCamera.get_point(Vector3.zero) + sizing.Offset;
            return(r);
        }
        catch (System.Exception e)
        {
            Debug.Log("couldn't find " + aName);
            throw e;
        }
    }
コード例 #17
0
    public FlatUnlockIcon(CharacterIndex aChar, bool big, int aDepth)
    {
        var bgImage  = ManagerManager.Manager.mCharacterBundleManager.get_image(big?"UNLOCKABLES_BOX_BIG" : "UNLOCKABLES_BOX_SMALL");
        var charIcon = ManagerManager.Manager.mCharacterBundleManager.get_image("ICON_" + aChar.StringIdentifier);

        background = new FlatElementImage(bgImage.Image, bgImage.Data.Size, aDepth);
        icon       = new FlatElementImage(charIcon.Image, charIcon.Data.Size, aDepth + 1);
        name       = new FlatElementText(ManagerManager.Manager.mNewRef.genericFont, 50, FlatElementText.convert_to_multiline(1, aChar.ShortName.ToUpper()), aDepth + 1);

        mElements.Add(new FlatElementMultiBase.ElementOffset(background, new Vector3(0, 0, 0)));
        mElements.Add(new FlatElementMultiBase.ElementOffset(icon, new Vector3(0, 20, 0)));
        mElements.Add(new FlatElementMultiBase.ElementOffset(name, new Vector3(0, -200, 0)));

        PrimaryGameObject = create_primary_from_elements();
        Depth             = aDepth;
    }
コード例 #18
0
    public CharacterIconObject(CharacterIndex aIndex, int aDepth)
    {
        //NOTE these assets were removed since this class is no longer being used.
        //mBackground = new FlatElementImage(ManagerManager.Manager.mNewRef.pbCharacterIconBackground,aDepth);
        //mDifficultyStars = new DifficultyObject(ManagerManager.Manager.mNewRef.uiPerfectStar,aDepth+1);
        mIcon = new FlatElementImage(null, aDepth + 3);
        if (aIndex.LevelIndex != -1)
        {
            var loaded = ManagerManager.Manager.mCharacterBundleManager.get_image("BOX_" + aIndex.StringIdentifier);
            mIcon.set_new_texture(loaded.Image, null);           //loaded.Data.Size);
        }

        //TODO delete

        /*
         * if(aIcon == null)
         * {
         *      CharacterTextureBehaviour ctb = (GameObject.Instantiate(ManagerManager.Manager.mReferences.mMiniChar) as  GameObject).GetComponent<CharacterTextureBehaviour>();
         *      mBody =  new FlatBodyObject(ctb,aDepth);
         *      GameObject.Destroy(ctb.gameObject);
         * }
         * else
         *      mBody =  new FlatBodyObject(aIcon,aDepth+3);
         * mBody.HardShader = ManagerManager.Manager.mReferences.mMiniCharacterShader;
         */



        //mBodyOffset = mDifficultyStars.mImageElements[0].BoundingBox.width/2 + 5;
        //float starOffset = mBackground.BoundingBox.width/2+5;

        //float starOffset = 0;
        mBodyOffset = 0;
        //mElements.Add(new ElementOffset(mDifficultyStars, new Vector3(-starOffset,-70,0)));
        mElements.Add(new ElementOffset(mBackground, new Vector3(mBodyOffset, 0, 0)));
        mElements.Add(new ElementOffset(mIcon, new Vector3(mBodyOffset, 20, 0)));
        //mElements.Add(new ElementOffset(mBody, new Vector3(mBodyOffset,0,0)));


        PrimaryGameObject = create_primary_from_elements();
        Depth             = aDepth;

        set_perfectness(0);
    }
コード例 #19
0
    public MeterObject(Texture2D aFront, Texture2D aBack, Color aFill, int aDepth)
    {
        SoftColor = aFill;


        mBack       = new FlatElementImage(aBack, aDepth);
        mFill       = new FlatElementImage(null, aDepth + 1);
        mFront      = new FlatElementImage(aFront, aDepth + 2);
        mFillOffset = new FlatElementMultiBase.ElementOffset(mFill, new Vector3(0, 0, 0));

        mElements.Add(new FlatElementMultiBase.ElementOffset(mBack, new Vector3(0, 0, 0)));
        mElements.Add(mFillOffset);
        mElements.Add(new FlatElementMultiBase.ElementOffset(mFront, new Vector3(0, 0, 0)));

        PrimaryGameObject = create_primary_from_elements();

        SoftInterpolation = SoftInterpolation;
        Percentage        = 0.0f;
        Depth             = aDepth;
    }
コード例 #20
0
    public void initialize_depth_warning()
    {
        mDepthImage           = new FlatElementImage(null, new Vector2(160, 120), 100);
        mDepthImage.HardScale = Vector3.one * 2;
        //mDepthImage.HardPosition = mFlatCamera.get_point(1, -1) + new Vector3(-10 - mDepthImage.BoundingBox.width / 4, 10 + mDepthImage.BoundingBox.height / 4, 0) * mFlatCamera.screen_pixel_to_camera_pixel_ratio();
        mDepthImage.HardPosition       = mFlatCamera.get_point(1.5f, -1) + new Vector3(-10 - mDepthImage.BoundingBox.width / 4, 10 + mDepthImage.BoundingBox.height / 4, 0) * mFlatCamera.screen_pixel_to_camera_pixel_ratio();
        mDepthImage.HardShader         = mManager.mReferences.mXB1DepthImageShader;
        mDepthWarningText              = new FlatElementText(mManager.mNewRef.genericFont, 40, GameStrings.GetString("TCMkinect1"), 100);
        mDepthWarningText.HardColor    = new Color(1, 1, 1, 0);
        mDepthWarningText.Alignment    = TextAlignment.Left;
        mDepthWarningText.Anchor       = TextAnchor.MiddleLeft;
        mDepthWarningText.HardPosition = mFlatCamera.get_point(1, -1) + new Vector3(-280, 110, 0) * mFlatCamera.screen_pixel_to_camera_pixel_ratio();
        mDepthWarningText.ColorInterpolationMaxLimit = 10f;
        mDepthWarningText.ColorInterpolationMinLimit = 2f;
        //mDepthWarningText.Alignment = TextAlignment.Left;
        EnableDepthWarning = false;

        mElement.Add(mDepthImage);
        mElement.Add(mDepthWarningText);
    }
コード例 #21
0
    public ChoiceObjectPair(Texture2D aLeftTex, CharacterTextureBehaviour aChar, Pose aPose, int aDepth)
    {
        mSquare = new FlatElementImage(aLeftTex, aDepth);
        //NOTE these assets were removed since this class is no longer being used.
        //mDifficultyStars = new DifficultyObject(ManagerManager.Manager.mNewRef.uiPerfectStar, aDepth);
        //mDifficultyBalls = new DifficultyObject(ManagerManager.Manager.mNewRef.uiPerfectStar, aDepth);


        mElements.Add(new FlatElementMultiBase.ElementOffset(mSquare, new Vector3(mSide, 0, 0)));
        mElements.Add(new FlatElementMultiBase.ElementOffset(mDifficultyStars, new Vector3(-mSide, mRightBot, 0)));
        mElements.Add(new FlatElementMultiBase.ElementOffset(mDifficultyBalls, new Vector3(-mSide, mRightBot, 0)));

        mMeter            = new MeterImageObject(aLeftTex, null, MeterImageObject.FillStyle.DU, aDepth + 1);
        mMeter.Percentage = 0.0f;
        mBody             = new FlatBodyObject(aChar, aDepth + 2);
        mBody.set_target_pose(aPose);
        mElements.Add(new FlatElementMultiBase.ElementOffset(mMeter, new Vector3(mSide, 0, 0)));
        mElements.Add(new FlatElementMultiBase.ElementOffset(mBody, new Vector3(mSide + 24, -7, 0)));

        PrimaryGameObject = create_primary_from_elements();
    }
コード例 #22
0
    //TODO need custom split setting function...
    public PopupTextObject(string aText, int aDepth, Texture2D aBubble = null, System.Nullable <Vector2> aBubbleSize = null)
    {
        mBackground     = new FlatElementImage(aBubble == null ? random_bubble(0) : aBubble, aBubbleSize, aDepth);
        mText           = new FlatElementText(ManagerManager.Manager.mNewRef.genericFont, 80, "", aDepth + 1);
        mText.HardColor = new Color(0, 0, 0);
        mElements.Add(new FlatElementMultiBase.ElementOffset(mBackground, new Vector3(0, 0, 0)));
        mTextOffset = new FlatElementMultiBase.ElementOffset(mText, new Vector3(0, 0, 0));
        mElements.Add(mTextOffset);
        Text = aText;
        PrimaryGameObject      = create_primary_from_elements();
        PrimaryGameObject.name = "genPOPUPTEXT";

        //make sure it gets applied to text as well...
        ColorInterpolationMaxLimit = 3f;
        ColorInterpolationMinLimit = 1.5f;
        SoftInterpolation          = .18f;
        //PositionInterpolationMinLimit = 500;


        Depth = aDepth;
    }
コード例 #23
0
 public static void slide_image(FlatCameraManager aCam, FlatElementImage cur, FlatElementImage next, bool right = true, bool instant = false)
 {
     //TODO set triggers to deactivate the surfaces, maybe not here.. for performance..
     if (next != null)
     {
         next.HardPosition = aCam.get_point(Vector3.zero) + (right ? Vector3.right * next.BoundingBox.width : Vector3.down * next.BoundingBox.height);
         next.SoftPosition = aCam.get_point(Vector3.zero);
         if (instant)
         {
             next.HardPosition = next.SoftPosition;
         }
     }
     if (cur != null)
     {
         cur.SoftPosition = aCam.get_point(Vector3.zero) - (right ? Vector3.right * cur.BoundingBox.width : Vector3.down * cur.BoundingBox.height);
         if (instant)
         {
             cur.HardPosition = cur.SoftPosition;
         }
     }
 }
コード例 #24
0
    public void create_shine_over_character(FlatElementImage aHead, bool positive, float duration)
    {
        var shineImage                 = ManagerManager.Manager.mCharacterBundleManager.get_image("STREAM");
        FlatElementImage shine         = new FlatElementImage(shineImage.Image, shineImage.Data.Size, 3);
        Vector3          targetPos     = aHead.SoftPosition + new Vector3(0, shine.BoundingBox.height / 2 - 360, 0) + new Vector3(0, 500, 0);
        Vector3          storePosition = targetPos + new Vector3((NIM.mFlatCamera.get_point(Vector3.zero).x - targetPos.x) * 0.2f, shine.BoundingBox.height - 100, 0);

        shine.HardPosition = storePosition;
        shine.SoftPosition = targetPos;
        shine.HardColor    = positive ? GameConstants.UiYellowTransparent : GameConstants.UiRedTransparent;
        shine.HardColor    = positive ? GameConstants.UiYellow : GameConstants.UiRed;
        shine.PositionInterpolationMinLimit = 250;
        shine.SoftInterpolation             = 0.15f;
        mElement.Add(shine);



        /*
         * var boxImage = ManagerManager.Manager.mCharacterBundleManager.get_image("CUTSCENE_BOX");
         * FlatElementImage box = new FlatElementImage(boxImage.Image,boxImage.Data.Size,3);
         * box.HardPosition = aHead.SoftPosition;
         * box.HardColor = positive ? GameConstants.UiGreenTransparent : GameConstants.UiRedTransparent;
         * box.HardColor = positive ? GameConstants.UiGreen : GameConstants.UiRed;
         * mElement.Add(box);*/

        TED.add_one_shot_event(
            delegate() {
            shine.SoftPosition = storePosition;
            //shine.HardColor = GameConstants.UiWhiteTransparent;
            //box.HardColor = GameConstants.UiWhiteTransparent;
        },
            duration).then_one_shot(
            delegate() {
            mElement.Remove(shine);
            //mElement.Remove(box);
            shine.destroy();
            //box.destroy();
        },
            0.7f);
    }
コード例 #25
0
    public void create_particle(string aType, Vector3 position, Vector3 speed, int emitterNum = 1)
    {
        //TODO diff particle types
        var cache = mCachedParticles[aType];

        if (!cache.has_particle())
        {
            Texture2D tex = null;
            if (aType == "gold")
            {
                tex = ManagerManager.Manager.mNewRef.partGold;
            }
            if (aType == "silver")
            {
                tex = ManagerManager.Manager.mNewRef.partSilver2;
            }
            var newPart = new FlatElementImage(tex, new Vector2(60, 60), 5);
            if (aType == "silver")
            {
                newPart.HardScale        = 1.2f * (new Vector3(1, 1, 1));
                newPart.HardFlatRotation = Random.Range(0f, 360f);
            }
            if (aType == "gold")
            {
                newPart.HardScale = 1.7f * (new Vector3(1, 1, 1));
            }
            foreach (Renderer f in newPart.PrimaryGameObject.GetComponentsInChildren <Renderer>())
            {
                f.gameObject.layer = ManagerManager.Manager.mBackgroundManager.mBackgroundLayer;
            }
            cache.return_particle(newPart);
        }

        var part = mEmitter.add_particle(cache.take_particle(), position, speed, 0.7f, aType);

        if (aType == "silver")
        {
            part.timer = new QuTimer(-0.5f, 0.2f);
        }
    }
コード例 #26
0
    public FlatUnlockBadge(CharacterIndex aChar, UnlockRequirements.UnlockData aData, int aDepth)
    {
        var unlockfont = ManagerManager.Manager.mNewRef.serifFont;
        var bgImage    = ManagerManager.Manager.mCharacterBundleManager.get_image("UNLOCKABLES_PLATE");

        background = new FlatElementImage(bgImage.Image, bgImage.Data.Size, aDepth);
        text1      = new FlatElementText(unlockfont, 120, "new lifestyle", aDepth + 1);
        text2      = new FlatElementText(unlockfont, 200, "UNLOCKED", aDepth + 1);
        mainIcon   = new FlatUnlockIcon(aChar, true, aDepth + 1);

        if (aData.Related.Length == 0)
        {
            text3 = new FlatElementText(unlockfont, 200, FlatElementText.convert_to_multiline_max(35, aData.Sentence), aDepth + 1);
        }
        else
        {
            text3 = new FlatElementText(unlockfont, 70, FlatElementText.convert_to_multiline_max(35, aData.Sentence), aDepth + 1);
        }

        mElements.Add(new FlatElementMultiBase.ElementOffset(background, new Vector3(0, 0, 0)));
        mElements.Add(new FlatElementMultiBase.ElementOffset(text1, new Vector3(0, 600, 0)));
        mElements.Add(new FlatElementMultiBase.ElementOffset(text2, new Vector3(0, 450, 0)));
        mElements.Add(new FlatElementMultiBase.ElementOffset(mainIcon, new Vector3(0, 125, 0)));
        mElements.Add(new FlatElementMultiBase.ElementOffset(text3, new Vector3(0, -200, 0)));

        contributors = new FlatUnlockIcon[aData.Related.Length];
        Vector3 step  = new Vector3(-400, 0, 0);
        Vector3 start = (contributors.Length - 1) * (-step) / 2f + new Vector3(0, -700, 0);

        for (int i = 0; i < contributors.Length; i++)
        {
            contributors[i] = new FlatUnlockIcon(aData.Related[i], false, aDepth + 1);
            FlatUnlockIcon e = contributors[i];
            mElements.Add(new FlatElementMultiBase.ElementOffset(e, start + step * i));
        }

        PrimaryGameObject = create_primary_from_elements();
        Depth             = aDepth;
    }
コード例 #27
0
    //void initialize(CharacterLoader aActualChar, int aDepth)
    void initialize(CharacterIndex?aIndex, int aDepth)
    {
        var meterImage = ManagerManager.Manager.mCharacterBundleManager.get_image("SELECTION_BOX");

        var newRef = ManagerManager.Manager.mNewRef;

        //mSquare = new FlatElementImage(newRef.bbChoiceBox, aDepth);
        mSquare              = new FlatElementImage(meterImage.Image, meterImage.Data.Size, aDepth);
        mSquare.HardColor    = GameConstants.UiRed;
        mText                = new FlatElementText(newRef.fatFont, 48, "", aDepth + 2);
        mDiffImage           = new FlatElementImage(null, aDepth + 3);
        mDiffImage.HardScale = 1.33f * Vector3.one;
        //mPerfect = new DifficultyObject(ManagerManager.Manager.mNewRef.uiPerfectStar, aDepth);
        mIcon           = new FlatElementImage(null, aDepth + 2);
        mIcon.HardScale = 1.25f * Vector3.one;
        //mMeter = new MeterImageObject(newRef.bbChoiceBox, null,MeterImageObject.FillStyle.DU, aDepth + 1);
        mMeter            = new MeterImageObject(meterImage.Image, meterImage.Data.Size, MeterImageObject.FillStyle.DU, aDepth + 1);
        mMeter.Percentage = 0.0f;
        set_perfectness(3);

        //mBody.set_target_pose(aPose);
        mElements.Add(new FlatElementMultiBase.ElementOffset(mSquare, new Vector3(0, 0, 0)));
        mElements.Add(new FlatElementMultiBase.ElementOffset(mDiffImage, new Vector3(-mSquare.BoundingBox.width / 2f + 80, -mSquare.BoundingBox.height / 2f + 80, 0)));
        mElements.Add(new FlatElementMultiBase.ElementOffset(mText, new Vector3(0, 0, 0)));
        //mElements.Add(new FlatElementMultiBase.ElementOffset(mPerfect, new Vector3(-122,65,0)));
        mElements.Add(new FlatElementMultiBase.ElementOffset(mMeter, new Vector3(0, 0, 0)));

        mElements.Add(new FlatElementMultiBase.ElementOffset(mIcon, new Vector3(0, 275, 0)));

        mText.HardColor = GameConstants.uiWhite;
        if (aIndex != null)
        {
            set_actual_character(aIndex.Value);
        }

        PrimaryGameObject = create_primary_from_elements();
        Depth             = aDepth;
    }
コード例 #28
0
    public void set_for_GRAVE(List <PerformanceStats> aStats)
    {
        //timing vars
        float gIntroText      = 4.5f;
        float gPreScoreCount  = 0.03f;
        float gScoreCount     = 0.2f;
        float gPostScoreCount = 0.07f;
        float gRestart        = 29;

        //disable the depth warning
        mManager.mZigManager.ForceShow = 2;

        //add the gravestone to the scene
        add_character(CharacterIndex.sGrave, true, false);

        //remove the grave
        if (aStats.Last().Character.Age == 999)
        {
            aStats.RemoveAt(aStats.Count - 1);
        }

        //add in fetus in case we skipped it in debug mode
        if (aStats.First().Character.Age != 0)
        {
            aStats.Insert(0, new PerformanceStats(new CharacterIndex(0, 0)));
        }

        //fake it for testing...

        /* TODO DELETE move this into ModeNormalPlay on force kill
         * mCharacters.Last().destroy(); //remove the grave
         * mElement.Remove(mCharacters.Last());
         * mCharacters.RemoveAt(mCharacters.Count -1);
         * Random.seed = 123;
         * for(int i = 0; i < 8; i++)
         * {
         *      if(aStats.Last().Character.Age < (new CharacterIndex(i,0)).Age)
         *      {
         *              PerformanceStats stat = new PerformanceStats(new CharacterIndex(i,Random.Range(0,4)));
         *              stat.update_score(0,Random.value);
         *              stat.update_score(1,Random.value);
         *              stat.Stats = mManager.mGameManager.CharacterHelper.Characters[stat.Character];
         *              aStats.Add(stat);
         *
         *              add_character(stat.Character,false);
         *      }
         * }
         * add_character(CharacterIndex.sGrave,false); //add the grave back in
         */


        //this is all a hack to get the score to show up right...
        float           scoreIncrementor = 0;
        FlatElementText finalScoreText   = new FlatElementText(mManager.mNewRef.serifFont, 70, "0", 21);

        finalScoreText.HardColor = (GameConstants.UiGraveText);
        FlatElementText finalAgeText   = new FlatElementText(mManager.mNewRef.serifFont, 50, "0", 21);
        float           ageIncrementer = 0;

        finalAgeText.HardColor = (GameConstants.UiGraveText);
        //perfectPercent.Text = ((int)(100*aStats.Sum(e=>e.Stats.Perfect+1)/(float)(aStats.Count*3))).ToString() + "%";
        //TODO why this no work??
        finalAgeText.Text = "0";        //aStats.Last().Character.Age.ToString();

        //hack to put things into bg camera
        foreach (Renderer f in finalScoreText.PrimaryGameObject.GetComponentsInChildren <Renderer>())
        {
            f.gameObject.layer = 4;
        }
        foreach (Renderer f in finalAgeText.PrimaryGameObject.GetComponentsInChildren <Renderer>())
        {
            f.gameObject.layer = 4;
        }
        //foreach (Renderer f in perfectEngraving.PrimaryGameObject.GetComponentsInChildren<Renderer>()) f.gameObject.layer = 4;

        Vector3 graveCenter = mCharacters[mCharacters.Count - 1].HardPosition + new Vector3(0, 50, 0);

        finalScoreText.HardPosition = graveCenter + new Vector3(30, -180, 0);
        finalAgeText.HardPosition   = graveCenter + new Vector3(25, 0, 0);
        mElement.Add(finalScoreText);
        //mElement.Add(perfectEngraving);
        mElement.Add(finalAgeText);

        graveCleanup.Add(finalScoreText);
        graveCleanup.Add(finalAgeText);


        TimedEventDistributor.TimedEventChain chain = TED.empty_chain();

        chain = chain.then_one_shot(
            delegate {
            set_sun();
        }
            , 0);
        chain = chain.then(
            low_skippable_text_bubble_event(GameStrings.GetString("SM1"), gIntroText), 3);

        /*.then( //wait a little bit to let the fading finish
         *      low_skippable_text_bubble_event("HERE IS YOUR LIFE STORY",gIntroText)
         *  );*/

        for (int i = 1; i < aStats.Count; i++)
        {
            PerformanceStats ps = aStats[i];


            chain = chain.then_one_shot(
                delegate() {
                if (ps.Character != CharacterIndex.sOneHundred)
                {
                    show_score(ps.Character, (int)ps.AdjustedScore, gPreScoreCount + gScoreCount + gPostScoreCount + 1.5f);
                }
            }
                , gPreScoreCount).then(
                delegate(float aTime)
            {
                if (aTime < gScoreCount)
                {
                    float displayScore  = scoreIncrementor + (aTime / gScoreCount) * ps.AdjustedScore;
                    float displayAge    = ageIncrementer + (aTime / gScoreCount) * (ps.Character.Age - ageIncrementer);
                    finalScoreText.Text = "" + (int)displayScore;
                    finalAgeText.Text   = "" + (int)displayAge;
                }
                if (aTime > gScoreCount + gPostScoreCount)
                {
                    scoreIncrementor   += ps.AdjustedScore;
                    ageIncrementer      = ps.Character.Age;
                    finalScoreText.Text = "" + (int)scoreIncrementor;
                    finalAgeText.Text   = "" + (int)ageIncrementer;
                    return(true);
                }
                return(false);
            },
                0);
        }

        chain = chain.wait(2.5f);

        //CONNECTIONS
        for (int i = 1; i < aStats.Count; i++)
        {
            PerformanceStats ps = aStats[i];



            float gFirstConnectionText = 5f;
            float gConnectionText      = 5f;
            float gPreParticle         = 2f;


            //TODO grave connections
            CharIndexContainerString connections;

            //TODO
            bool wasHard = ps.Stats.Difficulty > 1;
            if (wasHard)
            {
                connections = mManager.mCharacterBundleManager.get_character_stat(ps.Character).CharacterInfo.HardConnections;
            }
            else
            {
                connections = mManager.mCharacterBundleManager.get_character_stat(ps.Character).CharacterInfo.EasyConnections;
            }


            //for each connection, check if it is relevent to the currently looping character
            for (int j = 1; j < aStats.Count; j++)
            {
                var targetCharacter  = aStats[j].Character;                             //charcter we are connecting to
                var targetConnection = connections[targetCharacter];                    //message
                if (targetConnection != null && targetConnection != "")
                {
                    int accumChange = 0;                     //accum change is targetCharacters effect on the current character
                    accumChange = aStats[j].CutsceneChangeSet.accumulative_changes()[ps.Character];

                    if ((wasHard && accumChange > 0) ||                   //if was hard and effect was positive (i.e. hard)
                        (!wasHard && accumChange < 0))                    //if was easy and effect was negative (i.e. easy)
                    {
                        string []       conText = targetConnection.Replace("<S>", "@").Split('@');
                        PopupTextObject npo     = null;
                        chain = chain.then(
                            delegate(float aTime)
                        {
                            if (npo == null)
                            {
                                npo = add_timed_text_bubble(conText[0], gFirstConnectionText + gConnectionText, -0.6f, 1);
                                set_popup_color_for_cutscene_particles(npo, wasHard);
                                create_shine_over_character(targetCharacter, !wasHard, gFirstConnectionText + gConnectionText);
                                TED.add_one_shot_event(
                                    delegate() {
                                    create_shine_over_character(ps.Character, !wasHard, gFirstConnectionText + gConnectionText - 0.3f);
                                }
                                    , 0.3f);
                            }
                            if (npo.IsDestroyed || aTime > gPreParticle)
                            {
                                return(true);
                            }
                            return(false);
                        }
                            , 0);

                        System.Func <FlatElementBase, float, bool> jiggleDelegate =
                            delegate(FlatElementBase aBase, float aTime2)
                        {
                            aBase.mLocalRotation = Quaternion.AngleAxis(Mathf.Sin(aTime2 * Mathf.PI * 2 * 8) * 10f, Vector3.forward);
                            if (aTime2 >= (gFirstConnectionText - gPreParticle) / 4f)
                            {
                                aBase.mLocalRotation = Quaternion.identity;
                                return(true);
                            }
                            return(false);
                        };

                        chain = chain.then_one_shot(
                            delegate()
                        {
                            if (npo != null)
                            {
                                mCharacters[char_to_list_index(targetCharacter)].Events.add_event(jiggleDelegate, 0);
                                ManagerManager.Manager.mMusicManager.play_sound_effect("graveShine");
                            }
                            //create the shine
                        }
                            ).then_one_shot(
                            delegate()
                        {
                            if (npo != null && !npo.IsDestroyed)                                    //if we used softskip, npo could be destroyed at this point
                            {
                                npo.Text = conText.Last();
                                mCharacters[char_to_list_index(ps.Character)].Events.add_event(jiggleDelegate, 0);
                                ManagerManager.Manager.mMusicManager.play_sound_effect("graveShine");
                            }
                        },
                            gFirstConnectionText - gPreParticle).then(
                            delegate(float aTime){
                            if (npo.IsDestroyed || aTime > gConnectionText)
                            {
                                npo = null;
                                return(true);
                            }
                            return(false);
                        }
                            );
                    }
                }
            }
        }

        string deathSentence = "";

        if (aStats[aStats.Count - 1].DeathTime != -1)
        {
            deathSentence += GameStrings.GetString("SM2");
        }
        else
        {
            deathSentence += GameStrings.GetString("SM3");
        }
        if (!aStats [aStats.Count - 1].Character.IsDescriptionAdjective)
        {
            if ("aeiouAEIOU".IndexOf(aStats[aStats.Count - 1].Character.Description[0]) >= 0)
            {
                deathSentence += GameStrings.GetString("SM4");
            }
            else
            {
                deathSentence += GameStrings.GetString("SM5");
            }
        }
        deathSentence += aStats[aStats.Count - 1].Character.Description;

        chain = chain.then(
            low_skippable_text_bubble_event(deathSentence, gIntroText)
            , 1);


        foreach (CharacterIndex e in CharacterIndex.sAllCharacters)
        {
            UnlockRequirements.UnlockData unlockData;
            if (mManager.mMetaManager.UnlockManager.unlockedThisGame.TryGetValue(new UnlockRequirements.FakeCharIndex(e), out unlockData))
            {
                if (unlockData != null)
                {
                    ManagerManager.Log("announcing unlock " + e.StringIdentifier);
                    CharacterIndex ce = new CharacterIndex(e);
                    chain = chain.then_one_shot(
                        delegate(){
                        mUnlockAnnouncer.announce_unlock(ce, unlockData);
                    }
                        , 0).then(
                        delegate(float aTime){
                        return(!mUnlockAnnouncer.IsAnnouncing);
                    }
                        , 0);
                }
            }
        }

        //so we don't announce unlock again when we restart
        mManager.mMetaManager.UnlockManager.unlockedThisGame.Clear();



        if (GameConstants.showReward && aStats[aStats.Count - 1].Character.LevelIndex >= 7)
        {
            FlatElementImage rewardImage = null;
            FlatElementImage rewardFrame = null;
            mModeNormalPlay.mGiftManager.set_background_for_render();
            chain = chain.then_one_shot(
                delegate()  {
                var frameImg = mManager.mCharacterBundleManager.get_image("GIFT_frame");
                rewardFrame  = new FlatElementImage(frameImg.Image, frameImg.Data.Size, 24);
                rewardImage  = new FlatElementImage(mModeNormalPlay.mGiftManager.render_gift(0), new Vector2(2001, 1128), 23);

                //TODO play sound effect
                rewardImage.HardPosition = mFlatCamera.get_point(0, 3);
                rewardFrame.HardPosition = rewardImage.HardPosition;
                rewardImage.SoftPosition = mFlatCamera.get_point(Vector3.zero) + new Vector3(0, 150, 0);
                rewardFrame.SoftPosition = rewardImage.SoftPosition + new Vector3(0, 70, 0);
                mElement.Add(rewardImage);
                mElement.Add(rewardFrame);
                graveCleanup.Add(rewardImage);
                graveCleanup.Add(rewardFrame);

                var subChain = TED.empty_chain().wait(4);
                if (mModeNormalPlay.mGiftManager.gift_count() > 0)
                {
                    for (int i = 1; i < 100; i++)
                    {
                        int localIndex = i % mModeNormalPlay.mGiftManager.gift_count();
                        subChain       = subChain.then_one_shot(
                            delegate(){
                            //TODO sound effect
                            mModeNormalPlay.mGiftManager.render_gift(localIndex);
                        }
                            , 1f);
                    }
                }
            }
                , 2);
            //chain = chain.wait(6);
            //chain = chain.then(skippable_text_bubble_event("YOU ARE THE PERFECT WOMAN!",5,-0.8f,2),0);
        }



        //variables for credits animation..
        float lastTime = 0;

        FlatElementImage[] logos = null;
        //PopupTextObject gameOver = null;
        List <FlatElementText> creditsText = new List <FlatElementText>();
        float scrollSpeed = 820;

        mGraveCompleteCb = delegate()
        {
            Vector3 barYPosition = mFlatCamera.get_point(Vector3.zero) + new Vector3(0, -700, 0);
            TED.add_one_shot_event(
                delegate()
            {
                mManager.mMusicManager.fade_in_extra_music("creditsMusic");
                mManager.mMusicManager.fade_out();
                var imgData         = mManager.mCharacterBundleManager.get_image("BAR");
                var barImg          = new FlatElementImage(imgData.Image, imgData.Data.Size, 24);
                barImg.HardPosition = barYPosition + new Vector3(0, -1000, 0);
                barImg.SoftPosition = barYPosition;
                mElement.Add(barImg);
                graveCleanup.Add(barImg);
            }
                , 0).then_one_shot(
                delegate()
            {
                float lastXPosition = mFlatCamera.get_point(Vector3.zero).x - mFlatCamera.Width / 2 - 100;
                int counter         = 0;
                foreach (string e in GameConstants.credits)
                {
                    string val = e;
                    if (System.Text.RegularExpressions.Regex.IsMatch(e, @"^\d+$"))
                    {
                        val = GameStrings.GetString("GCcredits" + e);
                    }

                    var text          = new FlatElementText(mManager.mNewRef.genericFont, 70, val, 25);
                    float textWidth   = text.BoundingBox.width;
                    text.HardColor    = new Color(1, 1, 1, 1);
                    text.HardPosition = new Vector3(lastXPosition - textWidth / 2f, barYPosition.y, 0);
                    lastXPosition    += -textWidth - 75;
                    creditsText.Add(text);
                    mElement.Add(text);
                    graveCleanup.Add(text);
                    counter++;
                }

                if (GameConstants.SHOW_LOGOS)
                {
                    logos               = new FlatElementImage[3];
                    lastXPosition      += -200;
                    string[] imageNames = new string[] { "LOGO_FA", "LOGO_AI", "LOGO_GL" };
                    for (int i = 0; i < imageNames.Length; i++)
                    {
                        var imgData      = mManager.mCharacterBundleManager.get_image(imageNames[i]);
                        var img          = new FlatElementImage(imgData.Image, imgData.Data.Size, 25);
                        float imgWidth   = img.BoundingBox.width;
                        img.HardPosition = new Vector3(lastXPosition - imgWidth / 2, barYPosition.y, 0);
                        lastXPosition   += -img.BoundingBox.width / 2f - 500;
                        logos[i]         = img;
                        mElement.Add(img);
                        graveCleanup.Add(img);
                    }
                }
            }
                , 1).then_one_shot(
                delegate()
            {
                /* this will fade everything out super slowly
                 * List<FlatElementBase> graveItems = new List<FlatElementBase>(){finalScoreText,perfectPercent};
                 * foreach(FlatElementBase e in
                 *  mCharacters.Cast<FlatElementBase>()
                 *  .Concat(mDiffLabels.Cast<FlatElementBase>())
                 *  .Concat(mScoreLabels.Cast<FlatElementBase>())
                 *  .Concat(mScoreTexts.Cast<FlatElementBase>())
                 *  .Concat(graveItems.Cast<FlatElementBase>()))
                 * {
                 *  e.ColorInterpolationLimit = 0.05f;
                 *  e.SoftColor = GameConstants.UiWhiteTransparent;
                 * }*/
            }
                , 0).then(
                delegate(float aTime)
            {
                //scroll contents down
                Vector3 scroll = new Vector3(scrollSpeed * (aTime - lastTime), 0, 0);
                foreach (FlatElementText e in creditsText)
                {
                    e.SoftPosition = e.SoftPosition + scroll;
                }

                if (logos != null)
                {
                    foreach (FlatElementImage e in logos)
                    {
                        e.SoftPosition = e.SoftPosition + scroll;
                    }
                }

                lastTime = aTime;
                if (Input.GetKeyDown(KeyCode.Alpha0))
                {
                    return(true);
                }

                if (aTime > gRestart)
                {
                    return(true);
                }
                return(false);
            }
                , 0).then_one_shot(
                delegate(){
                mManager.mMusicManager.fade_out_extra_music();
                mManager.restart_game();
            }
                , 0);
            mGraveCompleteChain = TED.LastEventKeyAdded;
        };

        chain = chain.then_one_shot(
            delegate()
        {
            mGraveCompleteCb();
            mGraveCompleteCb = null;
            mGraveChain      = null;
        }
            , 1);

        mGraveChain = TED.LastEventKeyAdded;
    }
コード例 #29
0
    //this needs to be called in order of characters created....
    public void show_score(CharacterIndex aIndex, int aScore, float showTime, float jiggleDelayTime = 0)
    {
        int              ind          = char_to_list_index(aIndex);
        FlatElementText  scoreText    = new FlatElementText(mManager.mNewRef.fatFont, 40, aScore.ToString(), 21);
        var              scoreBgImage = mManager.mCharacterBundleManager.get_image("SCORELABEL");
        FlatElementImage scoreBg      = new FlatElementImage(scoreBgImage.Image, scoreBgImage.Data.Size, 20);

        scoreBg.HardPosition = mFlatCamera.get_point(0, 1.5f);

        //SLOPPY, restart will clear out all characters but the TED will still be running and calling this function which will crash here
        if (mCharacters.Count > ind)
        {
            scoreBg.HardPosition = mCharacters[ind].SoftPosition + new Vector3(0, 400, 0);
        }

        scoreText.HardPosition = scoreBg.HardPosition;
        scoreText.SoftPosition = scoreBg.SoftPosition;
        scoreText.Text         = "" + aScore;
        scoreText.PositionInterpolationMinLimit = 200f;
        scoreBg.PositionInterpolationMinLimit   = 200f;
        scoreText.ColorInterpolationMinLimit    = 2f;
        scoreBg.ColorInterpolationMinLimit      = 2f;

        mScoreLabels.Add(scoreBg);
        mScoreTexts.Add(scoreText);
        mElement.Add(scoreBg);
        mElement.Add(scoreText);

        System.Func <FlatElementBase, float, bool> scoreJiggleDelegate =
            delegate(FlatElementBase aBase, float aTime2)
        {
            aTime2 -= jiggleDelayTime;
            if (aTime2 > 0)
            {
                aBase.mLocalRotation = Quaternion.AngleAxis(Mathf.Sin(aTime2 * Mathf.PI * 2 * 4) * 15f, Vector3.forward);
                if (aTime2 >= 0.7f)
                {
                    aBase.mLocalRotation = Quaternion.identity;
                    return(true);
                }
            }
            return(false);
        };
        scoreBg.Events.add_event(scoreJiggleDelegate, 0.03f);
        scoreText.Events.add_event(scoreJiggleDelegate, 0.03f);

        //play the counting sound
        TED.add_one_shot_event(delegate(){ mManager.mMusicManager.play_sound_effect("counting"); }, jiggleDelayTime);



        TED.add_event(
            delegate(float aTime) {
            if (aTime > showTime)
            {
                scoreBg.SoftColor   = GameConstants.UiWhiteTransparent;
                scoreText.SoftColor = GameConstants.UiWhiteTransparent;
                return(true);
            }
            return(false);
        }
            , 0).then_one_shot(
            delegate(){
            mScoreLabels.Remove(scoreBg);
            mScoreTexts.Remove(scoreText);
            mElement.Remove(scoreBg);
            mElement.Remove(scoreText);
            scoreBg.destroy();
            scoreText.destroy();
        }
            , 3);
    }
コード例 #30
0
    public void initialize()
    {
        mInterfaceManager = new NewInterfaceManager(mManager, this);
        mInterfaceManager.initialize();
        //mInterfaceManager.mFlatCamera.set_render_texture_mode(true);
        mInterfaceManager.setup_bb();

        mSunsetManager = new SunsetManager(mManager, this);
        mSunsetManager.initialize();
        mSunsetManager.mFlatCamera.set_render_texture_mode(true);
        mManager.mAssetLoader.new_load_asset_bundle("SUNSET",
                                                    delegate(AssetBundle aBundle){
            mSunsetManager.sunset_loaded_callback(aBundle, "SUNSET");
        }
                                                    );

        mGiftManager = new GiftManager(mManager, this);
        mGiftManager.initialize();
        mManager.mAssetLoader.new_load_asset_bundle("GIFT",
                                                    delegate(AssetBundle aBundle){
            mGiftManager.gift_loaded_callback(aBundle, "GIFT");
        }
                                                    );

        mChoosingManager = new ChoosingManager(mManager, this);
        mChoosingManager.initialize();
        mChoosingManager.mFlatCamera.set_render_texture_mode(true);

        mFlatCamera = new FlatCameraManager(new Vector3(-23200, 3500, 0), 10);
        mFlatCamera.Camera.depth = 100;
        mFlatCamera.fit_camera_to_screen();

        mSunsetImage = new FlatElementImage(mSunsetManager.mFlatCamera.RT, 0);
        var hs = Vector3.one * mFlatCamera.Width / mSunsetImage.mImage.PixelDimension.x;

        //TODO extra space for rounded edges
        //hs.y += 600; //additional 300 pixels..
        mSunsetImage.HardScale    = hs;
        mSunsetImage.HardPosition = mFlatCamera.get_point(Vector3.zero) + Vector3.up * mSunsetImage.BoundingBox.height;
        //mSunsetImage.HardShader = mManager.mReferences.mRenderTextureShader;
        mSunsetImage.PositionInterpolationMinLimit = 10;         //so it doesn't take forever to entirely cover the image underneath
        mElement.Add(mSunsetImage);


        mChoosingImage              = new FlatElementImage(mChoosingManager.mFlatCamera.RT, 1);
        mChoosingImage.HardScale    = Vector3.one * mFlatCamera.Width / mChoosingImage.mImage.PixelDimension.x;
        mChoosingImage.HardPosition = mFlatCamera.get_point(Vector3.zero) + Vector3.right * mChoosingImage.BoundingBox.width;
        //mChoosingImage.HardShader = mManager.mReferences.mRenderTextureShader;
        mElement.Add(mChoosingImage);


        //this is silly, we forec the interface image to appear above everything else pretty much just so we can have text bubbles show above everything
        //kind of a dumb way to do it oh well.

        /*
         * mInterfaceImage = new FlatElementImage(mInterfaceManager.mFlatCamera.RT,1);
         * mInterfaceImage.HardScale = Vector3.one * mFlatCamera.Width/mInterfaceImage.mImage.PixelDimension.x;
         * mInterfaceImage.HardPosition = mFlatCamera.get_point(Vector3.zero);
         * mElement.Add(mInterfaceImage);*/

        mIsInitialized = true;
    }