public void Notify(SquadAction action, params object[] args) { switch (action) { case (SquadAction.EnemySighted): if (this.SquadState == SquadState.ForcedMove) { return; } AttackTarget((Target)args [0]); break; case (SquadAction.DestinationReached): CheckSquadIdle(); break; case (SquadAction.UnitDestroyed): AssignNewTarget((Unit)args [0]); break; case (SquadAction.EngagedInMelee): EngageInMelee(); break; case (SquadAction.UnitDied): UpdateSquadMembers((Unit)args [0]); break; case (SquadAction.TargetDestroyed): Disengage(); break; } }
private static SquadMsg CreateSquadMessage(string squadId, SquadAction action, SquadController.ActionCallback callback, object cookie) { SqmSquadData sqmSquadData = new SqmSquadData(); sqmSquadData.Id = squadId; SquadMsg squadMsg = SquadMsgUtils.CreateActionMessage(action, callback, cookie); squadMsg.SquadData = sqmSquadData; return(squadMsg); }
public void OnPlayerActionFailure(SquadMsg actionMsg, uint status) { SquadAction type = actionMsg.ActionData.Type; if (type == SquadAction.RequestTroops || type == SquadAction.RequestWarTroops) { SqmRequestData requestData = actionMsg.RequestData; if (requestData.PayToSkip && requestData.ResendCrystalCost > 0) { Service.CurrentPlayer.Inventory.ModifyCrystals(requestData.ResendCrystalCost); } } string messageForServerActionFailure = SquadUtils.GetMessageForServerActionFailure(type, status); AlertScreen.ShowModal(false, null, Service.Lang.Get(messageForServerActionFailure, new object[0]), null, null); }
private static SquadMsg CreateActionMessage(SquadAction action, SquadController.ActionCallback callback, object cookie) { SqmActionData sqmActionData = new SqmActionData(); sqmActionData.Type = action; sqmActionData.Callback = callback; sqmActionData.Cookie = cookie; SqmOwnerData sqmOwnerData = new SqmOwnerData(); sqmOwnerData.PlayerId = Service.CurrentPlayer.PlayerId; sqmOwnerData.PlayerName = Service.CurrentPlayer.PlayerName; return(new SquadMsg { OwnerData = sqmOwnerData, ActionData = sqmActionData }); }
private void OnActionCommandSuccess(AbstractResponse response, object cookie) { SquadMsg squadMsg = (SquadMsg)cookie; SqmActionData actionData = squadMsg.ActionData; SquadAction type = actionData.Type; SquadMsg squadMsg2; switch (type) { case SquadAction.Create: case SquadAction.Join: squadMsg2 = SquadMsgUtils.GenerateMessageFromSquadResponse((SquadResponse)response, Service.LeaderboardController); goto IL_B5; case SquadAction.Leave: squadMsg2 = squadMsg; this.controller.WarManager.ClearSquadWarData(); goto IL_B5; case SquadAction.Edit: case SquadAction.ApplyToJoin: IL_35: switch (type) { case SquadAction.DonateTroops: case SquadAction.DonateWarTroops: squadMsg2 = SquadMsgUtils.GenerateMessageFromTroopDonateResponse((TroopDonateResponse)response); Service.TroopDonationTrackController.UpdateTroopDonationProgress((TroopDonateResponse)response); goto IL_B5; } squadMsg2 = squadMsg; goto IL_B5; case SquadAction.AcceptApplicationToJoin: squadMsg2 = SquadMsgUtils.GenerateMessageFromSquadMemberResponse((SquadMemberResponse)response); goto IL_B5; } goto IL_35; IL_B5: squadMsg2.BISource = squadMsg.BISource; this.controller.OnPlayerActionSuccess(actionData.Type, squadMsg2); if (actionData.Callback != null) { actionData.Callback(true, actionData.Cookie); } }
/// <summary> /// Получает приказ на атаку отряда /// </summary> /// <param name="obj"></param> /// <returns></returns> public static string SendAttackOrder(SquadAction obj) { var attacker = AccountManager.GetAccountByToken(obj.token); var victimBase = BaseManager.GetBaseByID(obj.to); if (attacker.UserID == victimBase.OwnerID) { const string result = "cannotuseatyourself"; return(result); } if (!victimBase.IsActive) { const string result = "baseisinactive"; return(result); } return(ProceedActions.Battle(attacker, victimBase)); }
public void Notify(SquadAction action, params object[] args) { switch (action) { case(SquadAction.kEnemySighted): AttackTarget((Unit)args[0], (Target)args[1]); break; case(SquadAction.kDestinationReached): break; case(SquadAction.kTargetDestroyed): UpdateTarget((Unit)args[0]); break; case(SquadAction.kWeaponChanged): ChangeSquadWeapons((Unit)args[0], (int)args[1]); break; case (SquadAction.kUnitDied): UpdateSquadMembers((Unit)args[0]); break; } }
/// <summary> /// Получает приказ на возвращение отряда /// </summary> /// <param name="obj"></param> /// <returns></returns> public static string SendReturnOrder(SquadAction obj) { const string result = "success"; return(result); }
private static SquadMsg CreateSquadMessage(string name, string description, string symbolName, int scoreReq, bool openEnrollment, SquadAction action, SquadController.ActionCallback callback, object cookie) { SqmSquadData sqmSquadData = new SqmSquadData(); sqmSquadData.Name = name; sqmSquadData.Desc = description; sqmSquadData.Icon = symbolName; sqmSquadData.MinTrophies = scoreReq; sqmSquadData.Open = openEnrollment; SquadMsg squadMsg = SquadMsgUtils.CreateActionMessage(action, callback, cookie); squadMsg.SquadData = sqmSquadData; return(squadMsg); }
public static string GetMessageForServerActionFailure(SquadAction actionType, uint status) { string text = null; switch (status) { case 2300u: text = "ALREADY_IN_A_GUILD"; break; case 2301u: break; case 2302u: text = "GUILD_IS_FULL"; break; case 2303u: text = "GUILD_IS_NOT_OPEN_ENROLLMENT"; break; case 2304u: text = "GUILD_SCORE_REQUIREMENT_NOT_MET"; break; case 2305u: text = "IN_WRONG_FACTION"; break; case 2306u: text = "NOT_IN_GUILD"; break; default: if (status == 2321u) { text = "PLAYER_IS_IN_SQUAD_WAR"; } break; } switch (actionType) { case SquadAction.Create: if (text != null) { return(text); } if (status == 701u) { text = "INVALID_SQUAD_NAME"; return(text); } if (status == 2301u) { text = "GUILD_NAME_ALREADY_TAKEN"; return(text); } text = "GENERIC_SQUAD_CREATE_ISSUE"; return(text); case SquadAction.Join: case SquadAction.ApplyToJoin: case SquadAction.AcceptApplicationToJoin: if (text == null) { text = "GENERIC_SQUAD_JOIN_ISSUE"; return(text); } return(text); case SquadAction.Leave: if (text == null) { text = "GENERIC_SQUAD_LEAVE_ISSUE"; return(text); } return(text); case SquadAction.Edit: if (text != null) { return(text); } if (status == 701u) { text = "INVALID_SQUAD_DESC"; return(text); } text = "GENERIC_SQUAD_EDIT_ISSUE"; return(text); case SquadAction.SendInviteToJoin: if (status <= 2302u) { if (status == 2300u) { text = "SQUAD_INVITE_ALREADY_IN_A_GUILD"; return(text); } if (status == 2302u) { text = "SQUAD_INVITE_GUILD_IS_FULL"; return(text); } } else { if (status == 2305u) { text = "SQUAD_INVITE_WRONG_FACTION"; return(text); } if (status == 2309u) { text = "SQUAD_INVITE_NOT_ENOUGH_GUILD_RANK"; return(text); } } text = "SQUAD_INVITE_FAILED"; return(text); case SquadAction.RejectInviteToJoin: text = "SQUAD_INVITE_REJECT_FAILED"; return(text); case SquadAction.DonateTroops: case SquadAction.DonateWarTroops: switch (status) { case 2315u: text = "NOT_IN_SAME_GUILD"; return(text); case 2316u: text = "CANNOT_DEDUCT_NEGATIVE_AMOUNTS"; return(text); case 2318u: text = "CAN_ONLY_DONATE_TROOPS"; return(text); case 2319u: text = "NOT_ENOUGH_GUILD_TROOP_CAPACITY"; return(text); } text = "GENERIC_DONATE_ISSUE"; return(text); } text = "GENERIC_SQUAD_ISSUE"; return(text); }
public void OnPlayerActionSuccess(SquadAction actionType, SquadMsg msg) { Squad currentSquad = this.StateManager.GetCurrentSquad(); switch (actionType) { case SquadAction.Create: GameUtils.SpendCurrency(GameConstants.SQUAD_CREATE_COST, 0, 0, true); this.StateManager.SetCurrentSquad(msg.RespondedSquad); this.ClearPrefsForNewSquad(0); break; case SquadAction.Join: this.StateManager.SetCurrentSquad(msg.RespondedSquad); this.StateManager.OnSquadJoined(msg.BISource); this.SetLastViewedSquadLevelUp(msg.RespondedSquad.Level); break; case SquadAction.Leave: { string message = Service.Lang.Get("LEAVE_A_SQUAD", new object[] { currentSquad.SquadName }); this.LeaveSquad(message); break; } case SquadAction.Edit: { SqmSquadData squadData = msg.SquadData; this.StateManager.EditSquad(squadData.Open, squadData.Icon, squadData.Desc, squadData.MinTrophies); break; } case SquadAction.ApplyToJoin: if (!this.StateManager.SquadJoinRequestsPending.Contains(msg.SquadData.Id)) { this.StateManager.SquadJoinRequestsPending.Add(msg.SquadData.Id); } break; case SquadAction.AcceptApplicationToJoin: SquadUtils.AddSquadMember(currentSquad, msg.SquadMemberResponse); this.UpdateCurrentSquad(); this.StateManager.OnSquadJoinApplicationAcceptedByCurrentPlayer(msg.BISource); break; case SquadAction.SendInviteToJoin: this.StateManager.PlayersInvitedToSquad.Add(msg.FriendInviteData.PlayerId); break; case SquadAction.AcceptInviteToJoin: this.StateManager.RemoveInviteToSquad(msg.SquadData.Id); this.UpdateCurrentSquad(); this.StateManager.OnSquadJoinInviteAccepted(); break; case SquadAction.RejectInviteToJoin: this.StateManager.RemoveInviteToSquad(msg.SquadData.Id); break; case SquadAction.PromoteMember: SquadUtils.SetSquadMemberRole(currentSquad, msg.MemberData.MemberId, msg.MemberData.MemberRole); break; case SquadAction.DemoteMember: SquadUtils.SetSquadMemberRole(currentSquad, msg.MemberData.MemberId, msg.MemberData.MemberRole); break; case SquadAction.RemoveMember: SquadUtils.RemoveSquadMember(currentSquad, msg.MemberData.MemberId); break; case SquadAction.RequestTroops: this.StateManager.TroopRequestDate = Service.ServerAPI.ServerTime; this.StateManager.OnSquadTroopsRequested(); break; case SquadAction.DonateTroops: case SquadAction.DonateWarTroops: { Dictionary <string, int> donations = msg.DonationData.Donations; CurrentPlayer currentPlayer = Service.CurrentPlayer; int num = 0; foreach (KeyValuePair <string, int> current in donations) { string key = current.Key; int value = current.Value; currentPlayer.Inventory.Troop.ModifyItemAmount(key, -value); num += value; } StorageSpreadUtils.UpdateAllStarportFullnessMeters(); Service.ISupportController.UnfreezeAllBuildings(ServerTime.Time); this.StateManager.NumTroopDonationsInSession += num; this.StateManager.OnSquadTroopsDonated(donations); break; } case SquadAction.RequestWarTroops: this.StateManager.WarTroopRequestDate = Service.ServerAPI.ServerTime; this.StateManager.OnSquadWarTroopsRequested(); break; case SquadAction.ShareReplay: this.StateManager.OnSquadReplayShared(msg.ReplayData); break; } }
public void Notify(SquadAction action, params object[] args) { switch (action) { case(SquadAction.EnemySighted): if (this.SquadState == SquadState.ForcedMove) return; AttackTarget ((Target)args [0]); break; case(SquadAction.DestinationReached): CheckSquadIdle (); break; case(SquadAction.UnitDestroyed): AssignNewTarget ((Unit)args [0]); break; case(SquadAction.EngagedInMelee): EngageInMelee (); break; case (SquadAction.UnitDied): UpdateSquadMembers ((Unit)args [0]); break; case (SquadAction.TargetDestroyed): Disengage (); break; } }