Example #1
0
    public void spawnLevel()
    {
        Vector2Int tPos = new Vector2Int(selectedTiles[0].tileIndex_X, selectedTiles[0].tileIndex_Y);
        VRAR_Level lvl  = GameStateManager.instance.getCurrentLevel();

        //VRAR_Level lvl = lvlManager.getLevelObjectFromTilePos(tPos);
        foreach (VRAR_Tile tile in lvl.vrarTiles)
        {
            Transform nodeMarker = Instantiate(hexPREFAB, lvlManager.getWorldPosFromTilePos(tile.tileIndex_X, tile.tileIndex_Y, tile.height_), new Quaternion());
            tile.hexObject = nodeMarker;
            nodeMarker.gameObject.GetComponent <Renderer>().material = TileObjectManger.getMaterial(tile.terrain);
            nodeMarker.localScale = new Vector3(1, tile.height_, 1);

            //spawn interactable object
            if (TileObjectManger.TILE_OBJECTS[tile.getInteractableObject().getObjectID()].getPrefab() != null)
            {
                Instantiate(TileObjectManger.TILE_OBJECTS[tile.getInteractableObject().getObjectID()].getPrefab(), lvlManager.getWorldPosFromTilePos(tile.tileIndex_X, tile.tileIndex_Y, tile.height_), new Quaternion());
            }

            //spawn dumb objects
            foreach (BaseTileObject dumbObject in tile.getDumbObjectsList())
            {
                if (dumbObject.getPrefab() != null)
                {
                    Instantiate(dumbObject.getPrefab(), lvlManager.getWorldPosFromTilePos(tile.tileIndex_X, tile.tileIndex_Y, tile.height_), new Quaternion());
                }
            }
        }
    }
Example #2
0
 public void updateTile(VRAR_Tile newTile)
 {
     if (GameStateManager.instance.getGlobalStateIndex() == 4)
     {
         newTile.hexObject.gameObject.GetComponent <Renderer>().material = TileObjectManger.getMaterial(newTile.terrain);
         newTile.hexObject.gameObject.GetComponent <Renderer>().material = TileObjectManger.getMaterial(newTile.terrain);
         newTile.hexObject.localScale = new Vector3(1, newTile.height_, 1);
     }
     else
     {
         Debug.LogError("TileRenderer.updateTile() called while game is in invalid state. State should be 4 while the game is in :" + GameStateManager.instance.getGlobalStateIndex());
     }
 }
Example #3
0
    public void spawnLevelsOverview()
    {
        //cleanup any existing gameobjects (old loaded levels or tiles)
        //place new gameobjects

        foreach (VRAR_Level lvl in lvlManager.getVRARLevels())
        {
            Transform nodeMarker = Instantiate(hexPREFAB, lvlManager.getWorldPosFromTilePos(lvl.levelTile.tileIndex_X, lvl.levelTile.tileIndex_Y, lvl.levelTile.height_), new Quaternion());
            lvl.levelTile.hexObject = nodeMarker;
            //nodeMarker.gameObject.GetComponent<Renderer>().material = defaultTileMaterial;
            nodeMarker.gameObject.GetComponent <Renderer>().material = TileObjectManger.getMaterial("Grass");
        }
    }
Example #4
0
    // Update is called once per frame
    void Update()
    {
        //cursorMove();
        switch (GameStateManager.instance.getGlobalStateIndex())
        {
        case GameStateManager.STATE_CAMPAIGN_EDITOR:
            cursorMarker.position = Vector3.Scale(leftHandCursor.position, (truncY)) + offY;
            lvl = lvlManager.getLevelObjectFromTilePos(lvlManager.getTilePosFromWorldPos(leftHandCursor.position));
            if (lvl != null)
            {
                GameStateManager.instance.setCurrentLevel(lvl);

                //Reset the previous tile back to normal
                if (previousSelectedTile != null)
                {
                    //    previousSelectedTile.GetComponent<Renderer>().material = previousSelectedTileMaterial;
                    //    previousSelectedTileMaterial = lvl.levelTile.hexObject.gameObject.GetComponent<Renderer>().material;
                    previousSelectedTile.hexObject.gameObject.GetComponent <Renderer>().material = TileObjectManger.getMaterial(previousSelectedTile.GetTerrain());
                }

                //Set material of selected tile
                lvl.levelTile.hexObject.gameObject.GetComponent <Renderer>().material = selectedTileMaterial;

                //Add update list of selected tiles
                selectedTiles.Clear();
                selectedTiles.Add(lvl.levelTile);

                //update debug text of current selected tile
                selectedLevelText.text = "lvl :" + lvl.levelTile.tileIndex_X + "  " + lvl.levelTile.tileIndex_Y;

                //previousSelectedTile = lvl.levelTile.hexObject.gameObject;
                previousSelectedTile = lvl.levelTile;
            }
            break;

        case GameStateManager.STATE_LEVEL_EDITOR:
            lvl = GameStateManager.instance.getCurrentLevel();
            //Debug.Log("level state :"+lvl.levelTile.ToString());
            cursorMarker.position = Vector3.Scale(rightHandCursor.position, (truncY)) + offY;
            //cursorMarker.position *= 5f;
            //VRAR_Tile selTile=  lvl.getTileFromIndexPos(lvlManager.getTilePosFromWorldPos(rightHandCursor.position).x, lvlManager.getTilePosFromWorldPos(rightHandCursor.position).y);
            VRAR_Tile selTile = lvl.getTileFromIndexPos(lvlManager.getTilePosFromWorldPos(cursorMarker.position).x, lvlManager.getTilePosFromWorldPos(cursorMarker.position).y);
            if (selTile != null)
            {
                //Reset the previous tile back to normal
                if (previousSelectedTile != null)
                {
                    //previousSelectedTile.GetComponent<Renderer>().material = previousSelectedTileMaterial;
                    //previousSelectedTileMaterial = selTile.hexObject.gameObject.GetComponent<Renderer>().material;
                    previousSelectedTile.hexObject.gameObject.GetComponent <Renderer>().material = TileObjectManger.getMaterial(previousSelectedTile.GetTerrain());
                }

                //Set material of selected tile
                selTile.hexObject.gameObject.GetComponent <Renderer>().material = selectedTileMaterial;

                //Add update list of selected tiles
                selectedTiles.Clear();
                selectedTiles.Add(selTile);

                //update debug text of current selected tile
                selectedLevelText.text = "lvl :" + selTile.tileIndex_X + "  " + selTile.tileIndex_Y;

                //previousSelectedTile = selTile.hexObject.gameObject;
                previousSelectedTile = selTile;

                lvl.tileUpdate(0, 0);
            }
            break;

        case GameStateManager.STATE_PLAYING:
            break;
        }
    }
Example #5
0
 //-------------------------------------------------
 void Awake()
 {
     _instance = this;
 }
Example #6
0
    public void updateTile(VRAR_Tile tile)
    {
        if (tile != null)
        {
            if (GameStateManager.getInstance().getGlobalStateIndex() == GameStateManager.STATE_PLAYING)
            {
                if (tile.tileGameObject == null)
                {
                    /*
                     * tile.tileGameObject = new GameObject(tile.ToString())
                     * {
                     *  tag = "vrar_lvl",
                     *  transform =
                     *  {
                     *      position = LevelManager.Instance.getWorldPosFromTilePos(tile.tileIndex_X, tile.tileIndex_Y),
                     *      parent = this.targetTransform
                     *  }
                     * }.transform;*/
                    tile.tileGameObject     = new GameObject(tile.ToString()).transform;
                    tile.tileGameObject.tag = "vrar_lvl";
                    tile.tileGameObject.transform.position = LevelManager.Instance.getWorldPosFromTilePos(tile.tileIndex_X, tile.tileIndex_Y);
                    tile.tileGameObject.transform.parent   = this.targetTransform;

                    //tile.tileGameObject.localScale = new Vector3(LevelManager.TILE_SCALE, LevelManager.TILE_SCALE, LevelManager.TILE_SCALE);
                    StartCoroutine(ScaleIn(tile.tileGameObject, new Vector3(LevelManager.TILE_SCALE, LevelManager.TILE_SCALE, LevelManager.TILE_SCALE), 0.5f, true, null));
                }
                else
                {
                    //THIS GOT ADDED BY ME (RONALD) TO PREVENT DUPLICATE OBJECTS I DONT THINK IT BREAKS ANYTHING
                    return;
                }

                Transform   tileGameObject = tile.tileGameObject;
                IEnumerator enumerator     = tileGameObject.GetEnumerator();
                try
                {
                    while (enumerator.MoveNext())
                    {
                        object    obj       = enumerator.Current;
                        Transform transform = (Transform)obj;
                    }
                }
                finally
                {
                    IDisposable disposable;
                    if ((disposable = (enumerator as IDisposable)) != null)
                    {
                        disposable.Dispose();
                    }
                }

                Transform transform2 = UnityEngine.Object.Instantiate <Transform>(TileObjectManger.STATIC_HEX_PREFAB);
                transform2.parent        = tileGameObject;
                transform2.localPosition = new Vector3(0f, 0f, 0f);
                tile.hexObject           = transform2;
                transform2.gameObject.GetComponent <Renderer>().material = TileObjectManger.getMaterial(tile.terrain);
                StartCoroutine(ScaleIn(tile.hexObject, new Vector3(1f, tile.height_, 1f), 0.5f, true, null));
                //transform2.localScale = new Vector3(1f, tile.height_, 1f);

                //Water gets special treatment, its a bit lower scale
                if (tile.terrain == "Water")
                {
                    transform2.gameObject.transform.localScale = new Vector3(1f, tile.height_ * 0.7f, 1f);
                }


                if (TileObjectManger.TILE_OBJECTS[tile.getInteractableObject().getObjectID()].getPrefab() != null)
                {
                    Transform transform3 = UnityEngine.Object.Instantiate <Transform>(TileObjectManger.TILE_OBJECTS[tile.getInteractableObject().getObjectID()].getPrefab(), LevelManager.Instance.getWorldPosFromTilePos(tile.tileIndex_X, tile.tileIndex_Y), default(Quaternion));
                    transform3.parent = tileGameObject.transform;
                    transform3.name   = tile.getInteractableObject().getObjectID().ToString();
                }
                foreach (BaseTileObject baseTileObject in tile.getDumbObjectsList())
                {
                    if (baseTileObject.getPrefab() != null)
                    {
                        int       objectID   = baseTileObject.getObjectID();
                        Transform transform4 = UnityEngine.Object.Instantiate <Transform>(baseTileObject.getPrefab());
                        transform4.localScale = tile.GetScale(objectID);
                        transform4.position   = new Vector3(0f, tile.height_ * 0.1f * 4.47f, 0f);
                        transform4.SetParent(tileGameObject.transform, false);
                        transform4.name = baseTileObject.getObjectID().ToString();
                    }
                    else
                    {
                        UnityEngine.Debug.Log("Prefab is null");
                    }
                }
                if (tile.getInterior() != null)
                {
                    Transform interOjbect = Instantiate(tile.getInterior().getPrefab());
                    interOjbect.position = new Vector3(0f, tile.height_ * 0.1f * 4.47f, 0f);
                    interOjbect.SetParent(tileGameObject.transform, false);
                    interOjbect.name = tile.getInterior().getName();
                }
                if (tile.getNPC() != null)
                {
                    //Debug.Log("SPAWNING AN NPC AT: " + tile.tileIndex_X + "   " + tile.tileIndex_Y);
                    Transform npcObject = tile.getNPC().SpawnNPC(new Vector2Int(tile.tileIndex_X, tile.tileIndex_Y)).transform;
                    npcObject.position = new Vector3(0f, tile.height_ * 0.1f * 4.47f, 0f);
                    npcObject.SetParent(tileGameObject.transform, false);
                    npcObject.name = tile.getNPC().ToString();
                }
            }
            else
            {
                UnityEngine.Debug.LogError("TileRenderer.updateTile() called while game is in invalid state. State should be GameStateManager.STATE_LEVEL_EDITOR while the game is in :" + GameStateManager.getInstance().getGlobalStateIndex());
            }
        }
    }
Example #7
0
    // Update is called once per frame
    void Update()
    {
        //cursorMove();
        switch (GameStateManager.instance.getGlobalStateIndex())
        {
        case GameStateManager.STATE_CAMPAIGN_EDITOR:
            cursorMarker.position = Vector3.Scale(leftHandCursor.position, (truncY)) + offY;
            lvl = lvlManager.getLevelObjectFromTilePos(lvlManager.getTilePosFromWorldPos(leftHandCursor.position));
            if (lvl != null)
            {
                GameStateManager.instance.setCurrentLevel(lvl);

                //Reset the previous tile back to normal
                if (previousSelectedTile != null)
                {
                    previousSelectedTile.hexObject.gameObject.GetComponent <Renderer>().material = TileObjectManger.getMaterial(previousSelectedTile.GetTerrain());
                }

                //Set material of selected tile
                lvl.levelTile.hexObject.gameObject.GetComponent <Renderer>().material = TileObjectManger.getMaterial("Selection");

                //Add update list of selected tiles
                selectedTiles.Clear();
                selectedTiles.Add(lvl.levelTile);

                //update debug text of current selected tile
                selectedLevelText.text = "lvl :" + lvl.levelTile.tileIndex_X + "  " + lvl.levelTile.tileIndex_Y;

                previousSelectedTile = lvl.levelTile;
            }
            break;

        case GameStateManager.STATE_LEVEL_EDITOR:
            lvl = GameStateManager.instance.getCurrentLevel();
            cursorMarker.position = Vector3.Scale(rightHandCursor.position, (truncY)) + offY;
            selTile = lvl.getTileFromIndexPos(lvlManager.getTilePosFromWorldPos(cursorMarker.position).x, lvlManager.getTilePosFromWorldPos(cursorMarker.position).y);
            if (selTile != null && selTile.hexObject != null && !Valve.VR.InteractionSystem.VRInputHandler.isInTileObjectEditMenu)
            {
                //if selectedHexPrefab is a prefab (so not in any scene)
                if (selectedHexPrefab.gameObject.scene.name == null)
                {
                    selectedHexPrefabItem = selectedHexPrefab;
                    //spawn prefab is scene
                    selectedHexPrefab = Instantiate(selectedHexPrefab);
                }


                //Reset the previous tile back to normal
                if (previousSelectedTile != null)
                {
                    //previousSelectedTile.hexObject.gameObject.GetComponent<Renderer>().material = TileObjectManger.getMaterial(previousSelectedTile.GetTerrain());
                }

                //Set material of selected tile

                //selTile.hexObject.gameObject.GetComponent<Renderer>().material = TileObjectManger.getMaterial("Selection");
                selectedHexPrefab.gameObject.transform.position = selTile.hexObject.position + (new Vector3(0, (float)(selTile.height_ + 0.1), 0));

                //Add update list of selected tiles
                selectedTiles.Clear();
                selectedTiles.Add(selTile);

                //update debug text of current selected tile
                selectedLevelText.text = "lvl :" + selTile.tileIndex_X + "  " + selTile.tileIndex_Y;

                previousSelectedTile = selTile;

                lvl.tileUpdate(0, 0);
            }
            break;

        case GameStateManager.STATE_PLAYING:
            lvl = GameStateManager.instance.getCurrentLevel();
            cursorMarker.position = Vector3.Scale(rightHandCursor.position, (truncY)) + offY;
            selTile = lvl.getTileFromIndexPos(lvlManager.getTilePosFromWorldPos(cursorMarker.position).x, lvlManager.getTilePosFromWorldPos(cursorMarker.position).y);
            if (selTile != null && selTile.hexObject != null && !Valve.VR.InteractionSystem.VRInputHandler.isInTileObjectEditMenu)
            {
                if (prevSelTile != selTile)
                {
                    //var tileMessage = new TileMessage(selTile);
                    if (prevSelTile != null && prevSelTile.hexObject != null)
                    {
                        foreach (VRAR_Tile tile in GameStateManager.instance.getCurrentLevel().dirtyTiles)
                        {
                            var tileMessage = new TileMessage(tile, false);
                            NetworkServer.SendToAll(CustomNetMsg.Tile, tileMessage);
                        }
                        GameStateManager.instance.getCurrentLevel().dirtyTiles.Clear();
                    }
                }

                //if selectedHexPrefab is a prefab (so not in any scene)
                if (selectedHexPrefab.gameObject.scene.name == null)
                {
                    selectedHexPrefabItem = selectedHexPrefab;
                    //spawn prefab is scene
                    selectedHexPrefab = Instantiate(selectedHexPrefab);
                }

                //Set material of selected tile
                selectedHexPrefab.gameObject.transform.position = selTile.hexObject.position + (new Vector3(0, selTile.height_ - 1, 0));

                prevSelTile = selTile;
            }
            break;
        }
    }
Example #8
0
    /*
     *  public void updateTile(VRAR_Tile newTile)
     * {
     *  if(GameStateManager.instance.getGlobalStateIndex()==GameStateManager.STATE_LEVEL_EDITOR)
     *  {
     *      //newTile.hexObject.gameObject.GetComponent<Renderer>().material = TileObjectManger.getMaterial(newTile.terrain);
     *      newTile.hexObject.gameObject.GetComponent<Renderer>().material = TileObjectManger.getMaterial(newTile.terrain);
     *      newTile.hexObject.localScale = new Vector3(1, newTile.height_, 1);
     *
     *      foreach (Transform child in newTile.hexObject.transform)
     *      {
     *          Destroy(child.gameObject);
     *      }
     *
     *
     *      //spawn interactable object
     *      if (TileObjectManger.TILE_OBJECTS[newTile.getInteractableObject().getObjectID()].getPrefab() != null)
     *      {
     *          Transform dumbObject = Instantiate(TileObjectManger.TILE_OBJECTS[newTile.getInteractableObject().getObjectID()].getPrefab(), lvlManager.getWorldPosFromTilePos(newTile.tileIndex_X, newTile.tileIndex_Y, newTile.height_), new Quaternion());
     *          dumbObject.parent = newTile.hexObject;
     *      }
     *
     *      //spawn dumb objects
     *      foreach (BaseTileObject dumbObject in newTile.getDumbObjectsList())
     *      {
     *          if (dumbObject.getPrefab() != null)
     *          {
     *              Transform interOjbect = Instantiate(dumbObject.getPrefab(), lvlManager.getWorldPosFromTilePos(newTile.tileIndex_X, newTile.tileIndex_Y, newTile.height_ + 2), new Quaternion());
     *              interOjbect.parent = newTile.hexObject;
     *          }
     *      }
     *  }
     *  else
     *  {
     *      Debug.LogError("TileRenderer.updateTile() called while game is in invalid state. State should be GameStateManager.STATE_LEVEL_EDITOR while the game is in :" + GameStateManager.instance.getGlobalStateIndex());
     *  }
     * }*/

    public void updateTile(VRAR_Tile tile)
    {
        if (tile != null)
        {
            if (GameStateManager.instance.getGlobalStateIndex() == GameStateManager.STATE_LEVEL_EDITOR || GameStateManager.instance.getGlobalStateIndex() == GameStateManager.STATE_PLAYING)
            {
                if (!tile.isPhantom)
                {//spawn/update tile
                    if (tile.tileGameObject == null)
                    {
                        GameObject tileObject = new GameObject(tile.ToString());
                        tileObject.tag = "vrar_lvl";
                        tileObject.transform.position = lvlManager.getWorldPosFromTilePos(tile.tileIndex_X, tile.tileIndex_Y, 1);
                        tileObject.transform.parent   = tilesParent;
                        tile.tileGameObject           = tileObject.transform;
                    }

                    Transform tileGameObjectTransform = tile.tileGameObject;
                    foreach (Transform child in tileGameObjectTransform)
                    {
                        Destroy(child.gameObject);
                    }

                    //create the tile itself
                    Transform nodeMarker = Instantiate(hexPREFAB);
                    nodeMarker.parent        = tileGameObjectTransform;
                    nodeMarker.localPosition = new Vector3(0, 0, 0);
                    tile.hexObject           = nodeMarker;

                    //Transform nodeMarker = tileGameObjectTransform.Find(hexPREFAB.name+"(Clone)");
                    nodeMarker.gameObject.GetComponent <Renderer>().material = TileObjectManger.getMaterial(tile.terrain);
                    nodeMarker.localScale = new Vector3(1, tile.height_, 1);

                    //spawn interactable object
                    if (TileObjectManger.TILE_OBJECTS[tile.getInteractableObject().getObjectID()].getPrefab() != null)
                    {
                        Transform dumbObject = Instantiate(TileObjectManger.TILE_OBJECTS[tile.getInteractableObject().getObjectID()].getPrefab(), lvlManager.getWorldPosFromTilePos(tile.tileIndex_X, tile.tileIndex_Y, tile.height_ + 1), new Quaternion());
                        dumbObject.parent = tileGameObjectTransform.transform;
                        dumbObject.name   = tile.getInteractableObject().getObjectID().ToString();
                    }

                    //spawn dumb objects
                    foreach (BaseTileObject dumbObject in tile.getDumbObjectsList())
                    {
                        if (dumbObject.getPrefab() != null)
                        {
                            int       id          = dumbObject.getObjectID();
                            Transform interOjbect = Instantiate(dumbObject.getPrefab(), lvlManager.getWorldPosFromTilePos(tile.tileIndex_X, tile.tileIndex_Y, tile.height_ + 1), new Quaternion());
                            Vector3   pos         = tile.GetObjectPosition(id);
                            interOjbect.position      = new Vector3(pos.x, tile.height_ + 1, pos.z);
                            interOjbect.localScale    = tile.GetScale(id);
                            interOjbect.parent        = tileGameObjectTransform.transform;
                            interOjbect.name          = dumbObject.getObjectID().ToString();
                            interOjbect.localRotation = tile.GetRotation(id);
                        }
                        else
                        {
                            Debug.Log("Prefab is null");
                        }
                    }
                    //tile.addNPCTileObject();
                    if (tile.getNPC() != null)
                    {
                        Transform interOjbect = tile.getNPC().SpawnNPC(new Vector2Int(tile.tileIndex_X, tile.tileIndex_Y)).transform;
                        interOjbect.position = lvlManager.getWorldPosFromTilePos(tile.tileIndex_X, tile.tileIndex_Y, tile.height_ + 1);
                        //Transform interOjbect = Instantiate(tile.getNPCTileObject().getPrefab(), lvlManager.getWorldPosFromTilePos(tile.tileIndex_X, tile.tileIndex_Y, tile.height_ + 1), new Quaternion());

                        //interOjbect.position = new Vector3(pos.x, tile.height_ + 1, pos.z);
                        //interOjbect.localScale = tile.GetScale(id);
                        interOjbect.parent = tileGameObjectTransform.transform;
                        interOjbect.name   = tile.getNPC().ToString();
                        //interOjbect.localRotation = tile.GetRotation(id);
                    }
                    if (tile.getInterior() != null)
                    {
                        Transform interOjbect = Instantiate(tile.getInterior().getPrefab(), lvlManager.getWorldPosFromTilePos(tile.tileIndex_X, tile.tileIndex_Y, tile.height_ + 1), new Quaternion());

                        //interOjbect.position = new Vector3(pos.x, tile.height_ + 1, pos.z);
                        //interOjbect.localScale = tile.GetScale(id);
                        interOjbect.parent = tileGameObjectTransform.transform;
                        interOjbect.name   = tile.getInterior().getName();
                        //interOjbect.localRotation = tile.GetRotation(id);
                    }
                }
                else
                {//delete tile from world
                    if (tile.tileGameObject != null)
                    {
                        Destroy(tile.tileGameObject.gameObject);
                    }
                }
            }
            else
            {
                Debug.LogError("TileRenderer.updateTile() called while game is in invalid state. State should be GameStateManager.STATE_LEVEL_EDITOR while the game is in :" + GameStateManager.instance.getGlobalStateIndex());
            }
        }
    }