Beispiel #1
0
    TileBase GetTile(Object.ObjectType objType)
    {
        switch (objType)
        {
        case Object.ObjectType.Floor:
            return(m_TileFloor);

        case Object.ObjectType.Carpet:
            return(m_TileCarpet);

        case Object.ObjectType.Bed:
            return(m_TileBed);

        case Object.ObjectType.Door:
            return(m_TileDoor);

        case Object.ObjectType.Wardrobe:
            return(m_TileWardrobe);

        case Object.ObjectType.Table:
            return(m_TileTable);

        case Object.ObjectType.Wall:
            return(m_TileWall);

        default:
            return(null);
        }
    }
Beispiel #2
0
    public Object CreateEntity(Object.ObjectType type)
    {
        // Debug.Log("CreateEntity " + type);

        switch (type)
        {
        case Object.ObjectType.Wall:
            return(new Wall());

        case Object.ObjectType.Floor:
            return(new Floor());

        case Object.ObjectType.Carpet:
            return(new Carpet());

        case Object.ObjectType.Bed:
            return(new Bed());

        case Object.ObjectType.Door:
            return(new Door());

        case Object.ObjectType.Wardrobe:
            return(new Wardrobe());

        case Object.ObjectType.Table:
            return(new Table());

        default: return(null);
        }
    }
Beispiel #3
0
    void GenerateLevelTileMap()
    {
        var data       = m_MainLogic.GetDataLoader().GetData();
        var entittyMan = m_MainLogic.GetEntityManager();

        m_Objects.Clear();
        Object obj = null;

        Object.ObjectType objectType = Object.ObjectType.Wall;

        GameData.Location location;
        Orientation       ori = Orientation.None;

        TileBase tile = null;

        for (int i = 0; i < data.GetLevel().roomObjects.Count; i++)
        {
            objectType = (Object.ObjectType)(data.GetLevel().roomObjects[i].type);
            obj        = entittyMan.CreateEntity(objectType);
            m_Objects.Add(obj);

            // put object in Location
            location = data.GetLevel().roomObjects[i].location;
            ori      = (Orientation)location.or;
            obj.Put(location.st, location.ed, ori);

            tile = GetTile((Object.ObjectType)data.GetLevel().roomObjects[i].type);
            PaintLocation(obj.GetLocation(), tile);
        }
        GenerateFloor();
    }
Beispiel #4
0
    // TODO future - set origin to be pe w/2, h/2 of tile map. to put it in the center of the screen
    void GenerateFloor()
    {
        m_Tile.CompressBounds();

        Debug.Log("origin " + m_Tile.origin);
        Debug.Log("size " + m_Tile.size);
        Debug.Log("anchor " + m_Tile.tileAnchor);

        TileBase tile;

        Object.ObjectType objectType = Object.ObjectType.Floor;
        Object            obj        = null;
        Orientation       ori        = Orientation.None;

        var entittyMan = m_MainLogic.GetEntityManager();

        int[] start;
        int[] end;

        int sizeX = m_Tile.origin.x + m_Tile.size.x;
        int sizeY = m_Tile.origin.y + m_Tile.size.y;

        for (int i = m_Tile.origin.x; i < sizeX; i++)
        {
            for (int j = m_Tile.origin.y; j < sizeY; j++)
            {
                m_TilePos.x = i;
                m_TilePos.y = j;
                m_TilePos.z = 0;

                // Debug.Log("p " + m_TilePos);

                tile = m_Tile.GetTile(m_TilePos);

                // Debug.Log("tile " + tile);

                if (tile == null)
                {
                    obj = entittyMan.CreateEntity(objectType);
                    m_Objects.Add(obj);

                    start = new int[Location.c_LocationSize];
                    end   = new int[Location.c_LocationSize];

                    start[0] = end[0] = i;
                    start[1] = end[1] = j;

                    // put object in Location
                    obj.Put(start, end, ori);

                    tile = GetTile(objectType);
                    PaintLocation(obj.GetLocation(), tile);
                }
            }
        }
    }
Beispiel #5
0
        static error executeBinaryOperation(Opcode op)
        {
            Object.Object right = pop();
            Object.Object left  = pop();

            Object.ObjectType leftType  = left.Type();
            Object.ObjectType rightType = right.Type();

            if (leftType == Object.ObjectType.INTEGER_OBJ && rightType == Object.ObjectType.INTEGER_OBJ)
            {
                return(executeBinaryIntegerOperation(op, left, right));
            }

            if (leftType == Object.ObjectType.STRING_OBJ && rightType == Object.ObjectType.STRING_OBJ)
            {
                return(executeBinaryStringOperation(op, left, right));
            }

            // default:
            return(string.Format("unsupported typesfor binary opreation: {0} {1}", leftType, rightType));
        }