Inheritance: MonoBehaviour
Ejemplo n.º 1
0
    /// <summary>
    /// Loads the board given the definition and the tile prefab.
    /// </summary>
    /// <param name="definition">Definition.</param>
    public void LoadBoard(BoardDefinition definition, TileController tilePrefab)
    {
        // Cache the board dimensions.
        this.Width = definition.Width;
        this.Height = definition.Height;

        // Instantiate new tiles layer.
        GameObject tilesLayerObject = new GameObject ("Tiles");
        tilesLayerObject.transform.SetParent (transform);

        // Calculate tile dimensions.
        BoxCollider2D bounds = tilePrefab.transform.FindChild ("Sprite").GetComponent<BoxCollider2D> ();
        float tileWidth = bounds.size.x;
        float tileHeight = bounds.size.y;

        // Initialize the tiles on the board.
        for (int x = 0; x < this.Width; x++) {
            for (int y = 0; y < this.Width; y++) {

                // Instantiate tile GameObject.
                TileController tile = Instantiate (tilePrefab) as TileController;
                tile.transform.SetParent (tilesLayerObject.transform);

                // Initialize and position the tile.
                tile.Initialize (definition [x, y], tileWidth, tileHeight);
            }
        }
    }
Ejemplo n.º 2
0
 public override void Initialize(BaseController _tileController)
 {
     m_tileController = (TileController)_tileController;
     base.Initialize(_tileController);
     SetupWorldPosition(ReferencesHolder.Instance.GameConfigurationHolder.GetGameConfiguration().BoardConfiguration);
     SetupColor();
     SetupNumberText();
 }
Ejemplo n.º 3
0
    internal void Move(MoveType type, TileController start, TileController stop) {
        string moveType = type == MoveType.Empty
            ? "MoveToEmpty"
            : type == MoveType.Merge ? "MoveToMerge" : type == MoveType.Attack ? "MoveToAttack" : "";

        _tcpClient.Send(string.Format("[Notify:{0}:{1}|({2}:{3})|({4}:{5})]", moveType, _guid, start.Position.x,
            start.Position.y, stop.Position.x, stop.Position.y));
    }
Ejemplo n.º 4
0
 /// <summary>
 /// Use this if an object that was on this tile was moved and not necessarily destroyed
 /// </summary>
 public void ObjectMoved()
 {
     if (!canBeBuiltOn)
         return;
     if (tileController == null){
         tileController = transform.parent.GetComponent<TileController>();
     }
     this.renderer.material.mainTexture = tileController.regular;
     placedObject = null;
     this.name = "RegularTile";//mark this tile as unwalkable anymore
 }
Ejemplo n.º 5
0
 public void tileClicked(TileController tc)
 {
     if(this.selectedPiece != null) {
       foreach(Position pos in this.selectedPiece.model.getAvailableSpaces(this)) {
     if(tc.gridPosition.x == pos.x && tc.gridPosition.y == pos.y) {
       int movingPlayer = this.selectedPiece.model.playerNum;
       this.selectedPiece.move(pos);
       ai.move(this, movingPlayer == 2);
       return;
     }
       }
     }
 }
Ejemplo n.º 6
0
    public void SpawnTile()
    {
        GameObject _currentGameObject = null;

        int random = randomCountToSpawn();
        
        if (random == 0)
        {
            _currentGameObject = (GameObject)TopTilePrefab.gameObject.Spawn(CurrentTile.TopAnchor.transform.position);
            
        }
        else if(random == 1)
        {
            _currentGameObject = (GameObject)LeftTilePrefab.gameObject.Spawn(CurrentTile.LeftAnchor.transform.position);
        }

        CurrentTile = _currentGameObject.GetComponent<TileController>();
        CurrentTile._TileManager = this;
        CurrentTile.RandomSpawnPickUp();
    }
Ejemplo n.º 7
0
	public static PathFindingResult FindPath(TileController startTile, TileController endTile) {
	    if (startTile == endTile)
	        return new PathFindingResult() {
                Path = new List<TileController>(),
                ValidPath = true,
                FoundEndPoint = true
	        };

	    Node end = GetEndNode(startTile, endTile, (tile, unit) => {
	        if (tile == endTile)
	            return true;
	        return tile.IsTraversable(unit);
	    });
	    if (end.Tile == endTile)
            return new PathFindingResult() {
                Path = ConvertNodesToList(end),
                FoundEndPoint = true,
                ValidPath = true
            };
	    end = GetEndNode(startTile, endTile, (tile, unit) => {
	        if (tile == endTile)
	            return true;
	        return tile.IsTraversableUnitOnly(unit);
	    });
	    if (end.Tile == endTile)
	        return new PathFindingResult() {
	            Path = ConvertNodesToList(end),
                FoundEndPoint = true,
                ValidPath = false
	        };
	    end = GetEndNode(startTile, endTile, (tile, unit) => true);
        return new PathFindingResult() {
            Path = ConvertNodesToList(end),
            FoundEndPoint = false,
            ValidPath = false
        };
	}
Ejemplo n.º 8
0
 public void SwapTile(TileController otherTile, System.Action onCompleted = null)
 {
     StartCoroutine(board.SwapTilePosition(this, otherTile, onCompleted));
 }
Ejemplo n.º 9
0
    private void setTileMaterialRenderingMode(TileController targetTileController, RenderingMode renderingMode)
    {
        switch (renderingMode)
        {
        case RenderingMode.Cutout:
            break;

        case RenderingMode.Transparent:
            if (targetTileController is FlowerTileController)
            {
                foreach (Renderer thisRenderer in targetTileController.GetComponentsInChildren <Renderer>())
                {
                    if (thisRenderer.gameObject.name == "Plane (3)")
                    {
                        thisRenderer.material.color = new Color(thisRenderer.material.color.r, thisRenderer.material.color.g, thisRenderer.material.color.b, 0.7f);
                    }
                    else
                    {
                        thisRenderer.material.SetInt("_SrcBlend", (int)UnityEngine.Rendering.BlendMode.One);
                        thisRenderer.material.SetInt("_DstBlend", (int)UnityEngine.Rendering.BlendMode.OneMinusSrcAlpha);
                        thisRenderer.material.SetInt("_ZWrite", 0);
                        thisRenderer.material.DisableKeyword("_ALPHATEST_ON");
                        thisRenderer.material.DisableKeyword("_ALPHABLEND_ON");
                        thisRenderer.material.EnableKeyword("_ALPHAPREMULTIPLY_ON");
                        thisRenderer.material.renderQueue = 3000;
                        if (thisRenderer.material.HasProperty("_Color"))
                        {
                            thisRenderer.material.color = new Color(thisRenderer.material.color.r, thisRenderer.material.color.g, thisRenderer.material.color.b, 0.5f);
                        }
                    }
                }
            }
            else if (targetTileController is GrassTileController)
            {
                foreach (Renderer thisRenderer in targetTileController.GetComponentsInChildren <Renderer>())
                {
                    if (!thisRenderer.gameObject.name.Contains("Grass Tile"))
                    {
                        thisRenderer.material = GameController.getInstance().transparentGrassMaterial;
                    }
                }
            }
            else if (targetTileController is HiveTileController)
            {
                foreach (Renderer thisRenderer in targetTileController.GetComponentsInChildren <Renderer>())
                {
                    thisRenderer.material.SetInt("_SrcBlend", (int)UnityEngine.Rendering.BlendMode.One);
                    thisRenderer.material.SetInt("_DstBlend", (int)UnityEngine.Rendering.BlendMode.OneMinusSrcAlpha);
                    thisRenderer.material.SetInt("_ZWrite", 0);
                    thisRenderer.material.DisableKeyword("_ALPHATEST_ON");
                    thisRenderer.material.DisableKeyword("_ALPHABLEND_ON");
                    thisRenderer.material.EnableKeyword("_ALPHAPREMULTIPLY_ON");
                    thisRenderer.material.renderQueue = 3000;
                    if (thisRenderer.material.HasProperty("_Color"))
                    {
                        thisRenderer.material.color = new Color(thisRenderer.material.color.r, thisRenderer.material.color.g, thisRenderer.material.color.b, 0.3f);
                    }
                }
            }
            break;
        }
    }
Ejemplo n.º 10
0
    // Use this for initialization
    void Start()
    {
        if (this.tag.Equals("CrackedTile")){
            SetCracked(true);
        }
        else
            isCracked = false;

        //get a reference to the tile controller - it is this tile's parent
        tileController = transform.parent.GetComponent<TileController>();
    }
Ejemplo n.º 11
0
    public void LoadMap()
    {
        var jsonStr = Resources.Load <TextAsset>("Map/Map").text;
        var data    = JsonUtility.FromJson <TiledMapData>(jsonStr);

        MapWidth  = data.width;
        MapHeight = data.height;

        Dictionary <string, UnityEngine.Object> tileGoMap = new Dictionary <string, UnityEngine.Object>();

        for (int i = 0; i < data.tilesets.Length; i++)
        {
            var tileset = data.tilesets[i];
            tileGoMap.Add(tileset.name, Resources.Load("Map/" + tileset.name));
        }

        m_TileGoMap.Clear();
        for (int j = 0; j < data.layers.Length; j++)
        {
            var layer      = data.layers[j];
            var layerDatas = layer.data;
            var tileType   = MapHelper.GetTileType(layer.name);
            var isObject   = layer.name == "object" || layer.name == "npc";
            for (int i = 0; i < layerDatas.Length; i++)
            {
                var id = layerDatas[i];
                if (id <= 0)
                {
                    continue;
                }

                int x   = i % 20;
                int y   = i / 20;
                var cid = MapHelper.GetCid(x, y);

                TileController tileController = null;
                GameObject     tileGo         = null;
                if (!m_TileGoMap.TryGetValue(cid, out tileGo))
                {
                    tileGo         = new GameObject(x + "_" + y);
                    tileController = tileGo.AddComponent <TileController>();
                    tileController.SortingOrder = MapHelper.GetTileSortOrder(i);
                    tileGo.transform.SetParent(transform, true);
                    tileGo.transform.localPosition = MapHelper.GetMapPosition(x, y);
                    m_TileGoMap.Add(cid, tileGo);
                }

                if (tileController == null)
                {
                    tileController = tileGo.GetComponent <TileController>();
                }

                var tileset = data.tilesets[id - 1];
                var go      = Instantiate(tileGoMap[tileset.name]) as GameObject;
                go.transform.SetParent(tileGo.transform, true);
                var spriteRenderer = go.transform.GetChild(0).GetComponent <SpriteRenderer>();
                if (spriteRenderer != null)
                {
                    spriteRenderer.sortingOrder = MapHelper.GetTileUnitSortOrder(tileController.SortingOrder, tileType);
                }
                else
                {
                    go.transform.GetChild(0).GetComponent <UnityArmatureComponent>().sortingOrder = MapHelper.GetTileUnitSortOrder(tileController.SortingOrder, tileType);
                }

                go.transform.localPosition = Vector3.zero;

                if (isObject)
                {
                    tileController.MapObjectType = (int)Enum.Parse(typeof(MapHelper.EMapObject), tileset.name);
                    var tileObject = go.AddComponent <TileObject>();
                    tileObject.Type = tileController.MapObjectType;
                }
                else
                {
                    tileController.MapObjectType = 0;
                }
            }
        }
    }
    public override void OnMouseEnter(GameObject ownTile, GameObject hoveredTile) {
        if (!_isBuilding || ownTile == hoveredTile)
            return;

        TileController hoverTile = hoveredTile.GetComponent<TileController>();
        if (!ModifiedTiles.Contains(hoverTile)) {
            _hoveredTile = hoverTile;
            _hoveredTile.GetComponent<SpriteRenderer>().color = BuildNotAllowedColor;
        }
    }
Ejemplo n.º 13
0
 public void GotoTile(TileController tile, string tileName, bool vacation = false, bool jail = false)
 {
     photonView.RPC("TeleportToTile_CMD", RpcTarget.All, tile.index, tileName, vacation, jail);
 }
Ejemplo n.º 14
0
 void SelectTile(TileController tile)
 {
     platform.SetActiveTile(tile);
     actionStore--;
 }
Ejemplo n.º 15
0
 private void ChooseNextTile(int y, int x)
 {
     _destinationTile = fieldController.GetTile(_currentTile.y + y, _currentTile.x + x);
 }
Ejemplo n.º 16
0
 public void SpawnLeftTile()
 {
     GameObject _currentGameObject = (GameObject)LeftTilePrefab.gameObject.Spawn(CurrentTile.LeftAnchor.transform.position);
     CurrentTile = _currentGameObject.GetComponent<TileController>();
     CurrentTile._TileManager = this;
 }
 // Use this for initialization
 void Start()
 {
     tileController = mapParent.GetComponent<TileController>();
     table = new Hashtable();
     GameObject startTile = GameObject.FindGameObjectWithTag("StartTile");
     GameObject endTile = GameObject.FindGameObjectWithTag("EndTile");
     if (startTile && endTile){
         table.Add(startTile.transform.position,startTile);
         table.Add(endTile.transform.position,endTile);
     }
     else{
         Debug.Log("No start or end tile found - please add the appropriate tags to a start and/or end tile");
     }
 }
 public override void OnMouseLeave(GameObject ownTile, GameObject hoveredTile) {
     if (!_isBuilding) {
         base.OnMouseLeave(ownTile, hoveredTile);
         return;
     }
     if(_hoveredTile != null && !_surroundingTiles.Contains(_hoveredTile))
         _hoveredTile.ResetSprite();
     _hoveredTile = null;
 }
Ejemplo n.º 19
0
 public bool PlaceObject(GameObject obj)
 {
     if (!canBeBuiltOn)
         return false;
     placedObject = obj;
     if (isCracked){
         SetCracked(false);
     }
     this.name = "UnWalkableTile";//mark this tile as unwalkable anymore
     if (tileController == null){
         tileController = transform.parent.GetComponent<TileController>();
     }
     this.renderer.material.mainTexture = tileController.unwalkable;
     return true;
 }
    public override void OnMouseEnter(GameObject ownTile, GameObject hoveredTile) {
        if (!_isBuilding || ownTile == hoveredTile) {
            base.OnMouseEnter(ownTile, hoveredTile);
            return;
        }
        if (!GetComponent<BaseUnit>().CurrentPlayerPredicate(ownTile.GetComponent<TileController>()))
            return;

        TileController hoverTile = hoveredTile.GetComponent<TileController>();
        if (!_surroundingTiles.Contains(hoverTile)) {
            _hoveredTile = hoverTile;
            _hoveredTile.GetComponent<SpriteRenderer>().color = BuildNotAllowedColor;
        }
    }
    public virtual DeselectStatus Split(GameObject mock, TileController ownTile, TileController targetTile) {
        IsSplitting = false;
        BaseUnit unit = mock.GetComponent<BaseUnit>();

        if (GetComponent<BaseUnit>().StackSize <= unit.StackSize) {
            ownTile.Unit = null;
            Destroy(gameObject);
        }
        else
            ownTile.Unit.StackSize -= SplitAmount;
        LandUnitEventController landUnit = mock.GetComponent<LandUnitEventController>();
        if (targetTile.Unit == null)
            landUnit.MoveToEmpty(null, new List<TileController>() { targetTile });
        else
            landUnit.MoveToMerge(null, new List<TileController>() { targetTile });
        unit.Owner.Moves--;
        ResetSplitTiles();
        return DeselectStatus.Both;
    }
 public virtual void ShowUnitStack(TileController ownTile) {
     GameObject stackOverlay = GameObject.Find("UnitStack");
     StackWindow window = stackOverlay.GetComponent<StackWindow>();
     BaseUnit unit = GetComponent<BaseUnit>();
     window.Show(StackSizeSprite, unit.Owner.Color, unit.StackSize, unit.CurrentPlayerPredicate(ownTile), UnitSplitCallback);
 }
Ejemplo n.º 23
0
 public AStar(TileController tileController)
 {
     this.tileController = tileController;
     LoadMapData(tileController.Map);
 }
Ejemplo n.º 24
0
    public override void drawMovementIcons(UnitScript selectedUnit)
    {
        for (int i = 0; i < adjustedDirections.Count; i++)
        {
            int     j = 0;
            Vector2 currentTileLoc = selectedUnit.getOccupyingHex().getCoords();
            HexTile lastTile       = null;
            InteractionIcon.createInteractionIcon("PathIcon", selectedUnit.getCoords(), Color.cyan, 3);
            while (j < ranges[i] || ranges[i] == -1)
            {
                currentTileLoc += adjustedDirections[i];

                HexTile currentTile = gameControllerRef.getTileController().getTileFromHexCoord(currentTileLoc);

                //prevTile = currentTile;
                if (currentTile)
                {
                    if (currentTile.getOccupyingUnit())
                    {
                        if (currentTile.getOccupyingUnit().getTeam() != selectedUnit.getTeam())
                        {
                            lastTile = currentTile;
                            InteractionIcon.createInteractionIcon("AttackIcon", currentTile.getCoords(), Color.red, 4);
                        }
                        else
                        {
                            InteractionIcon.createInteractionIcon("CrossIcon", currentTile.getCoords(), Color.red, 4);
                        }
                        break;
                    }
                    lastTile = currentTile;
                }
                else
                {
                    InteractionIcon.createInteractionIcon("CrossIcon", currentTileLoc, Color.red, 4);
                    break;
                }
                j++;
            }

            if (lastTile)
            {
                InteractionIcon m = InteractionIcon.createInteractionIcon("PathConnectionIcon", selectedUnit.getCoords(), Color.cyan, 1);
                Vector2         lastTileCoords  = TileController.hexCoordToPixelCoord(lastTile.getCoords());
                Vector2         startTileCoords = TileController.hexCoordToPixelCoord(selectedUnit.getCoords());

                Vector2 Q    = lastTileCoords - startTileCoords;
                float   dist = Q.magnitude * 100 - 15;
                if (dist < 0)
                {
                    dist = 0;
                }
                float angle = Mathf.Atan2(Q.y, Q.x) * 180 / Mathf.PI;
                //gameControllerRef.printString(dist.ToString());
                m.transform.Rotate(Vector3.forward, angle);
                m.transform.localScale = new Vector2(dist / 24, 1.0f);

                InteractionIcon mHead = InteractionIcon.createInteractionIcon("ArrowHeadIcon", lastTileCoords, Color.cyan, 2, true);
                mHead.transform.Rotate(Vector3.forward, angle);

                InteractionIcon.createInteractionIcon("PathIcon", lastTileCoords, Color.cyan, 1, true);
            }
        }
    }
Ejemplo n.º 25
0
 public CompleteCommand(TileController objective)
 {
     this.objective = objective;
 }
Ejemplo n.º 26
0
 int TileIndex(TileController tile)
 {
     return(tiles.IndexOf(tile));
 }
Ejemplo n.º 27
0
 private void OnTileVFXRequested(TileVFXRequestEvent obj)
 {
     tileHovered = FindTileControllerFromTile(obj.tile);
     ActivateVFX(tileHovered, obj.element);
 }
Ejemplo n.º 28
0
    private void LoadWorld(WorldData worldData)
    {
        GameManager.Instance.SetGoalAtStart(worldData.BadAssGoal);

        //LOAD TILES
        foreach (TileData tile in worldData.Tiles)
        {
            TileController tileController = Instantiate(tile.TilePrefab);
            tileController.transform.SetParent(TileParent);
            tileController.transform.eulerAngles = new Vector3(0, tile.Rotation, 0);
            tileController.transform.position    = tile.Position;
            LoadedTiles.Add(tileController);

            bool canHaveBuilding = false;
            foreach (TileController tileC in TileSetData.TilesThatCanHaveBuildingsOnThem)
            {
                if (tile.TilePrefab.name == tileC.name)
                {
                    canHaveBuilding = true;
                    break;
                }
            }

            if (canHaveBuilding)
            {
                int chanceToSpawnHouse = 70;
                if (chanceToSpawnHouse > Random.Range(0, 100))
                {
                    int            randomInt = Random.Range(0, TileSetData.BuildingTiles.Length);
                    bool           rotate    = Random.Range(0, 2) > 0;
                    TileController buildingTileController = Instantiate(TileSetData.BuildingTiles[randomInt]);
                    buildingTileController.transform.SetParent(tileController.transform);
                    buildingTileController.transform.eulerAngles   = new Vector3(0, rotate ? 90 : 0, 0);
                    buildingTileController.transform.localPosition = new Vector3(-0.5f, 0.6f, -0.5f);
                }
            }

            bool canHaveTrees = false;
            foreach (TileController tileC in TileSetData.TilesThatCanHaveTreesOnThem)
            {
                if (tile.TilePrefab.name == tileC.name)
                {
                    canHaveTrees = true;
                    break;
                }
            }

            if (canHaveTrees)
            {
                int chanceToSpawnTrees = 80;
                if (chanceToSpawnTrees > Random.Range(0, 100))
                {
                    int            randomInt          = Random.Range(0, TileSetData.TreeTiles.Length);
                    int            rotate             = Random.Range(0, 4);
                    TileController treeTileController = Instantiate(TileSetData.TreeTiles[randomInt]);
                    treeTileController.transform.SetParent(tileController.transform, false);
                    treeTileController.transform.eulerAngles = new Vector3(0, 90 * rotate, 0);
                }
            }
        }

        //LOAD HUMANS
        HumanSpawner humanSpawnerPrefab = LevelManager.Instance.GetHumanSpawnerPrefab();

        foreach (HumanSpawnerData data in worldData.HumanSpawnerDatas)
        {
            HumanSpawner humanSpawner = Instantiate(humanSpawnerPrefab);
            humanSpawner.transform.SetParent(HumanSpawnerParent);
            humanSpawner.Init(data);
            HumanSpawners.Add(humanSpawner);
        }

        //LOAD CAR AI
        CarAIController carAIControllerPrefab = LevelManager.Instance.GetCarAiControllerPrefab();

        foreach (CarAIData data in worldData.CarAIDatas)
        {
            CarAIController carAiController = Instantiate(carAIControllerPrefab);
            carAiController.transform.SetParent(CarAIParent);
            carAiController.Init(data);
            CarAIControllers.Add(carAiController);
        }
    }
Ejemplo n.º 29
0
		public Node(TileController tile)
		{
			Tile = tile;
		}
    public void SetActiveTile(TileController tile)
    {
        if (activeTile) {
            if (activeTile.GetInstanceID() != tile.GetInstanceID()) {
                activeTile.SetActive(false);
                activeTile = tile;
                activeTile.SetActive(true);
            }
        } else {
            activeTile = tile;
            activeTile.SetActive(true);
        }

        if (activeTile && !activeTile.building && isPlayer) {
            uiHandler.SetBuildUI(buildButtons);
        }
    }
Ejemplo n.º 31
0
 void SetTileAt(TileController tile, int xBoardPos, int yBoardPos)
 {
     Tiles[xBoardPos, yBoardPos] = tile;
 }
Ejemplo n.º 32
0
 internal void CreateUnit(TileController target, string unitType) {
     _tcpClient.Send(string.Format("[Notify:UnitCreated:{0}|({1}:{2})|{3}]", _guid, target.Position.x,
         target.Position.y, unitType));
 }
Ejemplo n.º 33
0
    public void InitiatePopSequence()
    {
        if (highlightedTiles.Count < currentChainRequiredCombo)                 // Check if the combo requirement is met
        {
            CancelHighlight();
            StartCoroutine(Shake(0.15f, 0.2f));
            // Sounds
            audioSource.PlayOneShot(failedSound);
        }
        else
        {
            // Sounds - pop
            audioSource.PlayOneShot(popSound);

            CancelInvoke();                                                         // clear highlight flags and cancel the dynamic check
            Vector3 notifPos = tappedTile.transform.position;                       // capture tappedtile pos before clear
            tappedTile    = null;
            highlightMode = false;

            List <GameObject> tilesToPop = new List <GameObject>();

            // Combo variables
            int comboTotal     = 0;
            int noOfComboTiles = 0;

            foreach (KeyValuePair <int, GameObject> tile in highlightedTiles)        // clear the flags on highlighted tiles and add them to pop list
            {
                tile.Value.SendMessage("UncheckTrigger");

                TileController tc = tile.Value.GetComponent <TileController>();
                if (tc.isOverloading)        // check for overloading tiles
                {
                    DecreaseOverload();
                }

                // Combo checker
                if (tc.comboCounter > 0)
                {
                    comboTotal += tc.comboCounter;
                    noOfComboTiles++;
                }

                tc.isPopping = true;

                tilesToPop.Add(tile.Value);
            }
            highlightedTiles.Clear();                                               // remove the highlighted tiles from the list

            int poppedColorCode = tilesToPop[0].GetComponent <TileController>().colorCode;

            int scoreIncrement = ScoreProcessing(tilesToPop.Count, poppedColorCode, comboTotal, noOfComboTiles);         // handle scoring depending on player's combo and required chain

            // Sounds - reward
            if (scoreIncrement > 300)
            {
                audioSource.PlayOneShot(highRewardSound);
            }
            else if (scoreIncrement > 100)
            {
                audioSource.PlayOneShot(lowRewardSound);
            }

            foreach (GameObject go in tilesToPop.ToArray())                         // Loop the tiles to destroy
            {
                // Create particle effects
                Vector3 psp = go.transform.position;
                psp.z = -2;
                ParticleSystemRenderer psr = Instantiate(popEffectObj, psp, go.transform.rotation).GetComponent <ParticleSystem>().GetComponent <ParticleSystemRenderer>();
                psr.material = Resources.Load <Material>("Materials/" + ColorToString(poppedColorCode));

                // Remove popped tile from tiles dictionary
                RemoveTile(go.transform.GetInstanceID());

                // Destroy the tile
                Destroy(go);
            }

            // Create score notifications
            notifPos.z = -3;
            ScoreIncrementNotificationController scoreNotifier = Instantiate(scoreIncrementObj, notifPos, Quaternion.identity).GetComponentInChildren <ScoreIncrementNotificationController>();
            scoreNotifier.TriggerScoreIncrementNotification(scoreIncrement);

            totalPops++;                                                            // increment of total pops counter
            highlightMode             = false;                                      // deactivate highlight mode
            currentChainRequiredCombo = 0;                                          // reset required combo counter
        }
    }
Ejemplo n.º 34
0
 internal void SplitUnit(TileController start, TileController stop, int amount) {
     _tcpClient.Send(string.Format("[Notify:SplitUnit:{0}|({1}:{2})|({3}:{4})|{5}]", _guid, start.Position.x,
         start.Position.y, stop.Position.x, stop.Position.y, amount));
 }
Ejemplo n.º 35
0
 private void Start()
 {
     _myTileController = GetComponent <TileController>();
 }
    public override DeselectStatus MoveToEmpty(TileController start, List<TileController> path) {

        MoveWaterUnit(start, path, QueueNextItem);

        return DeselectStatus.Both;
    }
Ejemplo n.º 37
0
 public TileNode(TileController controller, Vector2Int pos)
 {
     this.controller = controller;
     this.pos        = pos;
 }
    public override DeselectStatus MoveToAttack(TileController start, List<TileController> path) {
        LandUnit carry = ((WaterUnit) start.Unit).CarryUnit.GetComponent<LandUnit>();
        List<TileController> movePath = path.Take(path.Count - carry.Range).ToList();
        MoveWaterUnit(start, movePath,
            () => {
                path.Last().Unit.DamageUnit(carry._stackDamage, GetComponent<BaseUnit>());
                //carry.Attack(path.Last().Unit);
                QueueNextItem();
            });

        return DeselectStatus.Both;
    }
Ejemplo n.º 39
0
 private void Deselect()
 {
     isSelected       = false;
     render.color     = normalColor;
     previousSelected = null;
 }
    public override DeselectStatus MoveToMerge(TileController start, List<TileController> path) {
        LandUnit carry = ((WaterUnit) start.Unit).CarryUnit.GetComponent<LandUnit>();
        LandUnit mergeTarget = (LandUnit) path.Last().Unit;
        MoveWaterUnit(start, path, () => {
            mergeTarget.Merge(carry);
            QueueNextItem();
        });

        path.Last().Unit = mergeTarget;

        return DeselectStatus.Both;
    }
Ejemplo n.º 41
0
 private void Select()
 {
     isSelected       = true;
     render.color     = selectedColor;
     previousSelected = this;
 }
    private void MoveWaterUnit(TileController startTile, List<TileController> path, Action finalAction) {
        GameObject carryUnit = GetComponent<WaterUnit>().CarryUnit;
        WaterUnit startBoat = (WaterUnit) startTile.Unit;
        BaseUnit unit = null;
        int index = -1;

        if (carryUnit != null) {
            unit = carryUnit.GetComponent<BaseUnit>();
            index = path.FindIndex(x => x.IsTraversable(carryUnit));
        }

        if (index < 0) {
            StartCoroutine(AnimateToTile(path, finalAction));
            if(path.Count > 0)
                path.Last().Unit = GetComponent<BaseUnit>();
        }
        else {
			if (!path.Last ().IsTraversable (carryUnit)) {
				carryUnit.GetComponent<BaseUnit> ().Owner.Moves += path.Count;
				return;
			}
            TileController[] boatPath = path.Take(index).ToArray();
            TileController[] unitPath = path.Skip(index).ToArray();
			if (boatPath.Length > 0) {
				StartCoroutine (AnimateToTile (boatPath, () => {
					startBoat.UnloadUnit (boatPath.Last ().gameObject);
					unit.StartCoroutine (unit.GetComponent<LandUnitEventController> ().AnimateToTile (unitPath, finalAction));
				}));
				boatPath.Last ().Unit = GetComponent<BaseUnit> ();
				unitPath.Last ().Unit = unit;
			} else {
				startBoat.UnloadUnit (unitPath.First ().gameObject);
				unit.StartCoroutine(unit.GetComponent<LandUnitEventController>().AnimateToTile(unitPath, finalAction));
				unitPath.Last ().Unit = unit;
			}
        }

		if(index != 0 && path.Count > 0) // If boat also moves.
        	startTile.Unit = null;
    }
Ejemplo n.º 43
0
 void Awake()
 {
     tileModel = GetComponent <TileController>();
 }
 public override void ShowUnitStack(TileController ownTile) {
     GameObject carry = GetComponent<WaterUnit>().CarryUnit;
     if (carry == null)
         return;
     GameObject stackOverlay = GameObject.Find("UnitStack");
     StackWindow window = stackOverlay.GetComponent<StackWindow>();
     BaseUnit unit = carry.GetComponent<BaseUnit>();
     window.Show(unit.GetComponent<LandUnitEventController>().StackSizeSprite, unit.Owner.Color, unit.StackSize, unit.CurrentPlayerPredicate(ownTile), UnitSplitCallback);
 }
Ejemplo n.º 45
0
 private void Awake()
 {
     tileController = GetComponent <TileController>();
 }
    public override DeselectStatus Split(GameObject mock, TileController ownTile, TileController targetTile) {
        IsSplitting = false;

        BaseUnit unit = mock.GetComponent<BaseUnit>();

        WaterUnit water = GetComponent<WaterUnit>();

        if (water.CarryUnit.GetComponent<BaseUnit>().StackSize <= unit.StackSize) {
            Destroy(water.CarryUnit);
            water.CarryUnit = null;
        }
        else
            water.CarryUnit.GetComponent<BaseUnit>().StackSize -= SplitAmount;

        LandUnitEventController landUnit = mock.GetComponent<LandUnitEventController>();
        mock.SetActive(true);
        if (targetTile.Unit == null)
            landUnit.MoveToEmpty(null, new List<TileController>() { targetTile });
        else
            landUnit.MoveToMerge(null, new List<TileController>() { targetTile });
        unit.Owner.Moves--;
        ResetSplitTiles();
        return DeselectStatus.Both;
    }
Ejemplo n.º 47
0
 public Astar_SM(TileController tileController)
 {
     this.tileController = tileController;
 }
 public void Select()
 {
     isSelected           = true;
     spriteRenderer.color = selectedColor;
     previousSelected     = this;
 }
Ejemplo n.º 49
0
    IEnumerator PlayRoundCoroutine()
    {
        GameState state = GameManager.instance.state;

        yield return(new WaitForSeconds(.5f));

        m_feedControl.Pay();
        UpdateFoodCount();
        UpdateHappinessCount();

        Alert("Feeding the empire...");
        yield return(new WaitForSeconds(ALERT_TIME));

        m_investControl.Pay();
        UpdateMoneyCount();
        UpdateHappinessCount();

        Alert("Managing investments...");
        yield return(new WaitForSeconds(ALERT_TIME));

        int taxes = m_MapManager.CollectTaxes();

        state.m_Money += taxes;
        UpdateMoneyCount();

        Alert("Collecting taxes...");
        yield return(new WaitForSeconds(ALERT_TIME));

        int harvest = m_MapManager.HarvestFarms();

        if (harvest > 0)
        {
            state.m_Food += harvest;
            UpdateFoodCount();

            Alert("Harvesting farms...");
            yield return(new WaitForSeconds(ALERT_TIME));
        }

        int mined = m_MapManager.Mine();

        if (mined > 0)
        {
            state.m_Money += mined;
            UpdateMoneyCount();

            Alert("Carving jade...");
            yield return(new WaitForSeconds(ALERT_TIME));
        }

        yield return(StartCoroutine(TileController.ExpandTiles()));

        if (state.enemyFactions.Count > 0)
        {
            foreach (Faction faction in state.enemyFactions)
            {
                int count = Random.Range(1, 3);
                for (int i = 0; i < count; i++)
                {
                    if (faction != Faction.None)
                    {
                        faction.AddSoldier();
                    }
                }
            }
            Alert("The enemies have expanded their forces!");
            yield return(new WaitForSeconds(ALERT_TIME));

            foreach (Faction faction in state.enemyFactions)
            {
                bool expand = Random.value < Constants.CHANCE_TO_EXPAND;
                if (expand)
                {
                    // -1 = unable to siege, 0 = basic expansion, 1 = successful siege to player, 2 = successful siege to nonplayer, 3 = failed siege
                    int result = faction.MaybeSiege();
                    switch (result)
                    {
                    case 0:
                        Alert("The enemy has expanded their territory!", SIEGE_ALERT_TIME);
                        break;

                    case 1:
                        Alert("The enemy has taken some of your land!", SIEGE_ALERT_TIME);
                        state.m_Happiness += Constants.FAILED_INVADE_HAPPINESS;
                        state.m_Happiness  = Mathf.Min(state.m_Happiness, 100);
                        UpdateHappinessCount();
                        break;

                    case 2:
                        Alert("The enemies fought each other!", SIEGE_ALERT_TIME);
                        break;

                    case 3:
                        Alert("The enemies failed to expand their land...", SIEGE_ALERT_TIME);
                        break;
                    }
                    if (result != -1)
                    {
                        yield return(new WaitForSeconds(SIEGE_ALERT_TIME));
                    }
                }
            }
        }

        //Random Events
        if (Random.value < Constants.CHANCE_RANDOM_EVENT)
        {
            RandomEvents.RandomEvent randomEvent = RandomEvents.GetEvent();
            yield return(StartCoroutine(EventPopup(randomEvent.message)));

            randomEvent.eventFunc();
            Alert(randomEvent.alert);
            yield return(new WaitForSeconds(ALERT_TIME));
        }

        if (Faction.GetPlayer().TerritoryCount() == 0)
        {
            GameManager.instance.LoadLose();
        }
        else if (GameManager.instance.state.m_Happiness <= 0)
        {
            StartRebellion();
        }
        else if (GameManager.instance.state.m_Happiness == 100)
        {
            GameManager.instance.LoadWin();
        }

        NextRound();
    }
 private void SwapTile(TileController otherTile, System.Action OnComplete = null)
 {
     StartCoroutine(board.SwapTilePosition(this, otherTile, OnComplete));
 }
Ejemplo n.º 51
0
 public SurfaceGestureStrategy(TileController tileController,
                               ScreenTransformGesture twoFingerMoveGesture,
                               ScreenTransformGesture manipulationGesture) :
     base(tileController, twoFingerMoveGesture, manipulationGesture)
 {
 }
Ejemplo n.º 52
0
 public void UnCompleteView(TileController objective)
 {
     stateMachine.handleEvent(new CompleteCommand(objective));
 }
 public override void OnMouseLeave(GameObject ownTile, GameObject hoveredTile) {
     if (_hoveredTile != null && !ModifiedTiles.Contains(_hoveredTile))
         _hoveredTile.ResetSprite();
     _hoveredTile = null;
 }
Ejemplo n.º 54
0
 public IGameState TileClicked(GameController myGameController, TileController clickedTile)
 {
     //nothing happens
     SoundController._instance.PlayClick();
     return(null);
 }
Ejemplo n.º 55
0
 private void Awake()
 {
     tileController = grid.GetComponent <TileController>();
     nodes          = tileController.GetAllNodes();
 }
Ejemplo n.º 56
0
 protected virtual void OnMouseDown()
 {
     lastClicked = this;
     Clicked.Invoke();
 }
Ejemplo n.º 57
0
 public bool HasTile(TileController tile)
 {
     return(GetTileAt(tile.BoardPos) != null);
 }
Ejemplo n.º 58
0
 void SetTileAt(TileController tile, Vector2Int boardPos)
 {
     SetTileAt(tile, boardPos.x, boardPos.y);
 }
Ejemplo n.º 59
0
 static Node GetEndNode(TileController start, TileController end, Func<TileController, GameObject, bool> traversableCheck) {
     _openList = new List<Node>();
     _closedList = new List<TileController>();
     Node startNode = new Node(start);
     return PathFinder(startNode, new Node(end), startNode, traversableCheck);
 }
    public virtual DeselectStatus MoveToMerge(TileController start, List<TileController> path) {
        if(start != null)
            start.Unit = null;
        LandUnit mergeTarget = (LandUnit) path.Last().Unit;

        StartCoroutine(AnimateToTile(path, () => {
            mergeTarget.Merge(GetComponent<BaseUnit>());
            QueueNextItem();
        }));

        return DeselectStatus.Both;
    }