Пример #1
0
 void SpawnUnit(bool isPlayer, BaseUnitController toSpawn, int numberToSpawn)
 {
     if (isPlayer)
     {
         for (int i = 0; i < numberToSpawn; i++)
         {
             int position            = Random.Range(0, playerSpawnPoints.Count - 1);
             BaseUnitController unit = Instantiate(toSpawn, playerSpawnPoints[position].transform.position, Quaternion.identity, playerFolder.transform);
             playerSpawnPoints[position].GetComponent <SquareTile>().currentUnit = unit;
             unit.bIsPlayer = true;
             playerSpawnPoints.RemoveAt(position);
         }
     }
     else
     {
         for (int i = 0; i < numberToSpawn; i++)
         {
             int position            = Random.Range(0, enemySpawnPoints.Count - 1);
             BaseUnitController unit = Instantiate(toSpawn, enemySpawnPoints[position].transform.position, Quaternion.identity, enemyFolder.transform);
             enemySpawnPoints[position].GetComponent <SquareTile>().currentUnit = unit;
             unit.bIsPlayer = false;
             enemySpawnPoints.RemoveAt(position);
         }
     }
 }
Пример #2
0
 public void OnBeginDrag(PointerEventData eventData)
 {
     if (Input.GetMouseButton(0))
     {
         BaseUnitController.DeselectAll(new BaseEventData(EventSystem.current));
         SelectionBoxImage.gameObject.SetActive(true);
         _startPosition = eventData.position;
         _selectionRect = new Rect();
     }
 }
Пример #3
0
        public static Rect GetBoundsOfObject(BaseUnitController unitController)
        {
            var screenSpaceCorners = new Vector3[8];
            var theCamera          = GameObject.FindObjectOfType <Camera>();

            var renderers = unitController.GetComponentInChildren <Renderer>();
            var bigBounds = renderers.bounds;

            // For each of the 8 corners of our renderer's world space bounding box,
            // convert those corners into screen space.
            screenSpaceCorners[0] = theCamera.WorldToScreenPoint(new Vector3(bigBounds.center.x + bigBounds.extents.x,
                                                                             bigBounds.center.y + bigBounds.extents.y, bigBounds.center.z + bigBounds.extents.z));
            screenSpaceCorners[1] = theCamera.WorldToScreenPoint(new Vector3(bigBounds.center.x + bigBounds.extents.x,
                                                                             bigBounds.center.y + bigBounds.extents.y, bigBounds.center.z - bigBounds.extents.z));
            screenSpaceCorners[2] = theCamera.WorldToScreenPoint(new Vector3(bigBounds.center.x + bigBounds.extents.x,
                                                                             bigBounds.center.y - bigBounds.extents.y, bigBounds.center.z + bigBounds.extents.z));
            screenSpaceCorners[3] = theCamera.WorldToScreenPoint(new Vector3(bigBounds.center.x + bigBounds.extents.x,
                                                                             bigBounds.center.y - bigBounds.extents.y, bigBounds.center.z - bigBounds.extents.z));
            screenSpaceCorners[4] = theCamera.WorldToScreenPoint(new Vector3(bigBounds.center.x - bigBounds.extents.x,
                                                                             bigBounds.center.y + bigBounds.extents.y, bigBounds.center.z + bigBounds.extents.z));
            screenSpaceCorners[5] = theCamera.WorldToScreenPoint(new Vector3(bigBounds.center.x - bigBounds.extents.x,
                                                                             bigBounds.center.y + bigBounds.extents.y, bigBounds.center.z - bigBounds.extents.z));
            screenSpaceCorners[6] = theCamera.WorldToScreenPoint(new Vector3(bigBounds.center.x - bigBounds.extents.x,
                                                                             bigBounds.center.y - bigBounds.extents.y, bigBounds.center.z + bigBounds.extents.z));
            screenSpaceCorners[7] = theCamera.WorldToScreenPoint(new Vector3(bigBounds.center.x - bigBounds.extents.x,
                                                                             bigBounds.center.y - bigBounds.extents.y, bigBounds.center.z - bigBounds.extents.z));

            // Now find the min/max X & Y of these screen space corners.
            var min_x = screenSpaceCorners[0].x;
            var min_y = screenSpaceCorners[0].y;
            var max_x = screenSpaceCorners[0].x;
            var max_y = screenSpaceCorners[0].y;

            for (var i = 1; i < 8; i++)
            {
                if (screenSpaceCorners[i].x < min_x)
                {
                    min_x = screenSpaceCorners[i].x;
                }
                if (screenSpaceCorners[i].y < min_y)
                {
                    min_y = screenSpaceCorners[i].y;
                }
                if (screenSpaceCorners[i].x > max_x)
                {
                    max_x = screenSpaceCorners[i].x;
                }
                if (screenSpaceCorners[i].y > max_y)
                {
                    max_y = screenSpaceCorners[i].y;
                }
            }
            return(Rect.MinMaxRect(min_x, min_y, max_x, max_y));
        }
Пример #4
0
    public void DestroyUnit(BaseUnitController unitController )
    {
        if ( unitsControllersSelectedBlue.Contains( unitController ) ) {
            unitsControllersSelectedBlue.Remove( unitController );
        }

        if ( unitsControllersBlue.Contains( unitController ) ) {
            unitsControllersBlue.Remove( unitController );
        }

        if ( unitsControllersRed.Contains( unitController ) ) {
            unitsControllersRed.Remove( unitController );
        }
    }
Пример #5
0
 public BuildUnit(
     UnitCharacteristics characteristics, 
     EntityController.Faction faction, 
     EffectsController effectsController, 
     BaseUnitController.UpdateCharacteristics updateCharacteristics, 
     BaseUnitController.Death updateDeath, 
     BaraksModel.SetUpdeteCharacteristicsDelegate setUpdeteCharacteristicsDelegate,
     Action deleteVisualEffect )
     : base(characteristics, 
         faction, 
         effectsController, 
         updateCharacteristics, 
         updateDeath, 
         setUpdeteCharacteristicsDelegate,
         deleteVisualEffect)
 {
 }
Пример #6
0
 public BaseUnit( 
     UnitCharacteristics characteristics, 
     EntityController.Faction faction, 
     EffectsController effectsController, 
     BaseUnitController.UpdateCharacteristics updateCharacteristics, 
     BaseUnitController.Death updateDeath,
     BaraksModel.SetUpdeteCharacteristicsDelegate setUpdeteCharacteristicsDelegate, Action deleteVisualEffect )
 {
     this.deleteVisualEffect = deleteVisualEffect;
     this.setUpdeteCharacteristicsDelegate = setUpdeteCharacteristicsDelegate;
     setUpdeteCharacteristicsDelegate( UpdateBaseCharacteristics, false );
     updateCharacteristicsDelegate = updateCharacteristics;
     this.updateDeath = updateDeath;
     baseCharacteristics = characteristics;
     currentHp = baseCharacteristics.hp;
     this.faction = faction;
     this.effectsController = effectsController;
     UpdateCharacteristics( baseCharacteristics );
 }
Пример #7
0
 public HeroUnit( string name, 
     UnitCharacteristics characteristics, 
     Spell[] spells, 
     EntityController.Faction faction, 
     EffectsController effectsController, 
     BaseUnitController.UpdateCharacteristics updateCharacteristics, 
     BaseUnitController.Death updateDeath, 
     HeroUnitController.LevelUpEffectDelegate 
     levelUpEffect, BaraksModel.SetUpdeteCharacteristicsDelegate setUpdeteCharacteristicsDelegate, Action deleteVisualEffect )
     : base(characteristics, 
         faction, 
         effectsController, 
         updateCharacteristics, 
         updateDeath, 
         setUpdeteCharacteristicsDelegate, deleteVisualEffect)
 {
     this.spells = spells;
     this.levelUpEffect = levelUpEffect;
 }
Пример #8
0
    public void CreateUnit( UnitViewPresenter unitViewPresenter, BaseUnit.UnitCharacteristics unitCharacteristics, Faction faction, BaraksModel.SetUpdeteCharacteristicsDelegate setUpdeteCharacteristicsDelegate )
    {
        unitViewPresenter.faction = faction;

        unitViewPresenter.GetPlayer( player );

        BaseUnitController unitController;

        if ( unitViewPresenter.unitType == BaseUnit.UnitType.hero ) {
            unitController = new HeroUnitController( SelectUnit, (HeroViewPresentor)unitViewPresenter, unitCharacteristics, GetUnitTarget, faction, DestroyUnit, _HeroResurrect, setUpdeteCharacteristicsDelegate );
            buildController = new BuildController( SelectUnit, buildViewPresenter, unitCharacteristics, GetUnitTarget, faction, DestroyUnit, setUpdeteCharacteristicsDelegate );
        } else {
            unitController = new BaseUnitController( SelectUnit, unitViewPresenter, unitCharacteristics, GetUnitTarget, faction, DestroyUnit, setUpdeteCharacteristicsDelegate );
        }

        if ( faction == Faction.Blue ) {
            unitsControllersBlue.Add( unitController );
        } else {
            unitsControllersRed.Add( unitController );
        }
    }
Пример #9
0
 public BuildView( BuildViewPresenter unitViewPresenter, BaseUnitController.SelectUnit selectUnit, BaseUnit.DamageDelegate damageDelegate )
     : base(unitViewPresenter, selectUnit, damageDelegate)
 {
     unitViewPresenter.AddDamageDelegate( damageDelegate );
 }
Пример #10
0
 public override void Setup(BaseUnitController invoker)
 {
     this.invoker = invoker;
     grid         = Grid.Instance;
 }
Пример #11
0
 public abstract void Setup(BaseUnitController invoker);
Пример #12
0
 public void AddSelectDelegate( BaseUnitController.SelectUnit selectUnit )
 {
     this.selectUnit = selectUnit;
 }
Пример #13
0
 public HeroView( HeroViewPresentor unitViewPresenter, BaseUnitController.SelectUnit selectUnit, BaseUnit.DamageDelegate damageDelegate, HeroUnit.GetXpDelegate GetXpDelegate )
     : base(unitViewPresenter, selectUnit, damageDelegate)
 {
     unitViewPresenter.AddXpDelegate( GetXpDelegate );
 }
Пример #14
0
 public BaseUnitView( UnitViewPresenter unitViewPresenter, BaseUnitController.SelectUnit selectUnit, BaseUnit.DamageDelegate damageDelegate )
 {
     this.unitViewPresenter = unitViewPresenter;
     unitViewPresenter.AddSelectDelegate( selectUnit );
     unitViewPresenter.AddDamageDelegate( damageDelegate );
 }
Пример #15
0
    private bool SelectUnit(BaseUnitController selectedUnit, Faction faction)
    {
        if ( Faction.Blue == faction ) {

            unitsControllersSelectedBlue.Add( selectedUnit );

            if ( unitsControllersSelectedBlue.Count == 1 ) {

                int level = -1;

                if ( selectedUnit.GetUnitViewPresenter().unitType == BaseUnit.UnitType.hero ) {
                    level = ( (HeroUnitController)selectedUnit ).GetLevel();
                }

                player.ShowUnitDescription(
                    selectedUnit.GetUnitViewPresenter().unitType,
                    selectedUnit.GetCharacteristics().armor,
                    (int)selectedUnit.GetCharacteristics().attack,
                    selectedUnit.GetCharacteristics().attackSpeed,
                    selectedUnit.GetCharacteristics().attackRange,
                    selectedUnit.GetCharacteristics().speed,
                    level );
            } else {
                player.HideUnitDescription();
                if ( unitsControllersSelectedBlue.Count == 2 ) {
                    player.ShowUnitsIcon( unitsControllersSelectedBlue[0].GetUnitViewPresenter().unitType );
                }
                player.ShowUnitsIcon( selectedUnit.GetUnitViewPresenter().unitType );
            }

            if ( selectedUnit.GetUnitViewPresenter().unitType == BaseUnit.UnitType.hero ) {
                Debug.Log( "((HeroUnitController)selectedUnit).AbilityDelegate(): " + ( (HeroUnitController)selectedUnit ).AbilityDelegate().spells.Length );
                player.ShowActionButtons( selectedUnit.GetUnitViewPresenter().unitType, ((HeroUnitController)selectedUnit).AbilityDelegate() );
            }

            return true;
        } else {
            return false;
        }
    }