Ejemplo n.º 1
0
    public Vector3 GetConnectionOffset(BuildTile.TileConnections conn)
    {
        Vector3 offset = Vector3.zero;

        switch (conn)
        {
        case BuildTile.TileConnections.NORTH:
            offset = new Vector3(0, 0, 1);
            break;

        case BuildTile.TileConnections.EAST:
            offset = new Vector3(1, 0, 0);
            break;

        case BuildTile.TileConnections.SOUTH:
            offset = new Vector3(0, 0, -1);
            break;

        case BuildTile.TileConnections.WEST:
            offset = new Vector3(-1, 0, 0);
            break;
        }

        return(offset * ((float)tileSize / 2.0f));
    }
Ejemplo n.º 2
0
    public Vector3 GetConnectionPoint(Vector3Int worldTileLocation, BuildTile.TileConnections conn)
    {
        var worldPos = GetInstantiationLocation(worldTileLocation);

        Vector3 offset = Vector3.zero;

        switch (conn)
        {
        case BuildTile.TileConnections.NORTH:
            offset = new Vector3(0, 0, 1);
            break;

        case BuildTile.TileConnections.EAST:
            offset = new Vector3(1, 0, 0);
            break;

        case BuildTile.TileConnections.SOUTH:
            offset = new Vector3(0, 0, -1);
            break;

        case BuildTile.TileConnections.WEST:
            offset = new Vector3(-1, 0, 0);
            break;
        }

        return(worldPos + offset * ((float)tileSize / 2.0f));
    }
Ejemplo n.º 3
0
    void Start()
    {
        rbody        = GetComponent <Rigidbody>();
        tilePosition = GamePlay.grid.GetTileLocation(transform.position);

        if (!GamePlay.grid.CheckWithinBounds(tilePosition))
        {
            enabled = false;
            return;
        }

        var cellObj = GamePlay.grid.GetCellData(GamePlay.grid.GetTileLocation(transform.position)).cellObject;

        if (cellObj != null)
        {
            currentRail       = cellObj.GetComponent <RailConfiguration>();
            transform.forward = currentRail.transform.forward;
            currentDirection  = GridController.GetDirectionFromRotationInt(GamePlay.grid.GetCellData(GamePlay.grid.GetTileLocation(transform.position)).rotations);
        }
    }
Ejemplo n.º 4
0
    public static BuildTile.TileConnections GetReciprocalConnection(BuildTile.TileConnections connection)
    {
        switch (connection)
        {
        case BuildTile.TileConnections.NORTH:
            return(BuildTile.TileConnections.SOUTH);

        case BuildTile.TileConnections.EAST:
            return(BuildTile.TileConnections.WEST);

        case BuildTile.TileConnections.SOUTH:
            return(BuildTile.TileConnections.NORTH);

        case BuildTile.TileConnections.WEST:
            return(BuildTile.TileConnections.EAST);

        default:
            return(BuildTile.TileConnections.NONE);
        }
    }
Ejemplo n.º 5
0
    public Vector3Int GetConnectingTileOffset(BuildTile.TileConnections connection)
    {
        switch (connection)
        {
        case BuildTile.TileConnections.NORTH:
            return(new Vector3Int(0, 0, 1));

        case BuildTile.TileConnections.EAST:
            return(new Vector3Int(1, 0, 0));

        case BuildTile.TileConnections.SOUTH:
            return(new Vector3Int(0, 0, -1));

        case BuildTile.TileConnections.WEST:
            return(new Vector3Int(-1, 0, 0));

        default:
            return(new Vector3Int(0, 0, 0));
        }
    }
Ejemplo n.º 6
0
    void Update()
    {
        if (currentRail == null)
        {
            enabled           = false;
            rbody.isKinematic = false;
            rbody.AddForce(tileVelocity + Vector3.up * 5.0f, ForceMode.Impulse);
            return;
        }

        transform.position = GamePlay.grid.GetInstantiationLocation(tilePosition) + Vector3.up * heightOffset;
        railProgress      += railSpeed * Time.deltaTime;

        while (railProgress >= 1.0f)
        {
            // get next tile
            var thing = currentDirection;
            foreach (var route in currentRail.connections)
            {
                if (GridController.GetReciprocalConnection(route.Key) == thing)
                {
                    continue;
                }
                thing = route.Key;
                break;
            }
            currentRail = currentRail.connections[thing];

            if (currentRail == null)
            {
                return;
            }
            prevTilePosition  = tilePosition;
            tilePosition      = currentRail.GetTilePosition();
            transform.forward = currentRail.transform.forward;
            currentDirection  = thing;

            railProgress -= 1.0f;
        }
    }
Ejemplo n.º 7
0
    public void BuyItem(bool _cheatMode)
    {
        if (GamePlay.inventory == null)
        {
            GamePlay.inventory = new Dictionary <string, BaseItem>();
        }
        if (_cheatMode || GamePlay.coin > CurrentItem.purchasecost)
        {
            if (!CanBuild(CurrentItem.itemname))
            {
                BuildTile bt = new BuildTile();
                bt.buildPrefab         = Resources.Load(CurrentItem.prefab) as GameObject;
                bt.myName              = CurrentItem.itemname;
                bt.tileType            = CurrentItem.AssetType;// == AssetTypes.TRACK ? BuildTile.TileTypes.RAIL : BuildTile.TileTypes.SCENARY;
                CurrentItem.qtyInStock = 1;

                bt.dangerContribution = CurrentItem.dangerContribution > 5?CurrentItem.dangerContribution:5;
                if (bt.tileType == BuildTile.TileTypes.RAIL)
                {
                    BuildTile.TileConnections[] baseConnections = new BuildTile.TileConnections[CurrentItem.connections.Length];
                    //Decode connections.
                    int    r    = -1;
                    string cons = CurrentItem.connections.ToUpper();
                    for (int i = 0; i < CurrentItem.connections.Length; i++)
                    {
                        switch (cons[i])
                        {
                        case 'N':
                            r = 0;
                            break;

                        case 'E':
                            r = 1;
                            break;

                        case 'S':
                            r = 2;
                            break;

                        case 'W':
                            r = 3;
                            break;

                        default:
                            break;
                        }
                        baseConnections[i] = (BuildTile.TileConnections)r;
                    }
                    bt.baseConnections = baseConnections;
                }

                bt.ForceValidate();
                if (!GamePlay.inventory.ContainsKey(CurrentItem.itemname))
                {
                    GamePlay.inventory.Add(CurrentItem.itemname, CurrentItem);

                    DesignController.instance.AddBuildTile(bt);

                    DesignController.instance.buttonsByName[CurrentItem.itemname].SetButtonState(true);
                }
            }
            else
            {
                incInventory(CurrentItem.itemname);

                if (GamePlay.inventory[CurrentItem.itemname].qtyInStock > 0)
                {
                    DesignController.instance.buttonsByName[CurrentItem.itemname].SetButtonState(true);
                }
            }
            GamePlay.coin -= !_cheatMode? CurrentItem.purchasecost:0;
            wallet.text    = $"Currante Balance:{GamePlay.coin.ToString()}";
        }
        else
        {
            //TODO do a different thing to say not enough cash.\
            Sequence dialogBounceFade = DOTween.Sequence();
            dialogBounceFade.Append(fadeDialog.DOFade(1, .3f));
            dialogBounceFade.AppendInterval(1);
            dialogBounceFade.Append(fadeDialog.DOFade(0, .3f));
            dialogBounceFade.PlayForward();
        }
    }