Beispiel #1
0
    public void DeleteMapElement(int row, int column)
    {
        MapElementData mapElementData = objectMap[row, column].GetComponent <MapElementData>();

        if (mapElementData.joeOnIt != null)
        {
            Destroy(mapElementData.joeOnIt);
            mapElementData.joeOnIt = null;
            mapElementFactory.JoeRemoved();
            joeMEB = null;
            saveBtn.interactable = false;
        }
        else if (mapElementData.BoxOnItCount > 0)
        {
            GameObject topBox = mapElementData.GetTopBox();
            boxes.Remove(topBox);
            mapElementData.RemoveLast();
            mapElementData.BoxOnItCount--;
            Destroy(topBox);

            if (mapElementData.BoxOnItCount == 0 && actMap[row, column] == MapElement.Edge)
            {
                webCreator.EnableMapPlace(row, column);
            }
        }
        else
        {
            if (actMap[row, column] == MapElement.Door || actMap[row, column] == MapElement.LaserGate)
            {
                DeleteThreeElement(row, column);
            }
            else if (actMap[row, column] == MapElement.LaserGateEdge || actMap[row, column] == MapElement.DoorEdge)
            {
                if (actMap[row - 1, column] == MapElement.LaserGate || actMap[row - 1, column] == MapElement.Door)
                {
                    DeleteThreeElement(row - 1, column);
                }
                else
                {
                    DeleteThreeElement(row + 1, column);
                }
            }
            else
            {
                if (actMap[row, column] == MapElement.Key || actMap[row, column] == MapElement.Relic || actMap[row, column] == MapElement.Gem)
                {
                    mapElementFactory.ItemRemoved();
                    itemType = MapElement.Null;
                }
                actMap[row, column] = MapElement.Edge;
                webCreator.EnableMapPlace(row, column);
                Destroy(objectMap[row, column]);

                Vector3    placePosition = new Vector3(startPosition.x + column * SharedData.widhtUnit + SharedData.widhtUnit / 2, 0, startPosition.z - row * SharedData.widhtUnit - SharedData.widhtUnit / 2);
                GameObject edge          = Instantiate(edgeModel.gameObject, placePosition + new Vector3(0, edgeModel.ModelGround, 0), edgeModel.GetQuat(), transform);
                objectMap[row, column] = edge;
            }
        }
    }
Beispiel #2
0
    public void SaveMap()
    {
        MapSer map = new MapSer();

        map.name = saveName.text;
        map.Scarab2PartNumber = Convert.ToInt32(scarab2part.text);
        map.Scarab3PartNumber = Convert.ToInt32(scarab3part.text);

        int plusEdges = boxes.Count + 1;

        MapElement[,] mapElements = new MapElement[webCreator.RowCount + 2 * plusEdges, webCreator.ColumnCount + 2 * plusEdges];
        for (int i = plusEdges; i < webCreator.RowCount + plusEdges; i++)
        {
            for (int j = plusEdges; j < webCreator.ColumnCount + plusEdges; j++)
            {
                mapElements[i, j] = actMap[i - plusEdges, j - plusEdges];
            }
        }

        map.startPosition = new Vector3Ser(startPosition.x - plusEdges * SharedData.widhtUnit, startPosition.y, startPosition.z + plusEdges * SharedData.widhtUnit);

        Vector3 extraDistance = new Vector3(-1, 0, 1) * plusEdges * SharedData.widhtUnit;

        float charPositionX = startPosition.x + (joeMEB.Column + plusEdges) * SharedData.widhtUnit + extraDistance.x;
        float charPositionY = startPosition.y + joeMEB.PlaceHeight;
        float charPositionZ = startPosition.z - (joeMEB.Row + plusEdges) * SharedData.widhtUnit + extraDistance.z;

        map.charPosition = new Vector3Ser(charPositionX, charPositionY, charPositionZ);
        map.mapMatrix    = mapElements;
        map.heigth       = map.mapMatrix.GetLength(0);
        map.width        = map.mapMatrix.GetLength(1);
        map.boxNumber    = boxes.Count;
        map.boxLocations = new Vector3Ser[boxes.Count];
        for (int i = 0; i < boxes.Count; i++)
        {
            MapElementBox boxME        = boxes[i].GetComponent <MapElementBox>();
            float         boxLocationX = startPosition.x + (boxME.Column + plusEdges) * SharedData.widhtUnit + extraDistance.x;
            float         boxLocationY = startPosition.y + boxME.PlaceHeight;
            float         boxLocationZ = startPosition.z - (boxME.Row + plusEdges) * SharedData.widhtUnit + extraDistance.z;
            map.boxLocations[i] = new Vector3Ser(boxLocationX, boxLocationY, boxLocationZ);
        }

        if (itemType == MapElement.Key)
        {
            map.itemType = SharedData.KeyType;
        }
        else if (itemType == MapElement.Gem)
        {
            map.itemType = SharedData.GemType;
        }
        else if (itemType == MapElement.Relic)
        {
            map.itemType = SharedData.RelicType;
        }
        else
        {
            map.itemType = SharedData.DefaultType;
        }

        MapCollection.CalculateItemsMapSer(map);

        Save(map);

        SceneLoader.LoadSceneStatic(GameStructure.extraSceneName);
    }
Beispiel #3
0
    public bool BuildMapElement(int row, int column)
    {
        if (actMap[row, column] == MapElement.Edge && mapElementFactory.chosedMapElement == MapElement.Joe)
        {
            return(false);
        }
        if (mapElementFactory.chosedMapElement != MapElement.Box && mapElementFactory.chosedMapElement != MapElement.Joe)
        {
            actMap[row, column] = mapElementFactory.chosedMapElement;
        }
        GameObject elem          = null;
        Vector3    placePosition = new Vector3(startPosition.x + column * SharedData.widhtUnit + SharedData.widhtUnit / 2, 0, startPosition.z - row * SharedData.widhtUnit - SharedData.widhtUnit / 2);

        switch (mapElementFactory.chosedMapElement)
        {
        case MapElement.Column:
            elem = Instantiate(columnModel.gameObject, placePosition + new Vector3(0, columnModel.ModelGround, 0), columnModel.GetQuat(), transform);
            break;

        case MapElement.Trap:
            elem = Instantiate(trapModel.gameObject, placePosition + new Vector3(0, trapModel.ModelGround, 0), trapModel.GetQuat(), transform);
            break;

        case MapElement.Button:
            elem = Instantiate(buttonModel.gameObject, placePosition + new Vector3(0, buttonModel.ModelGround, 0), buttonModel.GetQuat(), transform);
            break;

        case MapElement.Hole:
            elem = Instantiate(holeModel.gameObject, placePosition + new Vector3(0, holeModel.ModelGround, 0), holeModel.GetQuat(), transform);
            break;

        case MapElement.Door:
            elem = Instantiate(doorModel.gameObject, placePosition + new Vector3(0, doorModel.ModelGround, 0), doorModel.GetQuat(), transform);
            GameObject doorEdge1 = Instantiate(doorEdgeModel.gameObject, placePosition + new Vector3(0, doorEdgeModel.ModelGround, SharedData.widhtUnit), doorEdgeModel.GetQuat(), transform);
            GameObject doorEdge2 = Instantiate(doorEdgeModel.gameObject, placePosition + new Vector3(0, doorEdgeModel.ModelGround, -SharedData.widhtUnit), doorEdgeModel.GetQuat(), transform);
            webCreator.EnableMapPlace(row + 1, column);
            webCreator.EnableMapPlace(row - 1, column);
            MapElementData doorEdge1MED = doorEdge1.GetComponent <MapElementData>();
            doorEdge1MED.Row    = row - 1;
            doorEdge1MED.Column = column;
            MapElementData doorEdge2MED = doorEdge2.GetComponent <MapElementData>();
            doorEdge2MED.Row           = row + 1;
            doorEdge2MED.Column        = column;
            actMap[row + 1, column]    = MapElement.DoorEdge;
            actMap[row - 1, column]    = MapElement.DoorEdge;
            objectMap[row + 1, column] = doorEdge2;
            objectMap[row - 1, column] = doorEdge1;
            break;

        case MapElement.Key:
            elem = Instantiate(keyModel.gameObject, placePosition + new Vector3(0, keyModel.ModelGround, 0), keyModel.GetQuat(), transform);
            mapElementFactory.ItemPlaced();
            itemType = MapElement.Key;
            break;

        case MapElement.StoneLifter:
            elem = Instantiate(stoneLifterModel.gameObject, placePosition + new Vector3(0, stoneLifterModel.ModelGround, 0), stoneLifterModel.GetQuat(), transform);
            break;

        case MapElement.RisingStone:
            elem = Instantiate(risingStoneModel.gameObject, placePosition + new Vector3(0, risingStoneModel.ModelGround, 0), risingStoneModel.GetQuat(), transform);
            break;

        case MapElement.LaserGate:
            elem = Instantiate(laserGateModel.gameObject, placePosition + new Vector3(0, laserGateModel.ModelGround, 0), laserGateModel.GetQuat(), transform);
            GameObject     laserGateEdge1    = Instantiate(laserGateEdgeModel.gameObject, placePosition + new Vector3(0, laserGateEdgeModel.ModelGround, SharedData.widhtUnit), laserGateEdgeModel.GetQuat(), transform);
            GameObject     laserGateEdge2    = Instantiate(laserGateEdgeModel.gameObject, placePosition + new Vector3(0, laserGateEdgeModel.ModelGround, -SharedData.widhtUnit), laserGateEdgeModel.GetQuat(), transform);
            MapElementData laserGateEdge1MED = laserGateEdge1.GetComponent <MapElementData>();
            laserGateEdge1MED.Row    = row - 1;
            laserGateEdge1MED.Column = column;
            MapElementData laserGateEdge2MED = laserGateEdge2.GetComponent <MapElementData>();
            laserGateEdge2MED.Row    = row + 1;
            laserGateEdge2MED.Column = column;
            webCreator.DisableMapPlace(row + 1, column);
            webCreator.DisableMapPlace(row - 1, column);
            actMap[row + 1, column]    = MapElement.LaserGateEdge;
            actMap[row - 1, column]    = MapElement.LaserGateEdge;
            objectMap[row + 1, column] = laserGateEdge2;
            objectMap[row - 1, column] = laserGateEdge1;
            break;

        case MapElement.LaserSwitch:
            elem = Instantiate(laserSwitchModel.gameObject, placePosition + new Vector3(0, laserSwitchModel.ModelGround, 0), laserSwitchModel.GetQuat(), transform);
            break;

        case MapElement.Gem:
            elem = Instantiate(gemModel.gameObject, placePosition + new Vector3(0, gemModel.ModelGround, 0), gemModel.GetQuat(), transform);
            mapElementFactory.ItemPlaced();
            itemType = MapElement.Gem;
            break;

        case MapElement.Relic:
            elem = Instantiate(relicModel.gameObject, placePosition + new Vector3(0, relicModel.ModelGround, 0), relicModel.GetQuat(), transform);
            mapElementFactory.ItemPlaced();
            itemType = MapElement.Relic;
            break;

        case MapElement.Box:
            MapElementData boxOnIt = objectMap[row, column].GetComponent <MapElementData>();
            if (boxOnIt.joeOnIt)
            {
                return(true);
            }
            GameObject box = Instantiate(boxModel.gameObject, placePosition + new Vector3(0, SharedData.hight_0_Ground + (boxOnIt.Height + boxOnIt.BoxOnItCount) * SharedData.heightUnit + boxAboveElemValue, 0), boxModel.GetQuat(), transform);
            boxOnIt.BoxOnItCount++;
            boxes.Add(box);
            boxOnIt.AddBox(box);
            MapElementBox mapElementBox = box.GetComponent <MapElementBox>();
            mapElementBox.Column      = column;
            mapElementBox.Row         = row;
            mapElementBox.PlaceHeight = SharedData.hight_0_Ground + (boxOnIt.Height + boxOnIt.BoxOnItCount) * SharedData.heightUnit + boxAboveElemValue;
            return(true);

        case MapElement.Joe:
            MapElementData joePlace = objectMap[row, column].GetComponent <MapElementData>();
            GameObject     joe      = Instantiate(joeModel.gameObject, placePosition + new Vector3(0, SharedData.hight_0_Ground + (joePlace.Height + joePlace.BoxOnItCount) * SharedData.heightUnit + joeAboveValue, 0), joeModel.GetQuat(), transform);
            mapElementFactory.JoePlaced();
            joePlace.joeOnIt = joe;
            MapElementBox joeMEB = joe.GetComponent <MapElementBox>();
            joeMEB.Column        = column;
            joeMEB.Row           = row;
            joeMEB.PlaceHeight   = SharedData.hight_0_Ground + (joePlace.Height + joePlace.BoxOnItCount) * SharedData.heightUnit + joeAboveValue;
            this.joeMEB          = joeMEB;
            saveBtn.interactable = true;
            return(true);

        default:
            break;
        }

        MapElementData mapElementData = elem.GetComponent <MapElementData>();

        mapElementData.Row    = row;
        mapElementData.Column = column;
        Destroy(objectMap[row, column]);
        objectMap[row, column] = elem;
        return(true);
    }