Пример #1
0
 public GameWorld()
 {
     GameContext = Kernel.Get <BaseGameContext>();
     Server      = Kernel.Get <BaseServer>();
     Config      = Kernel.Get <BaseConfig>();
     WorldCore   = new WorldCore(Server.MaxClients, GameContext.Tuning);
 }
Пример #2
0
        public GameWorld()
        {
            Entities         = new List <Entity>();
            WorldCore        = new WorldCore(Server.MaxClients, Tuning);
            PlayersDistances = new List <Pair <float, int> >(Server.MaxClients);

            for (var i = 0; i < Server.MaxClients; i++)
            {
                PlayersDistances.Add(new Pair <float, int>(0, 0));
            }
        }
Пример #3
0
        public override void Init(BasePlayer player, Vector2 spawnPos)
        {
            Player   = player;
            Position = spawnPos;

            IsAlive       = true;
            Health        = 0;
            Armor         = 0;
            EmoteStopTick = -1;
            Emote         = Emote.Normal;

            Core                      = Kernel.Get <BaseCharacterCore>();
            SendCore                  = Kernel.Get <BaseCharacterCore>();
            ReckoningCore             = Kernel.Get <BaseCharacterCore>();
            ReckoningCore.IsPredicted = true;

            Core.Reset();
            Core.Init(GameWorld.WorldCore, GameContext.MapCollision);
            Core.Position = Position;

            var worldCore = new WorldCore(
                GameWorld.WorldCore.CharacterCores.Length,
                Kernel.Get <BaseTuningParams>());

            ReckoningCore.Init(worldCore, GameContext.MapCollision);

            GameContext.CreatePlayerSpawn(spawnPos);
            GameWorld.WorldCore.CharacterCores[player.ClientId] = Core;

            Input           = new SnapshotPlayerInput();
            LatestPrevInput = new SnapshotPlayerInput();
            LatestInput     = new SnapshotPlayerInput();
            LastAction      = -1;

            HitObjects = new List <Entity>();
            NinjaStat  = new NinjaStat();

            ActiveWeapon = Weapon.Hammer;
            LastWeapon   = Weapon.Gun;
            QueuedWeapon = (Weapon)(-1);
            Weapons      = new WeaponStat[(int)Weapon.NumWeapons];
            Weapons[(int)Weapon.Hammer].Got  = true;
            Weapons[(int)Weapon.Hammer].Ammo = -1;

            Destroyed += OnDestroyed;
            Reseted   += OnReseted;
        }
Пример #4
0
        public Character(BasePlayer player, Vector2 spawnPos) : base(1)
        {
            HitObjects = new List <Entity>();
            Weapons    = new WeaponStat[(int)Weapon.NUM_WEAPONS];
            NinjaStat  = new NinjaStat();

            ActiveWeapon = Weapon.GUN;
            LastWeapon   = Weapon.HAMMER;
            QueuedWeapon = (Weapon)(-1);

            Position      = spawnPos;
            Health        = 0;
            Armor         = 0;
            EmoteStopTick = -1;
            LastAction    = -1;
            Player        = player;
            IsAlive       = true;

            Input           = new SnapObj_PlayerInput();
            LatestPrevInput = new SnapObj_PlayerInput();
            LatestInput     = new SnapObj_PlayerInput();

            Core          = new CharacterCore();
            SendCore      = new CharacterCore();
            ReckoningCore = new CharacterCore();

            Core.Reset();
            Core.Init(GameWorld.WorldCore, GameContext.Collision);
            Core.Position = Position;

            var worldCore = new WorldCore(
                GameWorld.WorldCore.CharacterCores.Length,
                GameWorld.WorldCore.Tuning);

            ReckoningCore.Init(worldCore, GameContext.Collision);

            GameWorld.WorldCore.CharacterCores[player.ClientId] = Core;
            GameContext.GameController.OnCharacterSpawn(this);
        }
Пример #5
0
 public abstract void Init(WorldCore worldCore, BaseMapCollision mapCollision);
        protected void Example(string fileName, string fileContent)
        {
            if (string.IsNullOrWhiteSpace(fileContent))
            {
                throw new ArgumentNullException(nameof(fileContent));
            }

            _logger.Log($"fileContent = {fileContent}");
            _logger.Log($"fileName = {fileName}");

            var targetDirectoryName = string.Empty;

            if (fileName.EndsWith(".zip"))
            {
                targetDirectoryName = fileName.Replace(".zip", string.Empty);
            }
            else
            {
                targetDirectoryName = fileName;
                fileName            = $"{fileName}.zip";
            }

            WriteLineToReport("---------------------------------------------------------------------------------");
            WriteLineToReport(targetDirectoryName);
            WriteLineToReport(" ");

            _logger.Log($"fileName (after) = {fileName}");
            _logger.Log($"targetDirectoryName = {targetDirectoryName}");

            var fullDestDirName = Path.Combine(_destDir, targetDirectoryName);
            var fullFileName    = Path.Combine(_destDir, fileName);

            _logger.Log($"fullDestDirName = {fullDestDirName}");
            _logger.Log($"fullFileName = {fullFileName}");

            var relativeExampleHref = $"{_baseRelativeExampleHref}{fileName}";

            _logger.Log($"relativeExampleHref = {relativeExampleHref}");

            WriteLineToReport($"<code data-lng='soc' example-href='{relativeExampleHref}'>");
            WriteLineToReport(fileContent);
            WriteLineToReport("</code>");
            WriteLineToReport(" ");

            var testDir = Path.Combine(_rootDir, $"TstDir{Guid.NewGuid().ToString("D").Replace("-", string.Empty)}");

            if (!Directory.Exists(testDir))
            {
                Directory.CreateDirectory(testDir);
            }

            var worldSpaceCreationSettings = new WorldSpaceCreationSettings()
            {
                ProjectName = _projectName
            };

            var wSpaceFile = WorldSpaceCreator.CreateWithOutWSpaceFile(worldSpaceCreationSettings, testDir
                                                                       , errorMsg => throw new Exception(errorMsg)
                                                                       );

            var wSpaceDir = wSpaceFile.DirectoryName;

            _logger.Log($"testDir = {testDir}");
            _logger.Log($"wSpaceDir = {wSpaceDir}");

            var relativeFileName = _defaultRelativeFileName;

            if (relativeFileName.StartsWith("/") || relativeFileName.StartsWith("\\"))
            {
                relativeFileName = relativeFileName.Substring(1);
            }

            var targetFileName = Path.Combine(wSpaceDir, relativeFileName);

            File.WriteAllText(targetFileName, fileContent);

            var supportBasePath = Path.Combine(testDir, "SysDirs");

            var logDir = Path.Combine(supportBasePath, "NpcLogs");

            var invokingInMainThread = DefaultInvokerInMainThreadFactory.Create();

            var instance = new WorldCore();

            var settings = new WorldSettings();

            settings.EnableAutoloadingConvertors = true;

            settings.SharedModulesDirs = new List <string>()
            {
                Path.Combine(wSpaceDir, "Modules")
            };

            settings.ImagesRootDir = Path.Combine(supportBasePath, "Images");

            settings.TmpDir = Path.Combine(supportBasePath, "TMP");

            settings.HostFile = Path.Combine(wSpaceDir, "World/World.world");

            settings.InvokerInMainThread = invokingInMainThread;

            var callBackLogger = new CallBackLogger(
                message =>
            {
                WriteLineToReport(NormalizeTextForConsole(message));
                _logger.Log(message);
            },
                errorMsg => {
                _logger.Error(errorMsg);
            }
                );

            settings.Logging = new LoggingSettings()
            {
                LogDir           = logDir,
                RootContractName = "Hi1",
                PlatformLoggers  = new List <IPlatformLogger>()
                {
                    callBackLogger
                },
                Enable = true,
                EnableRemoteConnection = true
            };

            instance.SetSettings(settings);

            var platformListener = new object();

            var npcSettings = new HumanoidNPCSettings();

            npcSettings.Id              = "#020ED339-6313-459A-900D-92F809CEBDC5";
            npcSettings.LogicFile       = Path.Combine(wSpaceDir, $"Npcs/{_projectName}/{_projectName}.sobj");
            npcSettings.HostListener    = platformListener;
            npcSettings.PlatformSupport = new PlatformSupportCLIStub();

            var npc = instance.GetHumanoidNPC(npcSettings);

            WriteLineToReport("<console>");

            instance.Start();

            Thread.Sleep(_timeoutToEnd);

            WriteLineToReport("</console>");

            Directory.Move(wSpaceDir, fullDestDirName);

            ZipFile.CreateFromDirectory(fullDestDirName, fullFileName);

            Directory.Delete(testDir, true);
            Directory.Delete(fullDestDirName, true);
        }
Пример #7
0
        public bool Run(int timeoutToEnd, Action <string> logChannel, Action <string> error)
        {
            var result = true;

            var supportBasePath = Path.Combine(_testDir, "SysDirs");

            var logDir = Path.Combine(supportBasePath, "NpcLogs");

            var invokingInMainThread = DefaultInvokerInMainThreadFactory.Create();

            var instance = new WorldCore();

            var settings = new WorldSettings();

            settings.EnableAutoloadingConvertors = true;

            settings.SharedModulesDirs = new List <string>()
            {
                Path.Combine(_wSpaceDir, "Modules")
            };

            settings.ImagesRootDir = Path.Combine(supportBasePath, "Images");

            settings.TmpDir = Path.Combine(supportBasePath, "TMP");

            settings.HostFile = Path.Combine(_wSpaceDir, "World/World.world");

            settings.InvokerInMainThread = invokingInMainThread;

            var callBackLogger = new CallBackLogger(
                message => { logChannel(message); },
                errorMsg => { result = false; error(errorMsg); }
                );

            settings.Logging = new LoggingSettings()
            {
                LogDir           = logDir,
                RootContractName = "Hi1",
                PlatformLoggers  = new List <IPlatformLogger>()
                {
                    callBackLogger
                },
                Enable = true,
                EnableRemoteConnection = true
            };

            instance.SetSettings(settings);

            var platformListener = new object();

            var npcSettings = new HumanoidNPCSettings();

            npcSettings.Id              = "#020ED339-6313-459A-900D-92F809CEBDC5";
            npcSettings.LogicFile       = Path.Combine(_wSpaceDir, $"Npcs/{_projectName}/{_projectName}.sobj");
            npcSettings.HostListener    = platformListener;
            npcSettings.PlatformSupport = new PlatformSupportCLIStub();

            var npc = instance.GetHumanoidNPC(npcSettings);

            instance.Start();

            Thread.Sleep(timeoutToEnd);

            return(result);
        }