public override int Execute(LogicLevel level)
        {
            LogicClientAvatar playerAvatar = level.GetPlayerAvatar();

            if (playerAvatar != null)
            {
                LogicGameObjectManager gameObjectManager = level.GetGameObjectManagerAt(1);

                if (gameObjectManager.GetTownHall() == null)
                {
                    LogicJSONObject jsonObject = level.GetGameListener().ParseCompressedHomeJSON(this.m_compressedHomeJSON, this.m_compressedHomeJSON.Length);

                    level.SetLoadingVillageType(1);

                    this.LoadGameObjectsJsonArray(level, jsonObject.GetJSONArray("buildings2"), 1);
                    this.LoadGameObjectsJsonArray(level, jsonObject.GetJSONArray("obstacles2"), 1);
                    this.LoadGameObjectsJsonArray(level, jsonObject.GetJSONArray("traps2"), 1);
                    this.LoadGameObjectsJsonArray(level, jsonObject.GetJSONArray("decos2"), 1);

                    level.SetLoadingVillageType(-1);

                    if (playerAvatar.GetResourceCount(LogicDataTables.GetGold2Data()) == 0)
                    {
                        playerAvatar.CommodityCountChangeHelper(0, LogicDataTables.GetGold2Data(), LogicDataTables.GetGlobals().GetStartingGold2());
                    }

                    if (playerAvatar.GetResourceCount(LogicDataTables.GetElixir2Data()) == 0)
                    {
                        playerAvatar.CommodityCountChangeHelper(0, LogicDataTables.GetElixir2Data(), LogicDataTables.GetGlobals().GetStartingElixir2());
                    }
                }

                return(0);
            }

            return(-1);
        }
Beispiel #2
0
        public int CollectResources()
        {
            int collected = -1;

            if (this.m_parent.GetLevel().GetHomeOwnerAvatar().IsClientAvatar())
            {
                collected = 0;

                LogicClientAvatar playerAvatar = (LogicClientAvatar)this.m_parent.GetLevel().GetHomeOwnerAvatar();
                LogicDataTable    table        = LogicDataTables.GetTable(LogicDataType.RESOURCE);

                for (int i = 0; i < table.GetItemCount(); i++)
                {
                    LogicResourceData data = (LogicResourceData)table.GetItemAt(i);

                    if (data.GetWarResourceReferenceData() != null)
                    {
                        int count = playerAvatar.GetResourceCount(data);

                        if (count > 0)
                        {
                            int unusedResourceCap = playerAvatar.GetUnusedResourceCap(data.GetWarResourceReferenceData());

                            if (unusedResourceCap != 0)
                            {
                                if (count > unusedResourceCap)
                                {
                                    count = unusedResourceCap;
                                }

                                if (data.GetName().Equals("WarGold"))
                                {
                                    this.m_parent.GetLevel().GetAchievementManager().IncreaseWarGoldResourceLoot(count);
                                }

                                collected = count;

                                playerAvatar.CommodityCountChangeHelper(0, data.GetWarResourceReferenceData(), count);
                                playerAvatar.CommodityCountChangeHelper(0, data, -count);
                            }
                        }
                    }
                }
            }

            return(collected);
        }
Beispiel #3
0
        private void OnCreateAllianceMessageReceived(CreateAllianceMessage message)
        {
            if (!this.CanJoinAlliance())
            {
                AllianceCreateFailedMessage allianceCreateFailedMessage = new AllianceCreateFailedMessage();
                allianceCreateFailedMessage.SetReason(AllianceCreateFailedMessage.Reason.GENERIC);
                this.m_session.SendPiranhaMessage(allianceCreateFailedMessage, 1);
                return;
            }

            LogicClientAvatar playerAvatar = this.m_session.GameMode.GetPlayerAvatar();

            if (playerAvatar.GetResourceCount(LogicDataTables.GetGlobals().GetAllianceCreateResourceData()) < LogicDataTables.GetGlobals().GetAllianceCreateCost())
            {
                AllianceCreateFailedMessage allianceCreateFailedMessage = new AllianceCreateFailedMessage();
                allianceCreateFailedMessage.SetReason(AllianceCreateFailedMessage.Reason.GENERIC);
                this.m_session.SendPiranhaMessage(allianceCreateFailedMessage, 1);
                return;
            }

            ServerSocket allianceServer = ServerManager.GetNextSocket(11);

            if (allianceServer != null)
            {
                ServerRequestManager.Create(new CreateAllianceRequestMessage
                {
                    AllianceName        = message.GetAllianceName(),
                    AllianceDescription = message.GetAllianceDescription(),
                    AllianceType        = (AllianceType)message.GetAllianceType(),
                    AllianceBadgeId     = message.GetAllianceBadgeId(),
                    RequiredScore       = message.GetRequiredScore(),
                    RequiredDuelScore   = message.GetRequiredDuelScore(),
                    WarFrequency        = message.GetWarFrequency(),
                    PublicWarLog        = message.GetPublicWarLog(),
                    ArrangedWarEnabled  = message.GetArrangedWarEnabled()
                }, allianceServer).OnComplete = this.OnCreateAlliance;
            }
            else
            {
                AllianceCreateFailedMessage allianceCreateFailedMessage = new AllianceCreateFailedMessage();
                allianceCreateFailedMessage.SetReason(AllianceCreateFailedMessage.Reason.GENERIC);
                this.m_session.SendPiranhaMessage(allianceCreateFailedMessage, 1);
            }
        }
Beispiel #4
0
        public override int Execute(LogicLevel level)
        {
            LogicClientAvatar playerAvatar = level.GetPlayerAvatar();

            if (playerAvatar != null)
            {
                if (this.m_allianceCreate)
                {
                    LogicGlobals      globals  = LogicDataTables.GetGlobals();
                    LogicResourceData resource = globals.GetAllianceCreateResourceData();

                    int removeCount = LogicMath.Min(globals.GetAllianceCreateCost(), playerAvatar.GetResourceCount(resource));

                    playerAvatar.CommodityCountChangeHelper(0, resource, -removeCount);
                }

                playerAvatar.SetAllianceId(this.m_allianceId.Clone());
                playerAvatar.SetAllianceName(this.m_allianceName);
                playerAvatar.SetAllianceBadgeId(this.m_allianceBadgeId);
                playerAvatar.SetAllianceLevel(this.m_allianceExpLevel);
                playerAvatar.SetAllianceRole(this.m_allianceCreate ? LogicAvatarAllianceRole.LEADER : LogicAvatarAllianceRole.MEMBER);
                playerAvatar.GetChangeListener().AllianceJoined(playerAvatar.GetAllianceId(), this.m_allianceName, this.m_allianceBadgeId, this.m_allianceExpLevel,
                                                                playerAvatar.GetAllianceRole());

                LogicGameListener gameListener = level.GetGameListener();

                if (gameListener != null)
                {
                    if (this.m_allianceCreate)
                    {
                        gameListener.AllianceCreated();
                    }
                    else
                    {
                        gameListener.AllianceJoined();
                    }
                }

                return(0);
            }

            return(-1);
        }