Exemplo n.º 1
0
    public void SetState(TileGroupState tileGroupState)
    {
        containerObject.position = tileGroupState.globalPosition;
        isExplored = tileGroupState.isExplored;

        foreach (Tile tile in tileList)
        {
            SingleTileState sts = (from t in tileGroupState.tileStates
                                   where t.tileGUID == tile.hexTile.GUID
                                   select t).FirstOr(null);
            if (sts != null)
            {
                tile.SetState(sts);
            }
        }

        GenerateGroupCenter();
    }
Exemplo n.º 2
0
    public TileState GetState()
    {
        List <TileGroupState> tgStates        = new List <TileGroupState>();
        List <Guid>           dynamicChapters = new List <Guid>();

        foreach (TileGroup tg in tileGroupList)
        {
            TileGroupState tgState = new TileGroupState();

            tgState.globalPosition = tg.containerObject.position;
            tgState.isExplored     = tg.isExplored;
            tgState.guid           = tg.GUID;
            if (tg.GetChapter().isDynamic)
            {
                dynamicChapters.Add(tg.GUID);
            }

            List <SingleTileState> singleTileState = new List <SingleTileState>();

            foreach (Tile t in tg.tileList)
            {
                SingleTileState state = new SingleTileState()
                {
                    isActive              = t.gameObject.activeInHierarchy,
                    tileGUID              = t.hexTile.GUID,
                    tokenTriggerList      = t.tokenTriggerList,
                    isExplored            = t.isExplored,
                    globalPosition        = t.transform.position,
                    globalParentPosition  = t.transform.parent.position,
                    globalParentYRotation = t.transform.parent.rotation.eulerAngles.y,
                    tokenStates           = t.tokenStates
                };
                singleTileState.Add(state);
            }
            tgState.tileStates = singleTileState;
            tgStates.Add(tgState);
        }

        return(new TileState()
        {
            activatedDynamicChapters = dynamicChapters,
            tileGroupStates = tgStates
        });
    }
Exemplo n.º 3
0
    public void SetState(SingleTileState singleTileState)
    {
        isExplored = singleTileState.isExplored;
        if (isExplored)
        {
            if (singleTileState.isActive)
            {
                exploreToken.gameObject.SetActive(false);
            }
            DOTween.To(() => 0, x =>
            {
                sepiaValue = x;
                meshRenderer.material.SetFloat("_sepiaValue", sepiaValue);
            }, 0, 2f);
        }
        else
        {
            if (singleTileState.isActive)
            {
                RevealExplorationToken();
            }
            else
            {
                exploreToken.gameObject.SetActive(false);
                exploreToken.position = exploreToken.position.Y(2f);
            }

            DOTween.To(() => 1, x =>
            {
                sepiaValue = x;
                meshRenderer.material.SetFloat("_sepiaValue", sepiaValue);
            }, 1, 2f);
        }

        ///RESTORE TILE STATE
        transform.parent.position = singleTileState.globalParentPosition;
        transform.parent.rotation = Quaternion.Euler(0, singleTileState.globalParentYRotation, 0);
        transform.position        = singleTileState.globalPosition;
        tokenTriggerList          = singleTileState.tokenTriggerList;
        tokenStates = singleTileState.tokenStates;
        gameObject.SetActive(singleTileState.isActive);

        ///RESTORE TOKENS
        //clear tokenstates list and remove all tokens on tile
        tokenStates = singleTileState.tokenStates;
        //get all token on this tile
        Transform[] tf     = GetChildren("Token(Clone)");
        var         remove = tf.Select(x => x.gameObject);

        foreach (var rmd in remove)
        {
            Destroy(rmd.gameObject);
        }
        //recreate tokens
        foreach (TokenState ts in singleTileState.tokenStates)
        {
            CreateToken(ts);
        }

        //remove any tokens that are created from replaced event
        //only important for quick loading
        //var replacedMDs = tf.Where( x => x.GetComponent<MetaData>().isCreatedFromReplaced );
        //foreach ( var rmd in replacedMDs )
        //	Destroy( rmd.gameObject );


        //restore token states

        /*for ( int i = 0; i < tf.Length; i++ )
         * {
         *      //token on tile
         *      MetaData md = tf[i].GetComponent<MetaData>();
         *      //find matching token state to token on tile
         *      TokenState token = ( from mjson in singleTileState.tokenStates
         *                                                                                       where mjson.metaData.GUID == md.GUID || mjson.metaData.interactionName == md.interactionName
         *                                                                                       select mjson ).FirstOr( null );
         *      if ( token != null )
         *      {
         *              md.gameObject.SetActive( token.isActive );
         *              md.transform.localScale = Vector3.one;
         *              md.transform.localPosition = token.localPosition;
         *              md.triggerName = token.metaData.triggerName;
         *              md.interactionName = token.metaData.interactionName;
         *              md.triggeredByName = token.metaData.triggeredByName;
         *              md.tokenType = token.metaData.tokenType;
         *              md.offset = token.metaData.offset;
         *              md.isRandom = token.metaData.isRandom;
         *              md.tileID = token.metaData.tileID;
         *              md.hasBeenReplaced = token.metaData.hasBeenReplaced;
         *              //md.isActive = token.metaData.isActive;
         *      }
         * }*/
    }