Example #1
0
        /// <summary>
        /// Click handler for all the panel actions
        /// </summary>
        /// <param name="actionOnPanel"></param>
        private void OnActionClick(ActionOnPanel actionOnPanel)
        {
            if (Engine.SelectedMapObject != null)
            {
                switch (actionOnPanel.Type)
                {
                case Actions.TrainWorker:
                    if (Engine.SelectedMapObject.GetType().IsSubclassOf(typeof(TrainerBuilding)))
                    {
                        TrainerBuilding mh = (TrainerBuilding)Engine.SelectedMapObject;
                        mh.StartMakingUnit(new Worker(mh.PlayerId));
                        BuildMode      = false;
                        SelectedAction = Actions.None;
                    }
                    break;

                case Actions.TrainSoldier:
                    if (Engine.SelectedMapObject.GetType().IsSubclassOf(typeof(TrainerBuilding)))
                    {
                        TrainerBuilding mh = (TrainerBuilding)Engine.SelectedMapObject;
                        mh.StartMakingUnit(new Soldier(mh.PlayerId));
                        BuildMode      = false;
                        SelectedAction = Actions.None;
                    }
                    break;

                case Actions.TrainHero:
                    if (Engine.SelectedMapObject.GetType().IsSubclassOf(typeof(TrainerBuilding)))
                    {
                        TrainerBuilding mh = (TrainerBuilding)Engine.SelectedMapObject;
                        mh.StartMakingUnit(new Hero(mh.PlayerId));
                        BuildMode      = false;
                        SelectedAction = Actions.None;
                    }
                    break;

                case Actions.TrainDoctor:
                    if (Engine.SelectedMapObject.GetType().IsSubclassOf(typeof(TrainerBuilding)))
                    {
                        TrainerBuilding mh = (TrainerBuilding)Engine.SelectedMapObject;
                        mh.StartMakingUnit(new Doctor(mh.PlayerId));
                        BuildMode      = false;
                        SelectedAction = Actions.None;
                    }
                    break;

                case Actions.TrainGunMan:
                    if (Engine.SelectedMapObject.GetType().IsSubclassOf(typeof(TrainerBuilding)))
                    {
                        TrainerBuilding mh = (TrainerBuilding)Engine.SelectedMapObject;
                        mh.StartMakingUnit(new GunMan(mh.PlayerId));
                        BuildMode      = false;
                        SelectedAction = Actions.None;
                    }
                    break;

                case Actions.Cancel:
                    if (Engine.SelectedMapObject.GetType().IsSubclassOf(typeof(TrainerBuilding)))
                    {
                        TrainerBuilding mh = (TrainerBuilding)Engine.SelectedMapObject;
                        mh.CancelTraining();
                        BuildMode      = false;
                        SelectedAction = Actions.None;
                    }
                    break;

                case Actions.BuildWall:
                    if (Engine.SelectedMapObject.GetType() == typeof(Worker) && Engine.ThePlayer.Resources.HasEnoughToReduceBy(new Wall(0).Costs))
                    {
                        BuildMode      = true;
                        SelectedAction = Actions.BuildWall;
                    }

                    break;

                case Actions.BuildBarracs:
                    if (Engine.SelectedMapObject.GetType() == typeof(Worker) && Engine.ThePlayer.Resources.HasEnoughToReduceBy(new Barracks(0).Costs))
                    {
                        BuildMode      = true;
                        SelectedAction = Actions.BuildBarracs;
                    }

                    break;

                case Actions.BuildMainHall:
                    if (Engine.SelectedMapObject.GetType() == typeof(Worker) && Engine.ThePlayer.Resources.HasEnoughToReduceBy(new MainHall(0).Costs))
                    {
                        BuildMode      = true;
                        SelectedAction = Actions.BuildMainHall;
                    }

                    break;

                case Actions.BuildMedicalTent:
                    if (Engine.SelectedMapObject.GetType() == typeof(Worker) && Engine.ThePlayer.Resources.HasEnoughToReduceBy(new MedicalTent(0).Costs))
                    {
                        BuildMode      = true;
                        SelectedAction = Actions.BuildMedicalTent;
                    }

                    break;

                case Actions.BuildTower:
                    if (Engine.SelectedMapObject.GetType() == typeof(Worker) && Engine.ThePlayer.Resources.HasEnoughToReduceBy(new Tower(0).Costs))
                    {
                        BuildMode      = true;
                        SelectedAction = Actions.BuildTower;
                    }

                    break;

                case Actions.BuildFarm:
                    if (Engine.SelectedMapObject.GetType() == typeof(Worker) && Engine.ThePlayer.Resources.HasEnoughToReduceBy(new FarmBuilding(0).Costs))
                    {
                        BuildMode      = true;
                        SelectedAction = Actions.BuildFarm;
                    }

                    break;

                case Actions.Stop:
                    if (Engine.SelectedMapObject.GetType() == typeof(Worker))
                    {
                        Worker worker = (Worker)Engine.SelectedMapObject;
                        worker.NextOrder  = Order.None;
                        worker.MoveTarget = null;
                        BuildMode         = false;
                    }

                    break;

                case Actions.AutoAttack:
                case Actions.AutoHeal:
                    if (Engine.SelectedMapObject.GetType().IsSubclassOf(typeof(Unit)))
                    {
                        Unit unit = (Unit)Engine.SelectedMapObject;
                        if (unit.AlertMode)
                        {
                            unit.AlertMode = false;
                        }
                        else
                        {
                            unit.AlertMode = true;
                        }
                        BuildMode = false;
                    }

                    break;
                }
            }
        }