Esempio n. 1
0
 public void deselectPiece()
 {
     if(this.selectedPiece != null) {
       this.selectedPiece.deselect();
       this.selectedPiece = null;
     }
 }
Esempio n. 2
0
 public void Activate(PieceController p)
 {
     if(floatingPiece != null){
         InventoryAdd(floatingPiece);
     }
     //p.transform.position = new Vector3(p.transform.position.x,p.transform.position.y,-1f);
     floatingPiece = p;
     p.SetGridLock(false);
     grid.RemovePiece(p);
     ewc.transform.rotation = floatingPiece.transform.rotation;
 }
Esempio n. 3
0
	public void SelectPiece (PieceController piece)
	{
		if (m_lastSelectedPiece != null) {
			m_lastSelectedPiece.Unselect ();
		}
		
		if (piece != null) {
			piece.Select ();
		}
		
		m_lastSelectedPiece = piece;
	}
Esempio n. 4
0
    public void PutThatThingBackWhereItCameFromOrSoHelpMe(PieceController pc, int x, int y)
    {
        RectTransform    prt       = (RectTransform)pc.transform;
        RectTransform    rt        = (RectTransform)transform;
        UIRectTranslator translate = transform.gameObject.GetComponent <UIRectTranslator>();

        Vector3[] corners = new Vector3[4];
        rt.GetWorldCorners(corners);
        Vector3 gridTopCorner = corners[1];        //new Vector3(gridCorner.x,gridCorner.y+gridLength,gridCorner.z);
        Vector3 extents       = translate.WorldSize(prt) / 2;

        pc.transform.position = gridTopCorner + new Vector3(squareWidth * x + extents.x,
                                                            -squareWidth * (y) - extents.y,
                                                            pc.transform.position.z);
    }
Esempio n. 5
0
 public void DropPiece()
 {
     if (moving == null)
     {
         return;
     }
     if (!newPoint.Equals(moving.point))
     {
         game.FlipPieces(moving.point, newPoint, true);
     }
     else
     {
         game.ResetPiece(moving);
     }
     moving = null;
 }
Esempio n. 6
0
        private static void AddToStreetLightList(Dictionary <int, MapObjectProperties> streetLightList, StreetLightType streetLightType, LightType lightType, Vector2 lightOffset, MapObjectShadowType shadowType, Point objectSize, Point shadowPointLeft, Point shadowPointTop, bool alwaysOn, int elevation)
        {
            int rowIndex = (int)streetLightType * 4;

            for (int i = 0; i < 4; i++)
            {
                Piece   piece = PieceController.GetPiece(10, rowIndex + i);
                Light   light = GraphicsManager.GetLight(lightType);
                Vector2 currentLightOffset = RotateVectorRight(lightOffset, GroundLayerController.tileSize, i);
                float   radian             = RotateRadiansRight(0, i);
                Point   shadowPointOffset  = GetShadowPoint(shadowPointLeft, shadowPointTop, GroundLayerController.tileSize, i, objectSize);
                Shadow  shadowLeft         = new Shadow(ShadowSpriteController.GetShadowSprite(shadowType, ShadowSide.LEFT, i), 0, 0, ShadowSide.LEFT, i, shadowPointOffset);
                Shadow  shadowRight        = new Shadow(ShadowSpriteController.GetShadowSprite(shadowType, ShadowSide.RIGHT, i), 0, 0, ShadowSide.RIGHT, i, shadowPointOffset);
                streetLightList.Add(rowIndex + i, new StreetLight(piece, light, currentLightOffset, radian, shadowLeft, shadowRight, shadowPointOffset, alwaysOn, elevation));
            }
        }
Esempio n. 7
0
    public Grid GenerateGrid(int width, int height)
    {
        PieceController[,] pieces = new PieceController[width, height];

        for (int i = 0; i < width; i++)
        {
            for (int j = 0; j < height; j++)
            {
                pieces[i, j] = Instantiate(PrefabManager.GetPrefab(PrefabManager.PrefabType.FloorPiece)
                                           , Vector3.right * (i * _pieceOffset.x) + Vector3.forward * (j * _pieceOffset.z)
                                           , Quaternion.identity).GetComponent <PieceController>();
            }
        }

        return(new Grid(pieces));
    }
Esempio n. 8
0
    public void ReproduceState(int index)
    {
        Init();
        History         history = History.Instance;
        PieceController pc      = PieceController.Instance;

        for (int i = 0; i <= index; i++)
        {
            HistoryInfo info  = history.Get(i);
            Piece       piece = pc.GetByIndex(info.PieceId - 1);
            piece.Move(info.Position, false);
            if (info.IsPromote)
            {
                piece.Promote();
            }
        }
    }
Esempio n. 9
0
    void PickUpKind()
    {
        Debug.Log("Select");
        isSelected = true;
        PieceController controller = PieceController.Instance;

        controller.CloseGuideArea();
        Piece piece = controller.FindPassivePiece(kind);

        if (piece == null)
        {
            isSelected = false;
            return;
        }
        target = piece;
        piece.PickUp();
    }
    public PieceController CheckEnPassant(Vector2 position)
    {
        PieceController pieceInfo = null;

        if (enPassantMoves.Count > 0)
        {
            foreach (PieceController info in enPassantMoves)
            {
                Vector2 pos = new Vector2(info.gridCoordinate.x, info.gridCoordinate.y + (info.isWhite ? -1 : 1));
                if (pos == position)
                {
                    pieceInfo = info;
                }
            }
        }
        return(pieceInfo);
    }
Esempio n. 11
0
    //Determine new position of pieces based of the angle passed(ROM angle)
    void MovePiece(float angle, PieceController piece, float offset)
    {
        //Edit angle based off progression so far
        if (StaticClass.PuzzleIncrement == 0.0f)
        {
            angle -= 2.5f;
        }
        else if (StaticClass.PuzzleIncrement == 1.0f)
        {
            //Angle does not change
        }
        else if (StaticClass.PuzzleIncrement == 2.0f)
        {
            angle += 2.5f;
        }

        //Convert angle in radians
        angle = angle * (Mathf.Deg2Rad);
        //print(angle);

        //Calculate z position
        float zPos = (Mathf.Abs(piece.transform.position.x)) / Mathf.Tan(angle);

        zPos += offset;
        print("Zpos: " + zPos);

        if (zPos > 5.15f)
        {
            zPos = 5.2f;
            float xPos = (Mathf.Abs(zPos)) * Mathf.Tan(angle);
            if (piece.transform.position.x < 0)
            {
                xPos = -xPos;
            }
            xPos += offset;
            piece.transform.position = new Vector3(xPos, piece.transform.position.y, zPos);
            print("x changed loop");
        }
        else
        {
            //Change piece position
            piece.transform.position = new Vector3(piece.transform.position.x, piece.transform.position.y, zPos);
        }
        Debug.Log(piece.name);
        Debug.Log(piece.transform.position.z);
    }
Esempio n. 12
0
 public void DestroyMiniUnit(PieceController _pieceController)
 {
     try {
         if (!miniPieceDictionary.ContainsKey(_pieceController))
         {
             throw new System.NullReferenceException("Can't Find MiniBuidling");
         }
         Destroy(miniPieceDictionary[_pieceController].gameObject);
         miniPieceDictionary.Remove(_pieceController);
     } catch (System.ArgumentNullException ex) {
         throw ex;
     } catch (System.NullReferenceException ex) {
         throw ex;
     } catch (System.Exception ex) {
         throw ex;
     }
 }
Esempio n. 13
0
    public void HandleEvent(GameEvent ge)
    {
        if(ge.type.Equals("piece_tapped")){
            PieceController tappedPiece = (PieceController)ge.args[0];
            if(tappedPiece.GetGridLock()){
                if(floatingPiece != null){
                    bool success = grid.TryAddPiece(floatingPiece);
                    if(success){
                        floatingPiece.SetGridLock(true);
                        floatingPiece = null;
                    }
                }
                Activate (tappedPiece);
            }else{
                bool success = grid.TryAddPiece(tappedPiece);
                if(success){
                    tappedPiece.SetGridLock(true);
                    floatingPiece = null;
                }
            }
        }else if(ge.type.Equals("piece_dropped_on_inventory")){
            PieceController piece = (PieceController)ge.args[0];
            InventoryAdd(piece);
        }else if(ge.type.Equals("template_tapped")){
            PieceTemplateController tappedPiece = (PieceTemplateController)ge.args[0];
            Vector3 loc = (Vector3)ge.args[1];
            if(floatingPiece != null){
                bool success = grid.TryAddPiece(floatingPiece);
                if(success){
                    floatingPiece.SetGridLock(true);
                    floatingPiece = null;
                }
            }

            GameObject go = Instantiate (Resources.Load ("Prefabs/ExistingPiece")) as GameObject;
            go.transform.SetParent(canvas.transform,false);
            go.transform.position = new Vector3(loc.x,loc.y,go.transform.position.z);
            PieceController newPiece = go.GetComponent<PieceController>();
            newPiece.ConfigureFromJSON(tappedPiece.GetFilename());
            newPiece.SetRotation(0);
            newPiece.SetMoving(true);
            Activate(newPiece);
            iwc.RemovePiece(newPiece);
            //tappedPiece.SetCount(tappedPiece.GetCount()-1);
        }
    }
Esempio n. 14
0
    void CreatePiece(Vector2 pos, bool isWhite, PieceTitle.Piece pieceType)
    {
        GameObject piece = Instantiate(piecePrefab, pieceParent);

        piece.name = string.Format("{0}{1}", isWhite ? "White" : "Black", pieceNames[(int)pieceType]);
        RectTransform rect     = piece.GetComponent <RectTransform>();
        Vector2       position = new Vector2((pos.x * gridSpace) + gridOrigin, (pos.y * gridSpace) + gridOrigin);

        PieceController pieceController = piece.GetComponent <PieceController>();

        pieceController.gridCoordinate      = new Vector2(pos.x, pos.y);
        pieceController.isWhite             = isWhite;
        pieceController.piece               = pieceType;
        pieceController.score               = gameScores[(int)pieceType];
        piece.GetComponent <Image>().sprite = pieceSprites[(int)pieceType + (System.Enum.GetValues(typeof(PieceTitle.Piece)).Length *(isWhite?0:1))];
        rect.sizeDelta     = Vector2.one * gridSpace;
        rect.localPosition = position;
    }
Esempio n. 15
0
    void GrayPieces()
    {
        string validType = InventoryWindowController.TextStringFromType(towerType);

        foreach (Transform childPiece in piecesLayer)
        {
            PieceController pc = childPiece.GetComponent <PieceController>();
            Image           i  = pc.GetComponent <Image>();
            if (pc.validTypes[validType])
            {
                i.color = new Color(1f, 1f, 1f, 1f);
            }
            else
            {
                i.color = new Color(.5f, .5f, .5f, .5f);
            }
        }
    }
Esempio n. 16
0
 public void combine(PieceController owner, PieceController loser)
 {
     owner.move(loser.model.position);
     Player owningPlayer = playerForNumber(owner.model.playerNum);
     Player losingPlayer = playerForNumber(loser.model.playerNum);
     Debug.Log(owningPlayer);
     owningPlayer.pieces.Remove(owner.model);
     losingPlayer.pieces.Remove(loser.model);
     Piece newPiece = PieceFactory.combine(owner.model, loser.model);
     PieceController piece = Instantiate(piecePrefab, Vector3.zero, Quaternion.identity) as PieceController;
     piece.transform.parent = transform;
     piece.model = newPiece;
     piece.board = this;
     getTile(piece.model.position).myPiece = piece;
     owningPlayer.pieces.Add (newPiece);
     Destroy(owner.gameObject);
     Destroy(loser.gameObject);
 }
Esempio n. 17
0
 public void MovePieceTo( float x, float y ){
     //pick available piece
     int i = 0;
     PieceController toMove = pieces[i];
     while( toMove.isInBoard ) {
         i++;
         if( i < numPieces ) {
             toMove = pieces[i];
         }
         else {
             toMove = null;
             break;
         }
     }
     if( toMove ) {
         toMove.MoveToSpace( x, y );
     }
 }
Esempio n. 18
0
 public void selectPiece(PieceController pc)
 {
     if(this.selectedPiece != null) {
       if(this.selectedPiece == pc) {
     this.selectedPiece.deselect();
       }
       else if(this.selectedPiece.model.positionIsInRange(this, pc.model.position) && this.selectedPiece.model.canCombineWith(pc.model)) {
     int movingPlayer = this.selectedPiece.model.playerNum;
     combine(this.selectedPiece, pc);
     ai.move(this, movingPlayer == 2);
     return;
       } else {
     this.selectedPiece.deselect();
       }
     }
     this.selectedPiece = pc;
     pc.select();
 }
Esempio n. 19
0
    public void DeleteConnectedFull()
    {
        for (int x = 0; x < BoardController.width; x++)
        {
            for (int y = 0; y < BoardController.height; y++)
            {
                Grid tempNode = GetGridAtPoint(new Point(x, y));
                if (tempNode.value != -1)
                {
                    PieceController tempNodePiece = tempNode.getPiece();
                    if (tempNodePiece && (tempNodePiece.cntCrossDown >= 2 || tempNodePiece.cntCrossUp >= 2 || tempNodePiece.cntStraight >= 2 || tempNodePiece.cntArea >= 3))
                    {
                        DeleteConnectedPoint(tempNode.point);
                    }
                }
            }
        }

        // obstacle 적용
        foreach (PieceController pc in hitObstacle)
        {
            int hitcount = pc.getHitCount() + 1;
            pc.setHitCount(hitcount);
            if (hitcount == 2)
            {
                if (pc.value == (int)eStatus.SILVER)
                {
                    GameController.instance.MinusObstacleCountvalue();
                }
                SetGameScore(pc.value);

                blankList.Add(pc);
                GetGridAtPoint(pc.point).SetPiece(null);
                Destroy(pc.gameObject);
            }
        }
        hitObstacle.Clear();

        if (blankList.Count != 0)
        {
            bUpdateLogic = true;
            StartCoroutine(applyGravitybyTick());
        }
    }
Esempio n. 20
0
    public void HandleEvent(GameEvent ge)
    {
        Vector3 mousepos = InputWatcher.GetInputPosition();

        if (ge.type.Equals("mouse_release"))
        {
            //Stops the dial from spinning more
            spinner = false;
            //Only tries to lock if the spinner has a chance of moving
            if (clickTime > clickDelay)
            {
                //Locks position to nearest interval of 60
                float rotation = transform.eulerAngles.z;
                float lockRot  = Mathf.Round(rotation / 90.0f) * 90;
                transform.rotation = Quaternion.Euler(0, 0, lockRot);
                PieceController pc = EditorController.GetFloatingPiece();
                if (pc != null)
                {
                    pc.SetRotation(360 - transform.rotation.eulerAngles.z);
                }
            }
            //resets time
            clickTime = 0;
            touchDown = false;
        }
        else if (ge.type.Equals("mouse_click"))
        {
            //Allows the dial to start spinning
            if (spinner == false)
            {
                float dist = Mathf.Sqrt(((mousepos.x - transform.position.x) * (mousepos.x - transform.position.x))
                                        + ((mousepos.y - transform.position.y) * (mousepos.y - transform.position.y)));
                if (dist > radius)
                {
                    return;
                }
                originalRot = Mathf.Atan2(mousepos.y - transform.position.y, mousepos.x - transform.position.x);
                origz       = transform.eulerAngles.z;
                //Debug.Log ("new original degrees: " + originalRot);
            }
            spinner   = true;
            touchDown = true;
        }
    }
Esempio n. 21
0
    public PieceController AddPiece(PieceController piece)
    {
        if (piece.cost <= playerController.Gold && state == GameState.Start)
        {
            if (playerController.SpendMoney(piece.cost))
            {
                PieceController _old;
                do
                {
                    _old  = piece;
                    piece = UpgradePiece(piece);
                } while (_old != piece);

                _piecesList.Add(piece);
                return(piece);
            }
        }
        return(null);
    }
Esempio n. 22
0
 public void FillLine(int line)
 {
     for (int x = 0; x < gridSizeX; x++)
     {
         GridUnit curGridUnit = fullGrid[x, line];
         if (!curGridUnit.isOccupied)
         {
             GameObject      clonedTile = GameObject.Instantiate(tileClone, transform);
             PieceController tileContr  = clonedTile.GetComponent <PieceController>();
             if (GameEngine.instance.sectAfter20g > 1)
             {
                 tileContr.tiles[0].GetComponent <SpriteRenderer>().sprite = boneblock;
             }
             tileContr.tiles[0].UpdatePosition(new Vector2Int(x, line));
             tileContr.tiles[0].SetTileUp();
             PiecesController.instance.piecesInGame.Add(clonedTile);
         }
     }
 }
 public void RemovePiece(PieceController p)
 {
     string fname = p.GetFilename();
     for(int i = 0; i < fullList.Count; i++){
         InventoryRecord ir = fullList[i];
         if(fname.Equals(ir.pieceFileName)){
             int oldcount = ir.GetCount();
             if(oldcount <= 0){
                 return;
             }else if(oldcount == 1){
                 ir.SetCount(ir.GetCount()-1);
                 RefreshList();
             }else{
                 ir.SetCount(ir.GetCount()-1);
             }
             break;
         }
     }
 }
Esempio n. 24
0
    private void SpawnPiece(GameObject obj, Vector3 pos)
    {
        GameObject temp = Instantiate(obj, transform);

        temp.transform.position = pos;
        Piece piece = temp.AddComponent <Piece>();

        piece.board = this;
        pieces.Add(piece);
        temp.AddComponent <Valve.VR.InteractionSystem.Interactable>();
        PieceController pc = temp.AddComponent <PieceController>();

        pc.piece = piece;
        pc.board = this;
        MeshCollider col = temp.AddComponent <MeshCollider>();

        col.convex    = true;
        col.isTrigger = true;
    }
Esempio n. 25
0
    /// <summary>
    /// Загружает префаб фигуры и привязывает его к фигуре BoardState.
    /// </summary>
    /// <param name="figure">Фигура BoardState.</param>
    public void LoadGameObject(Figure figure)
    {
        // Определяем имя префаба
        string figureColor = figure.color.ToString();
        string figureType  = figure.GetType().ToString().ToLower();
        string figureName  = $"{figureColor}_{figureType}";

        // Создаем объект
        GameObject gameObject = Instantiate(Resources.Load($"Pieces/{figureName}")) as GameObject;

        gameObject.transform.position = new Vector3(figure.x, figure.y);
        gameObject.transform.parent   = GameObject.Find("pieces").transform;

        // Привязываем объект к фигуре BoardState
        PieceController pieceController = gameObject.GetComponent <PieceController>();

        pieceController.boardStateFigure = figure;
        figure.deletedCallback           = pieceController.DeletedCallback;
    }
 public void AddPiece(PieceController p)
 {
     string fname = p.GetFilename();
     for(int i = 0; i < fullList.Count; i++){
         InventoryRecord ir = fullList[i];
         if(fname.Equals(ir.pieceFileName)){
             //Debug.Log("old count is " + ir.GetCount());
             ir.SetCount(ir.GetCount()+1);
             //Debug.Log ("new count is " + ir.GetCount());
             if(ir.GetCount() == 1){
                 //Debug.Log ("we just tried refreshing");
                 RefreshList();
             }
             break;
         }else{
             //Debug.Log(fname + " doesn't equal " + ir.pieceFileName);
         }
     }
 }
Esempio n. 27
0
 /// <summary>
 /// reset piece state
 /// </summary>
 public void Reset()
 {
     if (!gameObject.activeInHierarchy)
     {
         gameObject.SetActive(true);
     }
     state  = PieceState.Idle;
     Target = null;
     Health = maxHealth;             // Set Default health to Max Health
     // fixed origin position
     transform.position = originPos; // origin cell position and offset
     targetPos          = originPos;
     lastMove           = originPos;
     // reset animation
     // AnimatorController.Rebind();
     // AnimatorController.Update(0f);
     AnimatorController.ChangeAnimation(PlayerAnimations.Idle.ToString());
     AnimatorController.SetFlipX(Team == 1);
 }
Esempio n. 28
0
    public void PlaceOnTop(PieceController piece)
    {
        if (PieceBelow != null)
        {
            PieceBelow.PieceOnTop = null;
        }

        GridPosition = piece.GridPosition;

        while (piece.PieceOnTop != null)
        {
            piece = piece.PieceOnTop;
        }

        transform.position = piece.transform.position + Vector3.up;

        piece.PieceOnTop = this;
        PieceBelow       = piece;
    }
Esempio n. 29
0
        private void AddIndex(int value)
        {
            if (shiftDown)
            {
                value *= 4;
            }

            indexShadow += value;

            if (indexShadow < 0)
            {
                indexShadow = PieceController.GetRowLength(compressedBuilding.pieceRow);
            }
            if (indexShadow > PieceController.GetRowLength(compressedBuilding.pieceRow))
            {
                indexShadow = 0;
            }

            SetSampleShadow();
        }
Esempio n. 30
0
 /// <summary>
 /// Clears all tiles from a specified line
 /// </summary>
 /// <param name="lineToClear">Index of the line to be cleared</param>
 void ClearLine(int lineToClear)
 {
     if (lineToClear < 0 || lineToClear > gridSizeY)
     {
         Debug.LogError("Error: Cannot Clear Line: " + lineToClear);
         return;
     }
     for (int x = 0; x < gridSizeX; x++)
     {
         PieceController curPC = fullGrid[x, lineToClear].tileOnGridUnit.GetComponent <TileController>().pieceController;
         curPC.tiles[fullGrid[x, lineToClear].tileOnGridUnit.GetComponent <TileController>().tileIndex] = null;
         Destroy(fullGrid[x, lineToClear].tileOnGridUnit);
         if (!curPC.AnyTilesLeft())
         {
             Destroy(curPC.gameObject);
         }
         fullGrid[x, lineToClear].tileOnGridUnit = null;
         fullGrid[x, lineToClear].isOccupied     = false;
     }
 }
Esempio n. 31
0
 void Awake()
 {
     if (instance == null)
     {
         instance = this;
     }
     if (pieces == null)
     {
         pieces = new List <Piece>();
     }
     if (board == null)
     {
         board = GameObject.Find("Canvas").transform.GetChild(0).GetChild(0).GetComponent <RectTransform>();
     }
     if (piecePrefab == null)
     {
         piecePrefab = Resources.Load <GameObject>("piece");
     }
     settingFiles = new Dictionary <string, TextAsset>();
 }
Esempio n. 32
0
        public SwapJob(PieceController piece, PieceController other, float speed, bool revert = false)
        {
            m_piece = piece;
            m_other = other;

            m_speed = speed;

            m_revert = revert;

            if (m_revert)
            {
                m_tween0 = new LinearTween(piece.transform, piece.transform.position, GameController.Instance.GetPiecePosition(other.Row, other.Col), speed);
                m_tween1 = new LinearTween(other.transform, other.transform.position, GameController.Instance.GetPiecePosition(piece.Row, piece.Col), speed);
            }
            else
            {
                m_tween0 = new LinearTween(piece.transform, piece.transform.position, GameController.Instance.GetPiecePosition(piece.Row, piece.Col), speed);
                m_tween1 = new LinearTween(other.transform, other.transform.position, GameController.Instance.GetPiecePosition(other.Row, other.Col), speed);
            }
        }
Esempio n. 33
0
    public bool AnimatePieceDrop(PieceController piece)
    {
        bool animate = false;

        Vector3 sourcePos = piece.transform.position;
        Vector3 targetPos = Game.GetPiecePosition(piece.Row, piece.Col);

        float dist = (sourcePos - targetPos).magnitude;

        if (dist > 0.01f)
        {
            animate = true;

            targetPos = new Vector3(sourcePos.x, Mathf.Max(targetPos.y, sourcePos.y - pieceDropSpeed * Time.deltaTime));
        }

        piece.transform.position = targetPos;

        return(animate);
    }
Esempio n. 34
0
        private void AddIndex(int value)
        {
            if (shiftDown)
            {
                value *= 4;
            }

            indexBuilding += value;

            if (indexBuilding < 0)
            {
                indexBuilding = PieceController.GetRowLength(compressedBuilding.pieceRow);
            }
            if (indexBuilding > PieceController.GetRowLength(compressedBuilding.pieceRow))
            {
                indexBuilding = 0;
            }

            SetSamplePiece();
        }
Esempio n. 35
0
    public void combine(PieceController owner, PieceController loser)
    {
        owner.move(loser.model.position);
        Player owningPlayer = playerForNumber(owner.model.playerNum);
        Player losingPlayer = playerForNumber(loser.model.playerNum);

        Debug.Log(owningPlayer);
        owningPlayer.pieces.Remove(owner.model);
        losingPlayer.pieces.Remove(loser.model);
        Piece           newPiece = PieceFactory.combine(owner.model, loser.model);
        PieceController piece    = Instantiate(piecePrefab, Vector3.zero, Quaternion.identity) as PieceController;

        piece.transform.parent = transform;
        piece.model            = newPiece;
        piece.board            = this;
        getTile(piece.model.position).myPiece = piece;
        owningPlayer.pieces.Add(newPiece);
        Destroy(owner.gameObject);
        Destroy(loser.gameObject);
    }
Esempio n. 36
0
 /// <summary>
 /// 一行のタイルをクリアする
 /// </summary>
 /// <param name="lineToClear">行のインデクス</param>
 private void ClearLine(int lineToClear)
 {
     if (lineToClear < 0 || lineToClear > gridSizeY)
     {
         Debug.LogError("Error: Cannot Clear Line" + lineToClear);
         return;
     }
     for (int x = 0; x < gridSizeX; x++)
     {
         PieceController curPC = gameBoardUnits[x, lineToClear].tileOnThisGrid.GetComponent <TileController>().pieceController;
         curPC.tiles[gameBoardUnits[x, lineToClear].tileOnThisGrid.GetComponent <TileController>().tileIndex] = null;
         Destroy(gameBoardUnits[x, lineToClear].tileOnThisGrid);
         if (!curPC.AnyTilesLeft())
         {
             Destroy(curPC.gameObject);
         }
         gameBoardUnits[x, lineToClear].tileOnThisGrid = null;
         gameBoardUnits[x, lineToClear].isOccupied     = false;
     }
 }
Esempio n. 37
0
    public void CreateAtRandom(Transform parent, Action <PieceController> onCreate)
    {
        Assert.IsNotNull(_bornPieceList);

        if (_bornPieceList == null)
        {
            return;
        }
        if (_bornPieceList.Count == 0)
        {
            return;
        }

        var             index  = UnityEngine.Random.Range(0, _bornPieceList.Count - 1);
        var             prefab = _bornPieceList[index];
        PieceController piece  = Instantiate(prefab, parent).GetComponent <PieceController>();

        _pieceInstanceList.Add(piece);

        onCreate(piece);
    }
Esempio n. 38
0
    private void FindEnemy(PieceController origin)
    {
        float           minDistance = float.MaxValue;
        PieceController target      = null;

        foreach (var piece in _piecesList)
        {
            // If target piece alive
            if (origin != piece && piece.Alive && piece.Team != origin.Team)
            {
                // Compare the distance of enemy
                var dis = Vector3.Distance(origin.CurrentPosition, piece.TargetPos);
                if (dis < minDistance)
                {
                    minDistance = dis;
                    target      = piece;
                }
            }
        }
        origin.Target = target;
    }
Esempio n. 39
0
 public void RemovePiece(PieceController pc)
 {
     foreach(PieceRecord pr in allPieces){
         if(pr.pc == pc){
             allPieces.Remove(pr);
             UpdateReadout();
             break;
         }
     }
     for(int i = 0; i < GRID_SIZE; i++){
         for(int j = 0; j < GRID_SIZE; j++){
             Occupancy o = grid[i,j];
             if(o.north == pc)
                 o.north = null;
             if(o.east == pc)
                 o.east = null;
             if(o.south == pc)
                 o.south = null;
             if(o.west == pc)
                 o.west = null;
         }
     }
 }
Esempio n. 40
0
 public void PutThatThingBackWhereItCameFromOrSoHelpMe(PieceController pc,int x, int y)
 {
     RectTransform prt = (RectTransform)pc.transform;
     RectTransform rt = (RectTransform)transform;
     UIRectTranslator translate = transform.gameObject.GetComponent<UIRectTranslator>();
     Vector3[] corners = new Vector3[4];
     rt.GetWorldCorners(corners);
     Vector3 gridTopCorner = corners[1];//new Vector3(gridCorner.x,gridCorner.y+gridLength,gridCorner.z);
     Vector3 extents = translate.WorldSize(prt)/2;
     pc.transform.position = gridTopCorner + new Vector3(squareWidth*x + extents.x,
                                                         -squareWidth*(y) - extents.y,
                                                         pc.transform.position.z);
     pc.transform.SetParent(EditorController.piecesLayer,false);
 }
Esempio n. 41
0
    public bool TryAddPiece(PieceController pc)
    {
        bool fits = PieceFits(pc.gameObject,pc.GetArray());

        if(!fits){
            Debug.Log ("didn't fit");
            return false;
        }

        int[,] pieceValues = pc.GetArray();
        //we've gone through and there've been no collisions
        //actually add the piece
        allPieces.Add(new PieceRecord(pc,xcounter,ycounter));
        UpdateReadout();
        for(int i = 0; i < pieceValues.GetLength(0); i++){
            for(int j = 0; j < pieceValues.GetLength(1); j++){
                Occupancy o = grid[ycounter + i,xcounter + j];
                int shapecode = pieceValues[i,j];
                if(shapecode == 0){
                    continue;
                }if(shapecode == 1){
                    o.north = pc;
                    o.east = pc;
                    o.south = pc;
                    o.west = pc;
                }if(shapecode == NORTHWEST_CODE){
                    o.north = pc;
                    o.west = pc;
                }if(shapecode == NORTHEAST_CODE){
                    o.north = pc;
                    o.east = pc;
                }if(shapecode == SOUTHEAST_CODE){
                    o.south = pc;
                    o.east = pc;
                }if(shapecode == SOUTHWEST_CODE){
                    o.south = pc;
                    o.west = pc;
                }

            }
        }
        //SpriteRenderer sr = pc.gameObject.GetComponent<SpriteRenderer>();

        PutThatThingBackWhereItCameFromOrSoHelpMe(pc,xcounter,ycounter);
        /*RectTransform prt = (RectTransform)pc.transform;
        RectTransform rt = (RectTransform)transform;
        UIRectTranslator translate = transform.gameObject.GetComponent<UIRectTranslator>();
        Vector3[] corners = new Vector3[4];
        rt.GetWorldCorners(corners);
        Vector3 gridTopCorner = corners[1];//new Vector3(gridCorner.x,gridCorner.y+gridLength,gridCorner.z);
        Vector3 extents = translate.WorldSize(prt)/2;
        pc.transform.position = new Vector3(xcounter*squareWidth + gridCorner.x + extents.x,
                                            gridCorner.y + gridLength - ((ycounter-1)*squareWidth) - extents.y,
                                            pc.transform.position.z);*/

        for(int i = 0; i < GRID_SIZE; i++){
            for(int j = 0; j < GRID_SIZE; j++){
                overlays[i,j].sprite = blank;
            }
        }
        Debug.Log ("it fit");
        return fits;
    }
Esempio n. 42
0
    public void Start()
    {
        grid = GameObject.Find("Grid").GetComponent<GridController>();
        ewc = GameObject.Find("SpinWheel").GetComponent<EditorWheelController>();
        sr = GameObject.Find("InvScroll").GetComponent<ScrollRect>();
        iwc = GameObject.Find("InvContent").GetComponent<InventoryWindowController>();
        canvas = GameObject.Find ("Canvas").GetComponent<Canvas>();
        //grid.editor = this;

        EventManager em = EventManager.Instance();
        em.RegisterForEventType("piece_tapped",this);
        em.RegisterForEventType("template_tapped",this);
        em.RegisterForEventType("piece_dropped_on_inventory",this);

        GameObject go = Instantiate (Resources.Load ("Prefabs/ExistingPiece")) as GameObject;
        go.transform.SetParent(canvas.transform,false);
        go.transform.position = new Vector3(go.transform.position.x-2,go.transform.position.y,go.transform.position.z);
        floatingPiece = go.GetComponent<PieceController>();
        floatingPiece.ConfigureFromJSON("penetration_normal");
        floatingPiece.SetRotation(180);

        ewc.transform.rotation = floatingPiece.transform.rotation;
    }
Esempio n. 43
0
 public void InventoryAdd(PieceController p)
 {
     iwc.AddPiece(p);
     Destroy (p.gameObject);
 }
Esempio n. 44
0
 void Awake()
 {
     if (instance == null)
         instance = this;
     if(pieces == null)
         pieces = new List<Piece>();
     if(board == null)
         board = GameObject.Find("Canvas").transform.GetChild(0).GetChild(0).GetComponent<RectTransform>();
     if(piecePrefab == null)
         piecePrefab = Resources.Load<GameObject>("piece");
     settingFiles = new Dictionary<string, TextAsset>();
 }
	public override void runTileAction (PieceController piece){
		shopMenu.playerID = piece.playerID;
		shopMenu.ResetShop ();
	}
Esempio n. 46
0
    public void HandleEvent(GameEvent ge)
    {
        if(ge.type.Equals("piece_tapped")){
            PieceController tappedPiece = (PieceController)ge.args[0];
            if(tappedPiece.GetGridLock()){
                if(floatingPiece != null){
                    bool success = grid.TryAddPiece(floatingPiece);
                    if(success){
                        floatingPiece.SetGridLock(true);
                        floatingPiece = null;
                    }
                }
                Activate (tappedPiece);
            }else{
                bool success = grid.TryAddPiece(tappedPiece);
                if(success){
                    tappedPiece.SetGridLock(true);
                    floatingPiece = null;
                }
            }
        }else if(ge.type.Equals("piece_dropped_on_inventory")){
            PieceController piece = (PieceController)ge.args[0];
            InventoryAdd(piece);
        }else if(ge.type.Equals("template_tapped")){
            PieceTemplateController tappedPiece = (PieceTemplateController)ge.args[0];
            Vector3 loc = (Vector3)ge.args[1];
            if(floatingPiece != null){
                bool success = grid.TryAddPiece(floatingPiece);
                if(success){
                    floatingPiece.SetGridLock(true);
                    floatingPiece = null;
                }
            }

            GameObject go = Instantiate (Resources.Load ("Prefabs/ExistingPiece")) as GameObject;
            go.transform.SetParent(canvas.transform,false);
            go.transform.position = new Vector3(loc.x,loc.y,go.transform.position.z);
            PieceController newPiece = go.GetComponent<PieceController>();
            newPiece.ConfigureFromJSON(tappedPiece.GetFilename());
            newPiece.SetRotation(0);
            newPiece.SetMoving(true);
            Activate(newPiece);
            iwc.RemovePiece(newPiece);
            //tappedPiece.SetCount(tappedPiece.GetCount()-1);
        }else if(ge.type.Equals("alt_click")){
            if(floatingPiece == null)
                return;
            if(!finger1down){
                return;
            }

            Vector3 altClickPos = (Vector3)ge.args[0];
            Vector3 firstClickPos = InputWatcher.GetInputPosition();
            Vector3 direction = altClickPos-firstClickPos;
            twoFingerAngle = Mathf.Atan2 (direction.y,direction.x) *Mathf.Rad2Deg;
            pieceAngle = floatingPiece.transform.eulerAngles.z;

            floatingPiece.SetTwoFingerMovement(true);
            finger2down = true;
        }else if(ge.type.Equals("alt_release")){
            Debug.Log ("alt release happened");
            if(floatingPiece == null)
                return;

            if(waitingForOtherFingerToReset){
                floatingPiece.SetTwoFingerMovement(false);
                waitingForOtherFingerToReset = false;
            }else{
                waitingForOtherFingerToReset = true;
                floatingPiece.LockRotation();
            }
            finger2down = false;

        }else if(ge.type.Equals("mouse_click")){
            Vector3 pos = (Vector3)ge.args[0];
            if(grid.TouchIsOnMe(pos)){
                finger1down = true;
            }
        }else if(ge.type.Equals("mouse_release")){
            if(floatingPiece == null)
                return;
            if(waitingForOtherFingerToReset){
                floatingPiece.SetTwoFingerMovement(false);
                waitingForOtherFingerToReset = false;
            }else{
                waitingForOtherFingerToReset = true;
                floatingPiece.LockRotation();
            }
            finger1down = false;
        }
    }
Esempio n. 47
0
 public PieceRecord(PieceController p, int nx, int ny)
 {
     pc = p;
     x = nx;
     y = ny;
 }
	public abstract void runTileAction (PieceController piece);