Пример #1
0
        public Actor harvester = null; // the harvester to protect

        #endregion Fields

        #region Constructors

        public HarvesterDefenseSquad(IranAI AI, SquadManager manager, SquadType squadtype, SquadRole squadrole)
            : base(AI, manager, squadtype, squadrole)
        {
            this.AI = AI;
            squadtype = SquadType.Tank;
            SetMaxSquadSize(2);
        }
Пример #2
0
 public ShipSquad(IranAI AI, SquadManager manager, SquadType squadtype, SquadRole squadrole)
     : base(AI, manager, squadtype, squadrole)
 {
     this.AI = AI;
     squadtype = SquadType.Ship;
     SetMaxSquadSize(2);
     //            isready = true; // Important for creating new squads, if this doesn't get set somewhere the squad size will be unlimited
 }
Пример #3
0
        public static void SetSquadMemberRole(Squad squad, string memberId, SquadRole role)
        {
            SquadMember squadMemberById = SquadUtils.GetSquadMemberById(squad, memberId);

            if (squadMemberById != null)
            {
                squadMemberById.Role = role;
            }
        }
Пример #4
0
        public static bool CanStartMatchmakingPrep(SquadController squadController, BuildingLookupController blc)
        {
            SquadRole          role            = squadController.StateManager.Role;
            bool               flag            = role == SquadRole.Owner || role == SquadRole.Officer;
            int                highestLevelHQ  = blc.GetHighestLevelHQ();
            bool               flag2           = highestLevelHQ >= GameConstants.WAR_PARTICIPANT_MIN_LEVEL;
            SquadWarStatusType currentStatus   = squadController.WarManager.GetCurrentStatus();
            bool               flag3           = currentStatus == SquadWarStatusType.PhaseCooldown || currentStatus == SquadWarStatusType.PhaseOpen;
            SquadWarData       currentSquadWar = squadController.WarManager.CurrentSquadWar;
            bool               flag4           = currentSquadWar == null || currentSquadWar.RewardsProcessed;

            return(flag2 & flag & flag3 & flag4);
        }
 private void Refresh()
 {
     if (!this.finalConfirm)
     {
         SquadRole role    = Service.Get <SquadController>().StateManager.Role;
         bool      visible = role == SquadRole.Owner || role == SquadRole.Officer;
         this.buttonCancel.Visible  = visible;
         this.buttonBack.Visible    = false;
         this.buttonConfirm.Visible = false;
         this.labelSquadQueue.Text  = this.lang.Get("WAR_MATCHMAKE_TEXT", new object[0]);
         return;
     }
     this.buttonCancel.Visible  = false;
     this.buttonBack.Visible    = true;
     this.buttonConfirm.Visible = true;
     this.labelSquadQueue.Text  = this.lang.Get("WAR_MATCHMAKE_CANCEL_CONFIRM_TEXT", new object[0]);
 }
Пример #6
0
        public static string GetSquadRoleDisplayName(SquadRole role)
        {
            string result = null;

            switch (role)
            {
            case SquadRole.Member:
                result = Service.Get <Lang>().Get("SQUAD_MEMBER", new object[0]);
                break;

            case SquadRole.Officer:
                result = Service.Get <Lang>().Get("SQUAD_OFFICER", new object[0]);
                break;

            case SquadRole.Owner:
                result = Service.Get <Lang>().Get("SQUAD_OWNER", new object[0]);
                break;
            }
            return(result);
        }
        private bool IsSatisfied()
        {
            int             num             = Convert.ToInt32(this.prepareArgs[0], CultureInfo.InvariantCulture);
            bool            result          = false;
            SquadController squadController = Service.Get <SquadController>();

            if (squadController.StateManager.GetCurrentSquad() == null)
            {
                if (num == 0)
                {
                    result = true;
                }
            }
            else
            {
                SquadRole role = squadController.StateManager.Role;
                switch (num)
                {
                case 1:
                    result = true;
                    break;

                case 2:
                    if (role == SquadRole.Owner || role == SquadRole.Officer)
                    {
                        result = true;
                    }
                    break;

                case 3:
                    if (role == SquadRole.Owner)
                    {
                        result = true;
                    }
                    break;
                }
            }
            return(result);
        }
Пример #8
0
        private bool IsSatisfied()
        {
            int             num             = Convert.ToInt32(this.prepareArgs[0]);
            bool            result          = false;
            SquadController squadController = Service.SquadController;

            if (squadController.StateManager.GetCurrentSquad() == null)
            {
                if (num == 0)
                {
                    result = true;
                }
            }
            else
            {
                SquadRole role = squadController.StateManager.Role;
                if (num != 3)
                {
                    if (num != 2)
                    {
                        if (num == 1)
                        {
                            result = true;
                        }
                    }
                    else if (role == SquadRole.Owner || role == SquadRole.Officer)
                    {
                        result = true;
                    }
                }
                else if (role == SquadRole.Owner)
                {
                    result = true;
                }
            }
            return(result);
        }
Пример #9
0
        public static string GetSquadRoleDisplayName(SquadRole role)
        {
            string result = null;

            if (role != SquadRole.Member)
            {
                if (role != SquadRole.Officer)
                {
                    if (role == SquadRole.Owner)
                    {
                        result = Service.Lang.Get("SQUAD_OWNER", new object[0]);
                    }
                }
                else
                {
                    result = Service.Lang.Get("SQUAD_OFFICER", new object[0]);
                }
            }
            else
            {
                result = Service.Lang.Get("SQUAD_MEMBER", new object[0]);
            }
            return(result);
        }
Пример #10
0
        public override void RefreshView()
        {
            SquadController  squadController  = Service.SquadController;
            SquadScreenState squadScreenState = squadController.StateManager.SquadScreenState;
            SquadRole        role             = squadController.StateManager.Role;
            bool             flag             = role == SquadRole.Owner || role == SquadRole.Officer;
            bool             flag2            = flag && Service.BuildingLookupController.GetHighestLevelHQ() > GameConstants.WAR_PARTICIPANT_MIN_LEVEL;
            string           squadName        = squadController.StateManager.GetCurrentSquad().SquadName;

            this.labelChatTitle.Text = this.lang.Get("SQUAD_CHAT_TITLE", new object[]
            {
                squadName
            });
            IState currentState = Service.GameStateMachine.CurrentState;

            if (squadScreenState != SquadScreenState.Advancement && currentState is HomeState)
            {
                switch (squadController.WarManager.GetCurrentStatus())
                {
                case SquadWarStatusType.PhaseOpen:
                    if (!flag2)
                    {
                        this.btnStartWar.Visible = false;
                        return;
                    }
                    if (squadController.WarManager.IsCurrentSquadMatchmaking())
                    {
                        this.btnStartWar.Visible = true;
                        this.btnStartWar.SetDefaultColor(1f, 0f, 0f, 1f);
                        this.labelBtnStartWar.Text = this.lang.Get("WAR_BUTTON_CANCEL_MATCHMAKING", new object[0]);
                    }
                    else
                    {
                        this.btnStartWar.SetDefaultColor(1f, 1f, 1f, 1f);
                        this.labelBtnStartWar.Text = this.lang.Get("WAR_BUTTON_START_WAR", new object[0]);
                        if (squadController.WarManager.MatchMakingPrepMode)
                        {
                            this.btnStartWar.Visible = false;
                        }
                        else
                        {
                            this.btnStartWar.Visible = squadController.WarManager.CanStartSquadWar();
                        }
                    }
                    break;

                case SquadWarStatusType.PhasePrep:
                case SquadWarStatusType.PhasePrepGrace:
                case SquadWarStatusType.PhaseAction:
                case SquadWarStatusType.PhaseActionGrace:
                case SquadWarStatusType.PhaseCooldown:
                    this.btnStartWar.SetDefaultColor(1f, 1f, 1f, 1f);
                    this.labelBtnStartWar.Text = this.lang.Get("SQUAD_WAR_VIEW_WAR", new object[0]);
                    this.btnStartWar.Visible   = true;
                    break;
                }
            }
            else
            {
                this.btnStartWar.Visible = false;
            }
            this.labelFilterBy.Visible = !this.btnStartWar.Visible;
        }
Пример #11
0
        protected override void OnScreenLoaded()
        {
            SquadController squadController = Service.SquadController;
            bool            flag            = squadController.StateManager.GetCurrentSquad() != null;
            SquadRole       role            = squadController.StateManager.Role;
            bool            flag2           = role == SquadRole.Owner || role == SquadRole.Officer;
            int             highestLevelHQ  = Service.BuildingLookupController.GetHighestLevelHQ();

            this.InitButtons();
            UXLabel element = base.GetElement <UXLabel>("LabelTitle");

            element.Text = this.lang.Get("WAR_START_TITLE", new object[0]);
            string id;
            string id2;

            if (!flag)
            {
                id  = "WAR_START_DESCRIPTION_NOSQUAD";
                id2 = "WAR_START_BUTTON_TEXT_NOSQUAD";
            }
            else if (flag2)
            {
                if (highestLevelHQ >= GameConstants.WAR_PARTICIPANT_MIN_LEVEL)
                {
                    id  = "WAR_START_DESCRIPTION_OFFICER";
                    id2 = "WAR_START_BUTTON_TEXT";
                }
                else
                {
                    id  = "WAR_START_DESCRIPTION_OFFICER_INELIGIBLE";
                    id2 = "WAR_START_BUTTON_TEXT_NONOFFICER";
                }
            }
            else
            {
                this.LogMemberAttemptingWarStart();
                id  = "WAR_START_DESCRIPTION_NONOFFICER";
                id2 = "WAR_START_BUTTON_TEXT_NONOFFICER";
            }
            UXLabel element2 = base.GetElement <UXLabel>("LabelSquadWar");

            element2.Text = this.lang.Get(id, new object[]
            {
                highestLevelHQ
            });
            TextureVO optional = Service.StaticDataController.GetOptional <TextureVO>("gui_textures_squadwar_start");

            if (optional != null)
            {
                UXTexture element3 = base.GetElement <UXTexture>("SpriteNextImage");
                element3.LoadTexture(optional.AssetName);
            }
            UXLabel element4 = base.GetElement <UXLabel>("LabelBtnNext");

            element4.Text = this.lang.Get(id2, new object[0]);
            UXButton element5 = base.GetElement <UXButton>("BtnNext");

            element5.OnClicked = new UXButtonClickedDelegate(this.OnNextButtonClicked);
            UXButton element6 = base.GetElement <UXButton>("BtnInfo");

            element6.OnClicked = new UXButtonClickedDelegate(squadController.WarManager.ShowInfoScreen);
        }
Пример #12
0
        public void OnNewSquadMsgsReceived(List <SquadMsg> msgs)
        {
            bool   flag         = false;
            Squad  currentSquad = this.StateManager.GetCurrentSquad();
            bool   flag2        = false;
            string playerId     = Service.CurrentPlayer.PlayerId;
            int    i            = 0;
            int    count        = msgs.Count;

            while (i < count)
            {
                SquadMsg squadMsg = msgs[i];
                uint     timeForNewMsgFiltering = this.GetTimeForNewMsgFiltering(squadMsg);
                if (squadMsg.TimeSent >= timeForNewMsgFiltering)
                {
                    bool flag3 = squadMsg.OwnerData == null || squadMsg.OwnerData.PlayerId == null;
                    bool flag4 = squadMsg.OwnerData != null && squadMsg.OwnerData.PlayerId == playerId;
                    switch (squadMsg.Type)
                    {
                    case SquadMsgType.Join:
                    case SquadMsgType.InviteAccepted:
                    case SquadMsgType.Leave:
                        flag = true;
                        break;

                    case SquadMsgType.JoinRequestAccepted:
                    {
                        string text = (squadMsg.SquadData == null) ? null : squadMsg.SquadData.Id;
                        if (flag4 && !string.IsNullOrEmpty(text))
                        {
                            this.StateManager.OnSquadJoinApplicationAccepted(text);
                            Squad currentSquad2 = this.StateManager.GetCurrentSquad();
                            this.ClearPrefsForNewSquad(currentSquad2.Level);
                        }
                        flag = true;
                        break;
                    }

                    case SquadMsgType.JoinRequestRejected:
                    {
                        string text2 = (squadMsg.SquadData == null) ? null : squadMsg.SquadData.Id;
                        if (flag3 && !string.IsNullOrEmpty(text2))
                        {
                            this.StateManager.OnSquadJoinApplicationRejected(text2);
                        }
                        break;
                    }

                    case SquadMsgType.Ejected:
                        if (flag3)
                        {
                            this.LeaveSquad(Service.Lang.Get("CURRENT_PLAYER_EJECTED", new object[0]));
                        }
                        else
                        {
                            SquadUtils.RemoveSquadMember(currentSquad, squadMsg.OwnerData.PlayerId);
                        }
                        flag = true;
                        break;

                    case SquadMsgType.Promotion:
                    case SquadMsgType.Demotion:
                    {
                        SquadRole role = (squadMsg.MemberData == null) ? SquadRole.Member : squadMsg.MemberData.MemberRole;
                        if (flag4)
                        {
                            this.StateManager.Role = role;
                        }
                        SquadUtils.SetSquadMemberRole(currentSquad, squadMsg.OwnerData.PlayerId, role);
                        break;
                    }

                    case SquadMsgType.TroopDonation:
                        if (squadMsg.DonationData != null && squadMsg.DonationData.RecipientId == playerId)
                        {
                            if (!string.IsNullOrEmpty(squadMsg.DonationData.RequestId))
                            {
                                SquadMsg msgById = this.MsgManager.GetMsgById(squadMsg.DonationData.RequestId);
                                if (msgById != null && msgById.RequestData != null && msgById.RequestData.IsWarRequest)
                                {
                                    flag = true;
                                    break;
                                }
                            }
                            string text3 = (squadMsg.OwnerData == null) ? null : squadMsg.OwnerData.PlayerId;
                            Dictionary <string, int> donations = squadMsg.DonationData.Donations;
                            if (text3 != null && donations != null)
                            {
                                SquadMember squadMemberById = SquadUtils.GetSquadMemberById(currentSquad, text3);
                                string      donorName       = (squadMemberById == null) ? null : squadMemberById.MemberName;
                                this.StateManager.OnSquadTroopsReceived(donations, text3, donorName);
                            }
                        }
                        break;

                    case SquadMsgType.WarMatchMakingBegin:
                        flag = true;
                        this.WarManager.OnWarMatchMakingBegin();
                        break;

                    case SquadMsgType.WarMatchMakingCancel:
                        if (!flag4)
                        {
                            this.WarManager.CancelMatchMaking();
                        }
                        flag = true;
                        break;

                    case SquadMsgType.WarStarted:
                    case SquadMsgType.WarBuffBaseAttackStart:
                    case SquadMsgType.WarBuffBaseAttackComplete:
                    case SquadMsgType.WarPlayerAttackStart:
                    case SquadMsgType.WarPlayerAttackComplete:
                    case SquadMsgType.WarEnded:
                        this.WarManager.HandleWarEventMsg(squadMsg);
                        break;

                    case SquadMsgType.WarPrepared:
                        flag = true;
                        break;

                    case SquadMsgType.SquadLevelUp:
                        flag2 = true;
                        this.OnSquadLeveledUp(squadMsg);
                        break;

                    case SquadMsgType.PerkUnlocked:
                        flag2 = true;
                        this.OnPerkUnlocked(squadMsg);
                        break;

                    case SquadMsgType.PerkUpgraded:
                        flag2 = true;
                        this.OnPerkUpgraded(squadMsg);
                        break;

                    case SquadMsgType.PerkInvest:
                        flag2 = true;
                        this.OnPerkInvestment(squadMsg);
                        break;

                    case SquadMsgType.Invite:
                        if (squadMsg.FriendInviteData != null && flag3)
                        {
                            SquadInvite invite = SquadMsgUtils.GenerateSquadInvite(squadMsg);
                            this.StateManager.AddSquadInvite(invite);
                        }
                        break;

                    case SquadMsgType.InviteRejected:
                    {
                        string text4 = (squadMsg.FriendInviteData == null) ? null : squadMsg.FriendInviteData.PlayerId;
                        if (text4 != null && flag3)
                        {
                            this.StateManager.PlayersInvitedToSquad.Remove(text4);
                        }
                        break;
                    }
                    }
                    SquadMsgType[] array = null;
                    switch (squadMsg.Type)
                    {
                    case SquadMsgType.JoinRequestAccepted:
                    case SquadMsgType.JoinRequestRejected:
                        array = new SquadMsgType[]
                        {
                            SquadMsgType.JoinRequest
                        };
                        break;

                    case SquadMsgType.Leave:
                    case SquadMsgType.Ejected:
                        array = new SquadMsgType[]
                        {
                            SquadMsgType.JoinRequest,
                            SquadMsgType.ShareBattle,
                            SquadMsgType.TroopRequest
                        };
                        break;
                    }
                    if (array != null && squadMsg.OwnerData != null)
                    {
                        this.MsgManager.RemoveMsgsByType(squadMsg.OwnerData.PlayerId, array);
                    }
                }
                i++;
            }
            if (flag2)
            {
                Service.PerkViewController.UpdateLastViewedPerkTime();
            }
            if (flag)
            {
                this.UpdateCurrentSquad();
            }
        }
Пример #13
0
        public virtual void Tick()
        {
            if (members.Count() == 0) return;

            // Check if enemy unit is nearby
            if (AI.ticks % 25 == 0)
            {
                Actor leader = members.First();
                var EnemyUnits = world.FindUnitsInCircle(leader.CenterLocation, 120)
                    .Where(a => AI.p.Stances[a.Owner] == Stance.Enemy);

                if (EnemyUnits != null && EnemyUnits.Count() != 0)
                {
                    EnemyNearby = true;
                    OnEnemyUnitsNearby(EnemyUnits);
                }
                else
                {
                    EnemyNearby = false;
                }
            }

            if (AI.ticks % 75 == 0 && !EnemyNearby)
            {
                if (IsReady() && squadrole == SquadRole.AttackBase) // we're ready to attack
                {
                    // if we have a target update our move-to location
                    if (Target != null && !Target.IsDead() && !Target.Destroyed)
                    {
                        CPos Location = Target.Location;
                        Move(Location, false, 8);
                    }
                    else // if we don't have a target find one
                    {
                        Target = AI.ChooseEnemyTarget("nuke");
                        CPos Location = Target.Location;
                        Move(Location, false, 8);
                    }
                }
                if (!IsReady()) // While we're not ready check if squad is full, if it is set us to ready
                {
                    isready = IsFull();
                }
                if ((squadrole == SquadRole.DefendBase) && (AI.ticks - manager.lastbasedamagetick > BaseDefenseTime))
                {
                    AI.Debug("Squad: No attack for {0} secs, switching to attack mode.", BaseDefenseTime / 25);

                    squadrole = SquadRole.AttackBase;
                }
                if (squadrole == SquadRole.DefendBase)
                {
            //                    AI.Debug("Squad in DefendBase role");
                }
            }
        }
Пример #14
0
 public void SetSquadRole(SquadRole squadrole)
 {
     this.squadrole = squadrole;
 }
Пример #15
0
 public virtual void OnBaseDamage(Actor building, AttackInfo e)
 {
     //           if (manager.squads.Where(s => s.GetSquadRole() == SquadRole.DefendBase).Count() < 2)
     {
         AI.Debug("switching to DefendBase role, base under attack");
         squadrole = SquadRole.DefendBase;
     //                Move(building.Location, false, 8);
         Attack(new[]{e.Attacker}, false);
     }
     if (squadrole == SquadRole.DefendBase)
     {
      //               Move(building.Location, false, 8);
         Attack(new[] { e.Attacker }, false);
     }
 }
Пример #16
0
 public Squad(IranAI AI, SquadManager manager, SquadType squadtype, SquadRole squadrole)
 {
     this.AI = AI;
     this.manager = manager;
     this.squadtype = squadtype;
     this.world = AI.world;
     this.squadrole = squadrole;
     members = new List<Actor>();
 }