Ejemplo n.º 1
0
    void Update()
    {
        if (battle == null)
        {
            battle = Object.FindObjectOfType <BattleGrid>();
        }

        if (whileUnitMove || whileUnitAction || whileAIControl)
        {
            ResetWandToUnit();
        }

        if (whileUnitMove && !battle.isMovingUnit)
        {
            OnMoveFinish();
        }

        if (whileUnitAction && !battle.isActingUnit)
        {
            OnActionFinish();
        }

        if (whileAIControl && !battle.isControllingUnit)
        {
            PassUnit();
        }

        KeyInputs();
        UpdateUI();
    }
Ejemplo n.º 2
0
 public MoveAction(BattleSoldier soldier, BattleGrid grid, Tuple <int, int> newLocation, ConcurrentBag <MoveResolution> resultList)
 {
     _soldier     = soldier;
     _grid        = grid;
     _newLocation = newLocation;
     _resultList  = resultList;
 }
Ejemplo n.º 3
0
    public override HashSet <TileNode> GetSelectionTiles(BattleUnit user, BattleGrid battle)
    {
        HashSet <TileNode> set = new HashSet <TileNode>();

        set.Add(battle.GetTile(user.GetPosKey()));
        return(set);
    }
        //create cell dictionary
        public NavmeshLayserSerializer(Dictionary <GeneralXZData, Graph> chunkData, Dictionary <XZPosInt, YRangeInt> chunkRangeData, AgentProperties properties)
        {
            int cellCounter = 0, bgpCounter = 0;

            //creating cell dictionary cause connections are lead outside chunk

            foreach (var graph in chunkData.Values)
            {
                if (graph.empty || graph.properties != properties)
                {
                    continue;
                }

                targetGraphs.Add(graph);

                foreach (var cell in graph.cells)
                {
                    cells.Add(cell, cellCounter++);
                }

                BattleGrid bg = graph.battleGrid;
                if (bg != null)
                {
                    foreach (var p in bg.points)
                    {
                        bgIDs.Add(p, bgpCounter++);
                    }
                }
            }
        }
Ejemplo n.º 5
0
    //**************
    //角色移动、入场
    //**************

    /// <summary>
    /// 单位移动到某位置,返回目标位置坐标
    /// </summary>
    /// <returns>The move to.</returns>
    public Vector2 UnitMoveTo(Vector2Int start, Vector2Int end)
    {
        mapGrids[start.x][start.y].Occupied = false;
        mapGrids[end.x][end.y].Occupied     = true;
        standingGrid = mapGrids[end.x][end.y];
        return(MapView.GetCellPosition(end.x, end.y));
    }
Ejemplo n.º 6
0
    ///**************
    //角色进入回合时的可行走状态
    ///**************
    public void StartRound(BattleUnit unit)
    {
        standingGrid = mapGrids[unit.Position.x][unit.Position.y];
        targetGrid   = standingGrid;

        //重置一下可到达状态
        if (walkableRange != null)
        {
            for (int i = 0; i < walkableRange.Count; i++)
            {
                GetBattleGridByPos(walkableRange[i].Position).Reachable = false;
            }
        }

        walkableRange = CircleTargets(unit.Steps);

        //改变可到达状态
        for (int i = 0; i < walkableRange.Count; i++)
        {
            GetBattleGridByPos(walkableRange[i].Position).Reachable = true;
            //参数传递过程中,新建了BattleGrid
            //walkableRange[i].Reachable = true;
            //Debug.Log(walkableRange[i].Position + " Reachable = true");
            //Debug.Log(GetBattleGridByPos(walkableRange[i].Position).Position + " Reachable = " + GetBattleGridByPos(walkableRange[i].Position).Reachable);
        }
        MapView.SetWalkingState(standingGrid, walkableRange);
    }
Ejemplo n.º 7
0
    List <BattleGrid> GetFanNeighbour(BattleGrid grid, List <GridDirection> directions)
    {
        List <BattleGrid> grids = new List <BattleGrid>();

        if (directions.Contains(GridDirection.LeftUp))
        {
            GetGridByDirection(grid, GridDirection.LeftUp);
        }
        if (directions.Contains(GridDirection.LeftDown))
        {
            GetGridByDirection(grid, GridDirection.LeftDown);
        }
        if (directions.Contains(GridDirection.RightUp))
        {
            GetGridByDirection(grid, GridDirection.RightUp);
        }
        if (directions.Contains(GridDirection.RightDown))
        {
            GetGridByDirection(grid, GridDirection.RightDown);
        }
        if (directions.Contains(GridDirection.Up))
        {
            GetGridByDirection(grid, GridDirection.Up);
        }
        if (directions.Contains(GridDirection.Down))
        {
            GetGridByDirection(grid, GridDirection.Down);
        }
        return(grids);
    }
Ejemplo n.º 8
0
 //**************
 //初始化地图
 //**************
 public void InitBattleMap()
 {
     if (!isExist)
     {
         mapGrids = new BattleGrid[DefaultConfigs.BattleMapSize.x][];
         for (int i = 0; i < mapGrids.Length; i++)
         {
             mapGrids[i] = new BattleGrid[DefaultConfigs.BattleMapSize.y];
             for (int j = 0; j < mapGrids[i].Length; j++)
             {
                 mapGrids[i][j] = new BattleGrid(i, j);
             }
         }
         MapView.InitBattleMapView();
         isExist = true;
     }
     else
     {
         for (int i = 0; i < mapGrids.Length; i++)
         {
             for (int j = 0; j < mapGrids[i].Length; j++)
             {
                 mapGrids[i][j].Occupied  = false;
                 mapGrids[i][j].Reachable = false;
             }
         }
     }
     //standingGrid = mapGrids[0][0];
     //targetGrid = mapGrids[0][0];
 }
Ejemplo n.º 9
0
        /// <summary>
        /// Sets up the game resources.
        /// </summary>
        public void CreateGame()
        {
            _shotCount = 0;
            _ships.Clear();

            _grid = _factory.CreateGrid(_gridSize);
        }
Ejemplo n.º 10
0
    /// <summary>
    /// 找到离目标最近的移动点
    /// </summary>
    public Vector2Int GetMovingTargetPos(BattleUnit unit, Vector2Int targetPos)
    {
        standingGrid  = mapGrids[unit.Position.x][unit.Position.y];
        targetGrid    = standingGrid;
        walkableRange = CircleTargets(unit.Steps);
        int  distance = 0;
        int  temp;
        int  index = 0;
        bool isStraight;
        bool tempStraight;

        distance = MathCalculator.GetBattleGridDistance(targetPos, walkableRange[0].Position, out isStraight);
        Debug.Log("Total range = " + walkableRange.Count + "," + walkableRange[0].Position + "," + distance + "," + isStraight);

        for (int i = 1; i < walkableRange.Count; i++)
        {
            Debug.Log(walkableRange[i].Position + "," + walkableRange[i].Walkable);
            if (!walkableRange[i].Walkable)
            {
                continue;
            }
            temp = MathCalculator.GetBattleGridDistance(targetPos, walkableRange[i].Position, out tempStraight);
            Debug.Log(walkableRange[i].Position + "," + distance + "," + isStraight);
            if (temp < distance || (!isStraight && tempStraight))
            {
                distance   = temp;
                isStraight = tempStraight;
                index      = i;
            }
        }
        return(walkableRange[index].Position);
    }
Ejemplo n.º 11
0
    void Start()
    {
        grid = FindObjectOfType <BattleGrid>();
        PlayerStatsControl stats = FindObjectOfType <PlayerStatsControl>();

        if (stats.nzona == 0)
        {
            SpriteRenderer campoBattaglia = GameObject.Find("CampoBattaglia").GetComponent <SpriteRenderer>();
            campoBattaglia.sprite = campiBattaglia[0];
        }

        if (stats.nzona == 1)
        {
            SpriteRenderer campoBattaglia = GameObject.Find("CampoBattaglia").GetComponent <SpriteRenderer>();
            campoBattaglia.sprite = campiBattaglia[1];
        }

        if (stats.nzona == 2)
        {
            SpriteRenderer campoBattaglia = GameObject.Find("CampoBattaglia").GetComponent <SpriteRenderer>();
            campoBattaglia.sprite = campiBattaglia[2];
        }

        if (stats.nzona == 3)
        {
            SpriteRenderer campoBattaglia = GameObject.Find("CampoBattaglia").GetComponent <SpriteRenderer>();
            campoBattaglia.sprite = campiBattaglia[3];
        }
        if (stats.nzona == 4)
        {
            SpriteRenderer campoBattaglia = GameObject.Find("CampoBattaglia").GetComponent <SpriteRenderer>();
            campoBattaglia.sprite = campiBattaglia[4];
        }
    }
Ejemplo n.º 12
0
    //static void MakeAttackZone(Hero hero, Hero initialTarget, out List<Hero> targets, List<Hero> enemyList)
    //{
    //    targets = new List<Hero>();
    //    int place;
    //    if (initialTarget != null)
    //    {
    //        place = Mathf.Clamp(initialTarget.mySlot.myPlace, 1, 3);
    //    } else {
    //        place = Mathf.Clamp(enemyList[0].mySlot.myPlace, 1, 3);                     //default behaviour, change later to attack lowest max HP target
    //    }

    //    //make into square-shape target function
    //    TryAddTarget(AIenemies.GetSlotByCoord(1, place));
    //    TryAddTarget(AIenemies.GetSlotByCoord(2, place));
    //    ++place;
    //    TryAddTarget(AIenemies.GetSlotByCoord(1, place));
    //    TryAddTarget(AIenemies.GetSlotByCoord(2, place));
    //}

    //static void MakeBuffZone(Hero hero, Hero initialTarget, out List<Hero> targets)
    //{
    //    targets = new List<Hero>();
    //    int place = 0;
    //    if (initialTarget != null)
    //    {
    //        place = Mathf.Clamp(initialTarget.mySlot.myPlace, 1, 3);
    //    }
    //    else
    //    {
    //        Debug.LogError("unintended AI solution");
    //        return;
    //    }

    //    //make into square-shape target function


    //}

    static void CubicalTarget(BattleGrid grid, Hero initialTarget, out List <Hero> targets)
    {
        targets = new List <Hero>();
        int place = 0;

        if (initialTarget != null)
        {
            place = Mathf.Clamp(initialTarget.mySlot.myPlace, 1, 3);
        }
        else
        {
            Debug.LogError("unintended AI solution");
            return;
        }


        List <Slot> slots = new List <Slot>();

        slots.Add(grid.GetSlotByCoord(1, place));
        slots.Add(grid.GetSlotByCoord(2, place));
        place++;
        slots.Add(grid.GetSlotByCoord(1, place));
        slots.Add(grid.GetSlotByCoord(2, place));

        ExtractSlotHeroes(slots, out targets);
    }
Ejemplo n.º 13
0
    //func about how to spawn characters based on array of IDs
    void SpawnChars(int[] IDsArray, BattleGrid currentGrid, out List <Hero> list)
    {
        list = new List <Hero>();
        int currentHeroID;

        heroSpawnRotation = CharPrefab.transform.rotation;
        for (int index = 0; index < IDsArray.Length; index++)
        {
            if (IDsArray[index] > 0)
            {
                currentHeroID = IDsArray[index];
                CharPrefab    = elementDict[currentHeroID];

                GameObject character = Instantiate(
                    CharPrefab,
                    new Vector3(currentGrid.Slots[index].XworldPos, 4f, currentGrid.Slots[index].ZworldPos),
                    heroSpawnRotation
                    );
                Hero currentHero = character.GetComponent <Hero>();
                currentHero.HeroID = currentHeroID;
                currentHero.Initiate();
                currentHero.mySlot = currentGrid.Slots[index];
                currentGrid.Slots[index].myHero = currentHero;
                list.Add(currentHero);
                turnList.Add(currentHero);
            }
        }
    }
Ejemplo n.º 14
0
 public void Init(int x, int y, BattleGrid grid, BattleGrid.pieceType type)
 {
     this.x         = x;
     this.y         = y;
     this.grid      = grid;
     this.type      = type;
     this.clearType = (int)ClearTypeEnum.NONE;
 }
Ejemplo n.º 15
0
    public override HashSet <TileNode> GetSelectionTiles(BattleUnit user, BattleGrid battle)
    {
        TileNode center = battle.GetTile(user.GetPosKey());

        return(new HashSet <TileNode>()
        {
            center
        });
    }
Ejemplo n.º 16
0
 public void SetSelectingState(BattleGrid standingPoint, List <BattleGrid> selectingRange)
 {
     //Debug.Log("Set Targeting State");
     temp = selectingRange;
     for (int i = 0; i < selectingRange.Count; i++)
     {
         GetCellImageByBattleUnit(selectingRange[i]).sprite = selecting;
     }
 }
Ejemplo n.º 17
0
    void Update()
    {
        if (battle == null)
        {
            battle = Object.FindObjectOfType <BattleGrid>();
        }

        MoveWand();
    }
Ejemplo n.º 18
0
    public override void ApplyAction(TileNode target, BattleGrid battle)
    {
        BattleUnit bu = battle.GetUnit(target.GetPos());

        if (bu != null)
        {
            bu.unit.ApplyDamage(20);
        }
    }
Ejemplo n.º 19
0
    public void Initiate()
    {
        myGrid = new BattleGrid(side, gridPlaces, gridRows);

        gridWidth  = upperRuler.transform.position.x - lowerRuler.transform.position.x;
        gridHeight = upperRuler.transform.position.z - lowerRuler.transform.position.z;

        slotHalfWidth  = (gridWidth / myGrid.rows) / 2;
        slotHalfHeight = (gridHeight / myGrid.placesInRows) / 2;
    }
Ejemplo n.º 20
0
 // Use this for initialization
 void Start()
 {
     pos        = transform.position;
     tr         = transform;
     music      = GetComponent <AudioSource>();
     bg         = GameObject.FindGameObjectWithTag("BattleArea").GetComponent <BattleGrid>();
     shoot      = Resources.Load("Music/shoot1") as AudioClip;
     damage     = Resources.Load("Music/Hit1") as AudioClip;
     battleChip = GetComponent <BattleChip>();
 }
Ejemplo n.º 21
0
    public override void QStart(BattleManager manager)
    {
        m_Grid = manager.grid;
        BattleActor actor = m_Grid[m_Source.x, m_Source.y].Actor;

        m_Actor = actor.transform;

        // set animation
        actor.Agent.Direction  = Mathf.Atan2(-m_Direction.x, -m_Direction.y) * 180f / Mathf.PI;
        actor.Sprite.Animation = "walk";
    }
Ejemplo n.º 22
0
        public SerializedBattleGrid(NavmeshLayserSerializer ns, BattleGrid bg)
        {
            lengthX = bg.lengthX;
            lengthZ = bg.lengthZ;

            points = new List <SerializedBattleGridPoint>();
            foreach (var p in bg.points)
            {
                points.Add(new SerializedBattleGridPoint(ns, p));
            }
        }
Ejemplo n.º 23
0
 public void Awake()
 {
     if (instance == null)
     {
         instance = this;
     }
     else
     {
         Destroy(gameObject);
     }
 }
Ejemplo n.º 24
0
 List <BattleGrid> GetNeighbour(BattleGrid grid)
 {
     return(new List <BattleGrid>
     {
         GetGridByDirection(grid, GridDirection.LeftUp),
         GetGridByDirection(grid, GridDirection.LeftDown),
         GetGridByDirection(grid, GridDirection.RightUp),
         GetGridByDirection(grid, GridDirection.RightDown),
         GetGridByDirection(grid, GridDirection.Up),
         GetGridByDirection(grid, GridDirection.Down)
     });
 }
Ejemplo n.º 25
0
    /* --------------------------------------------------------------------- */

    #region Construction

    #endregion

    /* --------------------------------------------------------------------- */

    #region Unity Methods

    // Use this for initialization
    void Start()
    {
        _livingUnits   = FindObjectsOfType <BattleUnit>().ToList();;
        _turnOrder     = new Queue <Turn>();
        _waitTurnOrder = new Queue <Turn>();

        _battleGrid = FindObjectOfType <BattleGrid>();

        _battleTurnGui = new BattleTurnGUI(_turnPanel);

        GenerateTurnOrder();
    }
Ejemplo n.º 26
0
        public void GivenNewGridCalledWhenSizeIsZeroThenCellsCountCorrect()
        {
            // Arrange
            var sut = new BattleGrid(0);

            // Act
            var result = sut.Cells;

            // Assert
            Assert.NotNull(result);
            Assert.Empty(result);
        }
Ejemplo n.º 27
0
        public BattleGridControl()
        {
            InitializeComponent();
            int i;

            for (i = 0; i < BattleGrid.ROWS; i++)
            {
                layout.RowDefinitions.Add(new RowDefinition()
                {
                    Height = new GridLength(20)
                });
            }
            for (i = 0; i < BattleGrid.COLS; i++)
            {
                layout.ColumnDefinitions.Add(new ColumnDefinition()
                {
                    Width = new GridLength(20)
                });
            }
            for (i = 0; i < BattleGrid.ROWS; i++)
            {
                for (int j = 0; j < BattleGrid.COLS; j++)
                {
                    Rectangle r = new Rectangle()
                    {
                        HorizontalAlignment = System.Windows.HorizontalAlignment.Stretch, VerticalAlignment = System.Windows.VerticalAlignment.Stretch, Stroke = Brushes.White, StrokeThickness = 1, Fill = Brushes.Blue
                    };
                    layout.Children.Add(r);
                    Grid.SetRow(r, i);
                    Grid.SetColumn(r, j);
                }
            }

            BattleGrid g = new BattleGrid();

            // Ajout de bateaux
            g.NewGrid();

            // Tirs
            for (i = 0; i < 10; i++)
            {
                g.Shoot(2, i);
                g.Shoot(3, i);
            }

            g.Shoot(6, 2);
            g.Shoot(1, 1);
            g.Shoot(4, 1);
            g.Shoot(1, 4);

            // Draw
            this.Draw(g);
        }
Ejemplo n.º 28
0
 /// <summary>
 /// 设置进入回合行走时格子的状态
 /// </summary>
 public void SetWalkingState(BattleGrid standingPoint, List <BattleGrid> walkableRange)
 {
     temp = walkableRange;
     for (int i = 0; i < walkableRange.Count; i++)
     {
         if (!walkableRange[i].Occupied)
         {
             GetCellImageByBattleUnit(walkableRange[i]).sprite = walkable;
         }
     }
     GetCellImageByBattleUnit(standingPoint).sprite = standard;
 }
Ejemplo n.º 29
0
        public void GivenNewGridCalledWhenSizeIsValidThenCellsCountCorrect()
        {
            // Arrange
            var sut = new BattleGrid(10);

            // Act
            var result = sut.Cells;

            // Assert
            Assert.NotNull(result);
            Assert.Equal(100, result.Length);
        }
Ejemplo n.º 30
0
    void writeGrid(Affiliation x, BattleGrid grid)
    {
        switch (x)
        {
        case Affiliation.Ally:
            TurnComponent.Instance.TeamOneGrid = grid;
            break;

        case Affiliation.Enemy:
            TurnComponent.Instance.TeamTwoGrid = grid;
            break;
        }
    }