Beispiel #1
0
    public GamePosStruct toStruct()
    {
        GamePosStruct gpStruct = new GamePosStruct();

        gpStruct.x     = planePosition.x;
        gpStruct.y     = planePosition.y;
        gpStruct.depth = depth;

        return(gpStruct);
    }
Beispiel #2
0
    public void RpcDig(GamePosStruct posStruct)
    {
        GamePosition pos       = GamePosition.ParseStruct(posStruct);
        MapCoords    mapCoords = pos.toMapCoords();


        Tile tile = mapData.getTile(mapCoords);

        bool redraw = false;

        if (tile.GetType().Equals(typeof(Wall)))
        {
            redraw = mapData.smartSet(mapCoords, new Dirt());
        }
        else if (tile.GetType().Equals(typeof(Dirt)))
        {
            MapCoords lowerCoords = mapCoords.add(depth: 1);
            Tile      lowTile     = mapData.getTile(lowerCoords);
            if (lowTile != null && lowTile.GetType().Equals(typeof(Wall)))
            {
                bool redrawLower = mapData.smartSet(lowerCoords, new Dirt());

                if (redrawLower)
                {
                    redrawNonaTile(lowerCoords);
                }
            }

            if (lowTile != null)
            {
                redraw = mapData.smartSet(mapCoords, new Air(ConnectableVariant.None));
            }
        }

        if (redraw)
        {
            redrawNonaTile(mapCoords);
        }
    }
Beispiel #3
0
 private void CmdPlace(GamePosStruct placeSpot)
 {
     map.place(GamePosition.ParseStruct(placeSpot));
 }
Beispiel #4
0
 private void CmdDig(GamePosStruct digSpot)
 {
     map.dig(GamePosition.ParseStruct(digSpot));
 }
Beispiel #5
0
 public static GamePosition ParseStruct(GamePosStruct gpStruct)
 {
     return(new GamePosition(new Vector2(gpStruct.x, gpStruct.y), gpStruct.depth));
 }
Beispiel #6
0
    public void RpcPlace(GamePosStruct posStruct)
    {
        GamePosition pos       = GamePosition.ParseStruct(posStruct);
        MapCoords    mapCoords = pos.toMapCoords();


        Tile tile = mapData.getTile(mapCoords);

        bool redraw = false;

        switch (tile.GetType().Name)
        {
        case "Wall":
            Wall wall = (Wall)tile;

            if (wall.getSpriteIndex() == 26)
            {
                MapCoords upperTileCoords = mapCoords.add(0, 1, -1);
                if (upperTileCoords.depth < 0)
                {
                    return;
                }
                bool wasChange = mapData.smartSet(upperTileCoords, new Air(ConnectableVariant.None));
                if (wasChange)
                {
                    redrawNonaTile(upperTileCoords);
                }

                mapData.smartSet(mapCoords.add(y: 1), new Ladder());
                redrawNonaTile(mapCoords);
            }

            break;

        case "Dirt":
            mapData.smartSet(mapCoords, new Wall(ConnectableVariant.None));
            redrawNonaTile(mapCoords);

            MapCoords upperCoord = mapCoords.add(depth: -1);
            Tile      upperTile  = getNonaTile(upperCoord) [1, 1];
            if (upperTile == null)
            {
                return;
            }
            if (upperTile.GetType().Equals(typeof(Air)))
            {
                mapData.smartSet(upperCoord, new Dirt());
                redrawNonaTile(upperCoord);
            }

            break;

        case "Air":
            mapData.smartSet(mapCoords, new Dirt());
            redrawNonaTile(mapCoords);
            break;

        case "Ladder":
            mapData.smartSet(mapCoords, new Dirt());
            redrawNonaTile(mapCoords);
            break;

        default:
            return;
        }
    }
Beispiel #7
0
 void CmdTransmitPosition(GamePosStruct pos)
 {
     syncPos = pos;
 }