Exemple #1
0
        private float getNumericInput(float i_MaximumValue, string i_AskUserMsg)
        {
            string userInput;
            float  numericInput = 0f;
            bool   isValid      = false;

            do
            {
                Console.Write(i_AskUserMsg);
                userInput = Console.ReadLine();
                try
                {
                    if (i_AskUserMsg == k_PhoneNumberMsg)
                    {
                        numericInput = LogicUtils.NumericValueValidation(userInput);
                    }
                    else
                    {
                        numericInput = LogicUtils.NumericValueValidation(userInput, i_MaximumValue);
                    }

                    isValid = true;
                }
                catch (Exception exception)
                {
                    Console.WriteLine(exception.Message);
                }
            }while (!isValid);

            return(numericInput);
        }
Exemple #2
0
 public ToggleTricksForm(LogicMode logicMode, string userLogicFilename, IEnumerable <string> tricksEnabled)
 {
     InitializeComponent();
     Result    = tricksEnabled.ToHashSet();
     LogicFile = LogicUtils.ReadRulesetFromResources(logicMode, userLogicFilename);
     Write_Tricks();
 }
Exemple #3
0
        public ToggleTricksForm(LogicMode logicMode, string userLogicFilename, IEnumerable <string> tricksEnabled)
        {
            InitializeComponent();
            Result = tricksEnabled.ToList();

            var lines    = LogicUtils.ReadRulesetFromResources(logicMode, userLogicFilename);
            var itemList = LogicUtils.PopulateItemListFromLogicData(lines);

            var y      = 9;
            var deltaY = 23;
            var tricks = itemList.Where(io => io.IsTrick);

            foreach (var itemObject in tricks.OrderBy(io => io.Name))
            {
                var cTrick = new CheckBox();
                cTrick.Tag     = itemObject;
                cTrick.Checked = tricksEnabled.Contains(itemObject.Name);
                cTrick.Text    = itemObject.Name;
                TooltipBuilder.SetTooltip(cTrick, itemObject.TrickTooltip);
                cTrick.Location        = new Point(9, y);
                cTrick.Size            = new Size(pTricks.Width - 50, deltaY);
                cTrick.CheckedChanged += cTrick_CheckedChanged;
                pTricks.Controls.Add(cTrick);
                y += deltaY;
            }
        }
        public async Task AllianceMemberEntry(MemoryStream stream, int order)
        {
            var player = await Resources.PlayerCache.GetPlayer(AccountId);

            await stream.WriteLongAsync(AccountId);                         // Avatar Id

            await stream.WriteStringAsync(null);                            // FacebookId

            await stream.WriteStringAsync(player.Name);                     // Name

            await stream.WriteIntAsync(Role);                               // Role

            await stream.WriteIntAsync(player.ExpLevel);                    // Exp Level

            await stream.WriteIntAsync(LogicUtils.GetLeagueByScore(Score)); // League Type

            await stream.WriteIntAsync(Score);                              // Score

            await stream.WriteIntAsync(Donations);                          // Donations

            await stream.WriteIntAsync(DonationsReceived);                  // Donations Received

            await stream.WriteIntAsync(order);                              // Order

            await stream.WriteIntAsync(order);                              // Previous Order

            stream.WriteByte(0);                                            // IsNewMember

            stream.WriteByte(1);                                            // HasHomeId
            await stream.WriteLongAsync(AccountId);                         // Home Id
        }
    internal void BulletHit(Collider hitObject, Vector3 bulletForward)
    {
        if (hitObject == null)
        {
            return;
        }

        BodyPart hitBodyPart = hitObject.GetComponent <BodyPart>();

        if (hitBodyPart != null && this.shooter != null)
        {
            bool isPlayerWeapon = this.shooter.CompareTag("Player");
            if (LogicUtils.CanBeHitByBullet(hitBodyPart, isPlayerWeapon))
            {
                hitBodyPart.TakeDamage(-this.damagePerBullet, this);
            }
        }
        else
        {
            BaseEntity hitEntity = hitObject.GetComponent <BaseEntity>();
            if (hitEntity)
            {
                bool isPlayerWeapon = this.shooter.CompareTag("Player");
                if (LogicUtils.CanBeHitByBullet(hitEntity, isPlayerWeapon))
                {
                    hitEntity.ChangeHealth(-this.damagePerBullet, this);
                }
            }
        }
    }
Exemple #6
0
 public void SetSender(Player player)
 {
     SenderName       = player.Name;
     SenderAvatarId   = player.AccountId;
     SenderLevel      = player.ExpLevel;
     SenderLeagueType = LogicUtils.GetLeagueByScore(player.Score);
 }
Exemple #7
0
        private Vehicle createNewVehicle(string i_UserPlateNumber)
        {
            bool    isVehicleTypeValid = false;
            Vehicle newVehicle;

            VehicleFactory.eVehicleType newVehicleType = VehicleFactory.eVehicleType.FuelCar;
            string userChoice;

            Console.WriteLine("{0}Please Enter the following information: {0}", Environment.NewLine);
            this.printMultiChoiceList(VehicleFactory.VehicleTypeKey, Enum.GetNames(typeof(VehicleFactory.eVehicleType)));
            this.printEnterChoiceMsg();
            do
            {
                try
                {
                    userChoice         = Console.ReadLine();
                    newVehicleType     = LogicUtils.EnumValidation <VehicleFactory.eVehicleType>(userChoice, VehicleFactory.VehicleTypeKey);
                    isVehicleTypeValid = true;
                }
                catch (Exception exception)
                {
                    Console.WriteLine(exception.Message);
                }
            }while (!isVehicleTypeValid);

            newVehicle = VehicleFactory.CreateVehicle(i_UserPlateNumber, newVehicleType);
            this.setVehicleInfo(newVehicle, newVehicleType);

            return(newVehicle);
        }
Exemple #8
0
 private void OnTriggerEnter(Collider other)
 {
     if (LogicUtils.IsShootable(other) == false || LogicUtils.CanBeHitByBullet(other, _isPlayerWeapon) == false)
     {
         return;
     }
     this.BulletHitSomething(other, shootLocation);
 }
    public virtual void Stop()
    {
        if (LogicUtils.NullCheck(this._navMeshAgent, this) == false)
        {
            return;
        }

        this._navMeshAgent.enabled = false;
    }
Exemple #10
0
        private void Write_Tricks()
        {
            pTricks.Controls.Clear();
            var itemList = LogicUtils.PopulateItemListFromLogicData(LogicFile);

            var y          = 9;
            var deltaY     = 23;
            var tricks     = itemList.Where(io => io.IsTrick);
            var categories = tricks.Select(io => string.IsNullOrWhiteSpace(io.TrickCategory) ? "Misc" : io.TrickCategory).Distinct().ToList();

            if (categories.Count > 1)
            {
                foreach (var i in tricks)
                {
                    i.TrickCategory = string.IsNullOrWhiteSpace(i.TrickCategory) ? "Misc" : i.TrickCategory;
                }
                tricks = tricks.OrderBy(io => categories.IndexOf(io.TrickCategory));
            }

            string currentCategory = string.Empty;

            foreach (var itemObject in tricks)
            {
                if (!itemObject.Name.ToLower().Contains(txtSearch.Text.ToLower()))
                {
                    continue;
                }
                if (itemObject.TrickCategory != null && currentCategory != itemObject.TrickCategory)
                {
                    currentCategory = itemObject.TrickCategory;
                    var cCategory = new InvertIndeterminateCheckBox();
                    cCategory.Text               = currentCategory + ":";
                    cCategory.Location           = new Point(9, y);
                    cCategory.Size               = new Size(pTricks.Width - 50, deltaY);
                    cCategory.CheckStateChanged += cTrick_CheckStateChanged;
                    cCategory.Tag = tricks
                                    .Where(io => io.TrickCategory == currentCategory && io.Name.ToLower().Contains(txtSearch.Text.ToLower()))
                                    .Select(io => io.Name)
                                    .ToHashSet();
                    pTricks.Controls.Add(cCategory);
                    y += deltaY;
                }
                var cTrick = new CheckBox();
                cTrick.Tag = new HashSet <string> {
                    itemObject.Name
                };
                cTrick.Checked = Result.Contains(itemObject.Name);
                cTrick.Text    = itemObject.Name;
                TooltipBuilder.SetTooltip(cTrick, itemObject.TrickTooltip);
                cTrick.Location           = new Point(18, y);
                cTrick.Size               = new Size(pTricks.Width - 50, deltaY);
                cTrick.CheckStateChanged += cTrick_CheckStateChanged;
                pTricks.Controls.Add(cTrick);
                y += deltaY;
            }
            CalculateCategoryCheckboxes();
        }
Exemple #11
0
    private void OnTriggerExit(Collider other)
    {
        if (LogicUtils.IsPlayer(other) == false)
        {
            return;
        }

        StopSpawning();
    }
Exemple #12
0
        public BattleReportStreamEntry GetBattleReportStreamEntry(long replayId)
        {
            var random = new Random();

            var attackerReward = random.Next(10, 25);

            Attacker.Score += attackerReward;

            return(new BattleReportStreamEntry
            {
                MajorVersion = 5,
                Build = 2,
                ContentVersion = 4,
                CreationDateTime = DateTime.Now,
                IsRevengeUsed = true, // Revenge is not supported atm
                SenderAvatarId = Defender.AccountId,
                SenderName = Defender.Name,
                SenderLevel = Defender.ExpLevel,
                SenderLeagueType = LogicUtils.GetLeagueByScore(Defender.Score),
                ShardId = 0,
                ReplayId = replayId,
                BattleLogJson = JsonConvert.SerializeObject(new BattleLog
                {
                    // Here we use random values
                    Loot = new[]
                    { new[] { 3000001, random.Next(1000, 100000) }, new[] { 3000002, random.Next(1000, 100000) } },
                    Units = new[]
                    {
                        new[] { 4000000, random.Next(10, 50) }, new[] { 4000001, random.Next(10, 50) },
                        new[] { 4000002, random.Next(10, 50) }, new[] { 4000003, random.Next(10, 50) },
                        new[] { 4000004, random.Next(10, 50) }, new[] { 4000005, random.Next(10, 50) },
                        new[] { 4000006, random.Next(10, 50) }, new[] { 4000007, random.Next(10, 50) }
                    },

                    Levels = new int[0][],
                    Spells = new int[0][],
                    Stats = new BattleLogStats
                    {
                        TownHallDestroyed = true,
                        DestructionPercentage = random.Next(0, 100),
                        AllianceName = "RetroClash",
                        AllianceUsed = false,
                        AttackerScore = attackerReward,
                        BattleEnded = true,
                        BattleTime = 1,
                        DefenderScore = random.Next(-30, -15),
                        HomeId = new[] { 0, 1 },
                        OriginalScore = Attacker.Score
                    }
                })
            });
        }
        /// <summary>
        /// Performs the execution of the <see cref="SpeedUpConstructionCommand"/> on the specified <see cref="Avatar"/>.
        /// </summary>
        /// <param name="level"><see cref="Level"/> on which to perform the <see cref="SpeedUpConstructionCommand"/>.</param>
        /// <exception cref="ArgumentNullException"><paramref name="level"/> is null.</exception>
        /// <exception cref="ArgumentNullException"><paramref name="level.Village"/> is null.</exception>
        public override void Execute(Level level)
        {
            ThrowIfLevelNull(level);
            ThrowIfLevelVillageNull(level);

            var village = level.Village;
            var vilobj  = village.VillageObjects[BuildableGameID];

            if (vilobj == null)
            {
                level.Logs.Log($"Could not find village object with game ID {BuildableGameID}.");
            }
            else
            {
                if (vilobj is Building)
                {
                    var building = (Building)vilobj;
                    if (!building.IsConstructing)
                    {
                        level.Logs.Log($"Tried to speed the construction of a building which is not in construction with game ID {BuildableGameID}.");
                    }
                    else
                    {
                        var speedUpCost = LogicUtils.CalculateSpeedUpCost(level.Assets, building.ConstructionDuration);
                        level.Avatar.Gems -= speedUpCost;

                        building.SpeedUpConstruction(Tick);
                    }
                }
                else if (vilobj is Trap)
                {
                    var trap = (Trap)vilobj;
                    if (!trap.IsConstructing)
                    {
                        level.Logs.Log($"Tried to speed the construction of a trap which is not in construction with game ID {BuildableGameID}.");
                    }
                    else
                    {
                        var speedUpCost = LogicUtils.CalculateSpeedUpCost(level.Assets, trap.ConstructionDuration);
                        level.Avatar.Gems -= speedUpCost;

                        trap.SpeedUpConstruction(Tick);
                    }
                }
                else
                {
                    level.Logs.Log($"Unexpected VillageObject type: {vilobj.GetType().Name} was asked to be upgraded.");
                }
            }
        }
Exemple #14
0
    private void OnTriggerEnter(Collider other)
    {
        if (LogicUtils.IsPlayer(other) == false)
        {
            return;
        }

        PlayerEntity player = other.GetComponent <PlayerEntity>();

        player.onEntityDeath -= StopSpawning;
        player.onEntityDeath += StopSpawning;


        StartCoroutine(StartSpawning());
    }
    private void AssignEnemySettings(GameObject randomEnemy)
    {
        if (randomEnemy != null)
        {
            randomEnemy.name = LogicUtils.RandomString(7);

            BasicAi AI = randomEnemy.GetComponent <BasicAi>();
            if (AI == null)
            {
                Debug.LogError("Tried assigning settings to no ai");
                return;
            }
            CreateReferencesToEnemy(AI);
        }
    }
Exemple #16
0
    /// <summary>
    /// 场景中创建模型
    /// </summary>
    /// <param name="_go"></param>
    /// <param name="_strName"></param>
    private void CreateNewModel(GameObject _go, string _strName)
    {
        Utils.RemoveChildren(m_objRoot.transform);

        GameObject compObj = new GameObject();

        compObj.name = _strName;
        LogicUtils.ResetStandardShader(_go);

        _go.transform.SetParent(compObj.transform);
        _go.transform.position   = Vector3.zero;
        _go.transform.localScale = Vector3.one;

        compObj.transform.position   = Vector3.zero;
        compObj.transform.localScale = Vector3.one;
        compObj.transform.SetParent(m_objRoot.transform);
    }
Exemple #17
0
        private void refuelVehicle(string i_PlateNumber)
        {
            this.printMultiChoiceList(FuelEnergy.FuelTypeKey, Enum.GetNames(typeof(FuelEnergy.eFuelType)));
            this.printEnterChoiceMsg();
            string i_Choice = Console.ReadLine();

            try
            {
                FuelEnergy.eFuelType fuelTypeChosen = LogicUtils.EnumValidation <FuelEnergy.eFuelType>(i_Choice, FuelEnergy.FuelTypeKey);
                float amountToAdd = this.getAmountOfUnitsToAdd(FuelEnergy.FuelUnits);
                this.m_Garage.RefuelFuelVehicle(i_PlateNumber, fuelTypeChosen, amountToAdd);
                Console.WriteLine("The vehicle with license plate: {0} was refueled successfuly!", i_PlateNumber);
            }
            catch (Exception exception)
            {
                Console.WriteLine(exception.Message);
            }
        }
Exemple #18
0
        private eUserChoice getUserChoice()
        {
            eUserChoice userChoice = eUserChoice.ExitProgram;
            string      userChoiceStr;
            bool        isValidInput = false;

            do
            {
                try
                {
                    this.printEnterChoiceMsg();
                    userChoiceStr = Console.ReadLine();
                    userChoice    = LogicUtils.EnumValidation <eUserChoice>(userChoiceStr, k_UserChoiceKey);
                    isValidInput  = true;
                }
                catch (Exception exception)
                {
                    Console.WriteLine(exception.Message);
                }
            }while (!isValidInput);

            return(userChoice);
        }
        public override async Task Process()
        {
            if (Message.StartsWith("/"))
            {
                switch (Message.Split(' ')[0])
                {
                case "/help":
                {
                    await Resources.Gateway.Send(new GlobalChatLineMessage(Device)
                        {
                            Message =
                                "Available commands:\n\n/help\n  -> List of all commands.\n/prebase [level]\n  -> Load a premade base from level 1 to 6.\n/wall [level]\n  -> Set the level of all walls.",
                            Name      = "DebugManager",
                            ExpLevel  = 100,
                            League    = 16,
                            AccountId = 0
                        });

                    break;
                }

                case "/prebase":
                {
                    var lvl = Convert.ToInt32(Message.Split(' ')[1]);
                    if (lvl > 0 && lvl < 7)
                    {
                        Device.Player.LogicGameObjectManager.Json = Resources.Levels.Prebases[lvl - 1];

                        await Resources.Gateway.Send(new OwnHomeDataMessage(Device));

                        await Resources.Gateway.Send(new GlobalChatLineMessage(Device)
                            {
                                Message  = $"Base {lvl} has been set.",
                                Name     = "DebugManager",
                                ExpLevel = 100,
                                League   = 16
                            });
                    }
                    break;
                }

                case "/wall":
                {
                    var lvl = Convert.ToInt32(Message.Split(' ')[1]);
                    if (lvl > 0 && lvl < 12)
                    {
                        foreach (var building in Device.Player.LogicGameObjectManager.Buildings)
                        {
                            if (building.Data != 1000010)
                            {
                                continue;
                            }
                            building.Level = lvl - 1;
                        }

                        await Resources.Gateway.Send(new OwnHomeDataMessage(Device));

                        await Resources.Gateway.Send(new GlobalChatLineMessage(Device)
                            {
                                Message  = $"Wall level set to {lvl}.",
                                Name     = "DebugManager",
                                ExpLevel = 100,
                                League   = 16
                            });
                    }
                    break;
                }

                default:
                {
                    await Resources.Gateway.Send(new GlobalChatLineMessage(Device)
                        {
                            Message  = "Invalid Command. Type '/help' for a list of all commands.",
                            Name     = "DebugManager",
                            ExpLevel = 100,
                            League   = 16
                        });

                    break;
                }
                }
            }
            else if ((DateTime.Now - Device.Player.LastChatMessage).TotalSeconds >= 1.0)
            {
                if (!string.IsNullOrEmpty(Message))
                {
                    await Resources.ChatManager.Process(new GlobalChatEntry
                    {
                        Message        = Message,
                        SenderName     = Device.Player.Name,
                        SenderId       = Device.Player.AccountId,
                        SenderExpLevel = Device.Player.ExpLevel,
                        SenderLeague   = LogicUtils.GetLeagueByScore(Device.Player.Score)
                    });

                    Device.Player.LastChatMessage = DateTime.Now;
                }
            }
        }
Exemple #20
0
        public async Task EndBattle()
        {
            if (Replay.Commands.Count <= 0)
            {
                return;
            }

            var random = new Random();

            var originalScore  = Attacker.Score;
            var attackerReward = random.Next(10, 25);

            Attacker.Score += attackerReward;

            var id = await ReplayDb.Save(GetReplayJson);

            if (id > 0)
            {
                Attacker.AddEntry(new BattleReportStreamEntry
                {
                    MajorVersion     = Resources.Fingerprint.GetMajorVersion,
                    Build            = Resources.Fingerprint.GetBuildVersion,
                    ContentVersion   = Resources.Fingerprint.GetContentVersion,
                    CreationDateTime = DateTime.UtcNow,
                    IsRevengeUsed    = true, // Revenge is not supported atm
                    SenderAvatarId   = Defender.AccountId,
                    SenderName       = Defender.Name,
                    SenderLevel      = Defender.ExpLevel,
                    SenderLeagueType = LogicUtils.GetLeagueByScore(Defender.Score),
                    ShardId          = 0,
                    ReplayId         = id,
                    BattleLogJson    = JsonConvert.SerializeObject(new BattleLog
                    {
                        // Here we use random values
                        Loot = new[]
                        {
                            new[] { 3000001, random.Next(1000, 100000) }, new[] { 3000002, random.Next(1000, 100000) }
                        },
                        Units = new[]
                        {
                            new[] { 4000000, random.Next(10, 50) }, new[] { 4000001, random.Next(10, 50) },
                            new[] { 4000002, random.Next(10, 50) }, new[] { 4000003, random.Next(10, 50) },
                            new[] { 4000004, random.Next(10, 50) }, new[] { 4000005, random.Next(10, 50) },
                            new[] { 4000006, random.Next(10, 50) }, new[] { 4000007, random.Next(10, 50) },
                            new[] { 4000008, random.Next(10, 50) }, new[] { 4000009, random.Next(10, 50) }
                        },

                        Levels = new int[0][],
                        Spells = new int[0][],
                        Stats  = new BattleLogStats
                        {
                            TownHallDestroyed     = true,
                            DestructionPercentage = random.Next(0, 100),
                            AllianceName          = "RetroClash",
                            AllianceUsed          = false,
                            AttackerScore         = attackerReward,
                            BattleEnded           = true,
                            BattleTime            = Replay.EndTick,
                            DefenderScore         = random.Next(-30, -15),
                            HomeId        = new[] { 0, 1 },
                            OriginalScore = originalScore
                        }
                    })
                });
            }
        }
        public override async Task Process()
        {
            if (Message.StartsWith("/"))
            {
                switch (Message.Split(' ')[0])
                {
                case "/help":
                {
                    await Resources.Gateway.Send(new GlobalChatLineMessage(Device)
                        {
                            Message =
                                "Available commands:\n\n/help\n  -> List of all commands.\n/rename\n  -> Change your name again.\n/replay\n  -> Watch a random replay.\n/prebase [level]\n  -> Load a premade base from level 1 to 6.\n/reset\n  -> Reset your village and start from beginning.\n/wall [level]\n  -> Set the level of all walls.",
                            Name      = "DebugManager",
                            ExpLevel  = 100,
                            League    = 16,
                            AccountId = 0
                        });

                    break;
                }

                case "/prebase":
                {
                    var lvl = Convert.ToInt32(Message.Split(' ')[1]);
                    if (lvl > 0 && lvl < 7)
                    {
                        Device.Player.LogicGameObjectManager.Json = Resources.Levels.Prebases[lvl - 1];
                        Device.Player.HeroManager.Clear();
                        Device.Player.Units.Troops.Clear();
                        Device.Player.Units.Spells.Clear();

                        await Resources.Gateway.Send(new OwnHomeDataMessage(Device));

                        await Resources.Gateway.Send(new GlobalChatLineMessage(Device)
                            {
                                Message  = $"Base {lvl} has been set.",
                                Name     = "DebugManager",
                                ExpLevel = 100,
                                League   = 16
                            });
                    }
                    break;
                }

                case "/reset":
                {
                    Device.Player.LogicGameObjectManager.Json = Resources.Levels.StartingHome;
                    Device.Player.Achievements.Clear();
                    Device.Player.HeroManager.Clear();
                    Device.Player.Shield.RemoveShield();
                    Device.Player.Units.Spells.Clear();
                    Device.Player.Units.Troops.Clear();

                    await Resources.Gateway.Send(new OwnHomeDataMessage(Device));

                    await Resources.Gateway.Send(new GlobalChatLineMessage(Device)
                        {
                            Message  = "Village has been set to default.",
                            Name     = "DebugManager",
                            ExpLevel = 100,
                            League   = 16
                        });

                    break;
                }

                case "/rename":
                {
                    Device.Player.TutorialSteps = 10;
                    Device.Player.ExpLevel      = 1;

                    await Resources.Gateway.Send(new OwnHomeDataMessage(Device));

                    break;
                }

                case "/replay":
                {
                    var replay = await MySQL.GetRandomReplay();

                    if (replay != null)
                    {
                        await Resources.Gateway.Send(new HomeBattleReplayDataMessage(Device)
                            {
                                Replay = replay
                            });
                    }
                    else
                    {
                        await Resources.Gateway.Send(new HomeBattleReplayFailedMessage(Device));
                    }

                    break;
                }

                case "/wall":
                {
                    var lvl = Convert.ToInt32(Message.Split(' ')[1]);
                    if (lvl > 0 && lvl < 12)
                    {
                        foreach (var building in Device.Player.LogicGameObjectManager.Buildings)
                        {
                            if (building.Data != 1000010)
                            {
                                continue;
                            }
                            building.Level = lvl - 1;
                        }

                        await Resources.Gateway.Send(new OwnHomeDataMessage(Device));

                        await Resources.Gateway.Send(new GlobalChatLineMessage(Device)
                            {
                                Message  = $"Wall level set to {lvl}.",
                                Name     = "DebugManager",
                                ExpLevel = 100,
                                League   = 16
                            });
                    }
                    break;
                }

                default:
                {
                    await Resources.Gateway.Send(new GlobalChatLineMessage(Device)
                        {
                            Message  = "Invalid Command. Type '/help' for a list of all commands.",
                            Name     = "DebugManager",
                            ExpLevel = 100,
                            League   = 16
                        });

                    break;
                }
                }
            }
            else if ((DateTime.Now - Device.Player.LastChatMessage).TotalSeconds >= 1.0)
            {
                if (!string.IsNullOrEmpty(Message))
                {
                    await Resources.ChatManager.Process(new GlobalChatEntry
                    {
                        Message        = Message,
                        SenderName     = Device.Player.Name,
                        SenderId       = Device.Player.AccountId,
                        SenderExpLevel = Device.Player.ExpLevel,
                        SenderLeague   = LogicUtils.GetLeagueByScore(Device.Player.Score)
                    });

                    Device.Player.LastChatMessage = DateTime.Now;
                }
            }
        }
Exemple #22
0
        public override async Task Process()
        {
            if (Message.StartsWith("/"))
            {
                switch (Message.Split(' ')[0])
                {
                case "/help":
                {
                    await Resources.Gateway.Send(new GlobalChatLine(Device)
                        {
                            Message =
                                "Available commands:\n\n/help → List of all commands.\n/wall [level] → Set the level of all walls.",
                            Name      = "DebugManager",
                            ExpLevel  = 100,
                            League    = 16,
                            AccountId = 0
                        });

                    break;
                }

                case "/wall":
                {
                    var lvl = Convert.ToInt32(Message.Split(' ')[1]);
                    if (lvl > 0 && lvl < 12)
                    {
                        foreach (var building in Device.Player.LogicGameObjectManager.Buildings)
                        {
                            if (building.Data != 1000010)
                            {
                                continue;
                            }
                            building.Level = lvl - 1;
                        }

                        await Resources.Gateway.Send(new OwnHomeData(Device));

                        await Resources.Gateway.Send(new GlobalChatLine(Device)
                            {
                                Message   = $"Wall level set to {lvl}.",
                                Name      = "DebugManager",
                                ExpLevel  = 100,
                                League    = 16,
                                AccountId = 0
                            });
                    }
                    break;
                }

                default:
                {
                    await Resources.Gateway.Send(new GlobalChatLine(Device)
                        {
                            Message   = "Invalid Command. Type '/help' for a list of all commands.",
                            Name      = "DebugManager",
                            ExpLevel  = 100,
                            League    = 16,
                            AccountId = 0
                        });

                    break;
                }
                }
            }
            else
            {
                await Resources.ChatManager.Process(new GlobalChatEntry
                {
                    Message        = Message,
                    SenderName     = Device.Player.Name,
                    SenderId       = Device.Player.AccountId,
                    SenderExpLevel = Device.Player.ExpLevel,
                    SenderLeague   = LogicUtils.GetLeagueByScore(Device.Player.Score)
                });
            }
        }
Exemple #23
0
        public override async Task Process()
        {
            if (Message.StartsWith("/"))
            {
                switch (Message.Split(' ')[0])
                {
                case "/help":
                {
                    await Resources.Gateway.Send(new GlobalChatLineMessage(Device)
                        {
                            Message =
                                "Available commands:\n\n/stats\n  -> View the server stats.\n/clear [obstacles/traps/decorations]\n  -> Clear all obstacles.\n/help\n  -> List of all commands.\n/rename\n  -> Change your name again.\n/replay\n  -> Watch a random replay.\n/prebase [level]\n  -> Load a premade base from level 1 to 6.\n/reset\n  -> Reset your village and start from beginning.\n/wall [level]\n  -> Set the level of all walls.",
                            Name     = "DebugManager",
                            ExpLevel = 100,
                            League   = 16
                        });

                    break;
                }

                case "/prebase":
                {
                    var lvl = Convert.ToInt32(Message.Split(' ')[1]);
                    if (lvl > 0 && lvl < 7)
                    {
                        Device.Player.LogicGameObjectManager.Json = Resources.Levels.Prebases[lvl - 1];
                        Device.Player.HeroManager.Clear();
                        Device.Player.Units.Troops.Clear();
                        Device.Player.Units.Spells.Clear();

                        await Resources.Gateway.Send(new OwnHomeDataMessage(Device));

                        await Resources.Gateway.Send(new GlobalChatLineMessage(Device)
                            {
                                Message  = $"Base {lvl} has been set.",
                                Name     = "DebugManager",
                                ExpLevel = 100,
                                League   = 16
                            });
                    }
                    break;
                }

                case "/reset":
                {
                    Device.Player.LogicGameObjectManager.Json = Resources.Levels.StartingHome;
                    Device.Player.Achievements.Clear();
                    Device.Player.HeroManager.Clear();
                    Device.Player.Shield.RemoveShield();
                    Device.Player.Units.Spells.Clear();
                    Device.Player.Units.Troops.Clear();

                    await Resources.Gateway.Send(new OwnHomeDataMessage(Device));

                    await Resources.Gateway.Send(new GlobalChatLineMessage(Device)
                        {
                            Message  = "Village has been set to default.",
                            Name     = "DebugManager",
                            ExpLevel = 100,
                            League   = 16
                        });

                    break;
                }

                case "/rename":
                {
                    Device.Player.TutorialSteps = 10;
                    Device.Player.ExpLevel      = 1;

                    await Resources.Gateway.Send(new OwnHomeDataMessage(Device));

                    break;
                }

                /*case "/add":
                 * {
                 *  var type = Message.Split(' ')[1];
                 *
                 *  switch (type)
                 *  {
                 *      case "trophies":
                 *      {
                 *          Device.Player.Score += Convert.ToInt32(Message.Split(' ')[2]);
                 *          break;
                 *      }
                 *
                 *      default:
                 *      {
                 *          await Resources.Gateway.Send(new GlobalChatLineMessage(Device)
                 *          {
                 *              Message = "Invalid type.",
                 *              Name = "DebugManager",
                 *              ExpLevel = 100,
                 *              League = 16
                 *          });
                 *          break;
                 *      }
                 *  }
                 *
                 *  await Resources.Gateway.Send(new OwnHomeDataMessage(Device));
                 *
                 *  break;
                 * }*/

                case "/remove":
                {
                    var type = Message.Split(' ')[1];

                    switch (type)
                    {
                    case "trophies":
                    {
                        Device.Player.Score -= Convert.ToInt32(Message.Split(' ')[2]);
                        break;
                    }

                    default:
                    {
                        await Resources.Gateway.Send(new GlobalChatLineMessage(Device)
                                {
                                    Message  = "Invalid type.",
                                    Name     = "DebugManager",
                                    ExpLevel = 100,
                                    League   = 16
                                });

                        break;
                    }
                    }

                    await Resources.Gateway.Send(new OwnHomeDataMessage(Device));

                    break;
                }

                case "/clear":
                {
                    var type = Message.Split(' ')[1];

                    switch (type)
                    {
                    case "obstacles":
                    {
                        Device.Player.LogicGameObjectManager.Obstacles.Clear();
                        break;
                    }

                    case "traps":
                    {
                        Device.Player.LogicGameObjectManager.Traps.Clear();
                        break;
                    }

                    case "decorations":
                    {
                        Device.Player.LogicGameObjectManager.Decorations.Clear();
                        break;
                    }

                    default:
                    {
                        await Resources.Gateway.Send(new GlobalChatLineMessage(Device)
                                {
                                    Message  = "Invalid type.",
                                    Name     = "DebugManager",
                                    ExpLevel = 100,
                                    League   = 16
                                });

                        break;
                    }
                    }

                    await Resources.Gateway.Send(new OwnHomeDataMessage(Device));

                    break;
                }

                case "/replay":
                {
                    var replay = await ReplayDb.GetRandom();

                    if (replay != null)
                    {
                        await Resources.Gateway.Send(new HomeBattleReplayDataMessage(Device)
                            {
                                Replay = replay
                            });
                    }
                    else
                    {
                        await Resources.Gateway.Send(new HomeBattleReplayFailedMessage(Device));
                    }

                    break;
                }

                case "/stats":
                {
                    var uptime = DateTime.UtcNow - Resources.StartDateTime;

                    await Resources.Gateway.Send(new GlobalChatLineMessage(Device)
                        {
                            Message =
                                $"Players online: {Resources.PlayerCache.Count}\nPlayers cached: {Redis.CachedPlayers()}\nUsed RAM: {GC.GetTotalMemory(false) / 1024 / 1024}MB\nUptime: {uptime.Days}d {uptime.Hours}h {uptime.Minutes}m {uptime.Seconds}s\nServer version: {Configuration.Version}\nFingerprint version: {Resources.Fingerprint.GetMajorVersion}.{Resources.Fingerprint.GetBuildVersion}.{Resources.Fingerprint.GetContentVersion}",
                            Name     = "DebugManager",
                            ExpLevel = 100,
                            League   = 16
                        });

                    break;
                }

                case "/wall":
                {
                    var lvl = Convert.ToInt32(Message.Split(' ')[1]);
                    if (lvl > 0 && lvl < 12)
                    {
                        foreach (var building in Device.Player.LogicGameObjectManager.Buildings)
                        {
                            if (building.Data != 1000010)
                            {
                                continue;
                            }
                            building.Level = lvl - 1;
                        }

                        await Resources.Gateway.Send(new OwnHomeDataMessage(Device));

                        await Resources.Gateway.Send(new GlobalChatLineMessage(Device)
                            {
                                Message  = $"Wall level set to {lvl}.",
                                Name     = "DebugManager",
                                ExpLevel = 100,
                                League   = 16
                            });
                    }
                    break;
                }

                default:
                {
                    await Resources.Gateway.Send(new GlobalChatLineMessage(Device)
                        {
                            Message  = "Invalid Command. Type '/help' for a list of all commands.",
                            Name     = "DebugManager",
                            ExpLevel = 100,
                            League   = 16
                        });

                    break;
                }
                }
            }
            else if ((DateTime.UtcNow - Device.LastChatMessage).TotalSeconds >= 1.0)
            {
                if (!string.IsNullOrEmpty(Message))
                {
                    await Resources.ChatManager.Process(new GlobalChatEntry
                    {
                        Message        = Message,
                        SenderName     = Device.Player.Name,
                        SenderId       = Device.Player.AccountId,
                        SenderExpLevel = Device.Player.ExpLevel,
                        SenderLeague   = LogicUtils.GetLeagueByScore(Device.Player.Score)
                    });

                    Device.LastChatMessage = DateTime.UtcNow;
                }
            }
        }
Exemple #24
0
 public Sentence asSentence()
 {
     return(LogicUtils.chainWith("AND", sentences));
 }