예제 #1
0
        public static Unit ReadFrom(System.IO.BinaryReader reader)
        {
            var result = new Unit();

            result.PlayerId    = reader.ReadInt32();
            result.Id          = reader.ReadInt32();
            result.Health      = reader.ReadInt32();
            result.Position    = Vec2Double.ReadFrom(reader);
            result.Size        = Vec2Double.ReadFrom(reader);
            result.JumpState   = JumpState.ReadFrom(reader);
            result.WalkedRight = reader.ReadBoolean();
            result.Stand       = reader.ReadBoolean();
            result.OnGround    = reader.ReadBoolean();
            result.OnLadder    = reader.ReadBoolean();
            result.Mines       = reader.ReadInt32();
            if (reader.ReadBoolean())
            {
                result.Weapon = Model.Weapon.ReadFrom(reader);
            }
            else
            {
                result.Weapon = null;
            }
            return(result);
        }
예제 #2
0
        public static LootBox ReadFrom(System.IO.BinaryReader reader)
        {
            var result = new LootBox();

            result.Position = Vec2Double.ReadFrom(reader);
            result.Size     = Vec2Double.ReadFrom(reader);
            result.Item     = Item.ReadFrom(reader);
            return(result);
        }
예제 #3
0
        public static Properties ReadFrom(System.IO.BinaryReader reader)
        {
            var result = new Properties();

            result.MaxTickCount           = reader.ReadInt32();
            result.TeamSize               = reader.ReadInt32();
            result.TicksPerSecond         = reader.ReadDouble();
            result.UpdatesPerTick         = reader.ReadInt32();
            result.LootBoxSize            = Vec2Double.ReadFrom(reader);
            result.UnitSize               = Vec2Double.ReadFrom(reader);
            result.UnitMaxHorizontalSpeed = reader.ReadDouble();
            result.UnitFallSpeed          = reader.ReadDouble();
            result.UnitJumpTime           = reader.ReadDouble();
            result.UnitJumpSpeed          = reader.ReadDouble();
            result.JumpPadJumpTime        = reader.ReadDouble();
            result.JumpPadJumpSpeed       = reader.ReadDouble();
            result.UnitMaxHealth          = reader.ReadInt32();
            result.HealthPackHealth       = reader.ReadInt32();
            int WeaponParametersSize = reader.ReadInt32();

            result.WeaponParameters = new System.Collections.Generic.Dictionary <WeaponType, WeaponParameters>(WeaponParametersSize);
            for (int i = 0; i < WeaponParametersSize; i++)
            {
                WeaponType WeaponParametersKey;
                switch (reader.ReadInt32())
                {
                case 0:
                    WeaponParametersKey = WeaponType.Pistol;
                    break;

                case 1:
                    WeaponParametersKey = WeaponType.AssaultRifle;
                    break;

                case 2:
                    WeaponParametersKey = WeaponType.RocketLauncher;
                    break;

                default:
                    throw new System.Exception("Unexpected discriminant value");
                }
                WeaponParameters WeaponParametersValue;
                WeaponParametersValue = Model.WeaponParameters.ReadFrom(reader);
                result.WeaponParameters.Add(WeaponParametersKey, WeaponParametersValue);
            }
            result.MineSize = Vec2Double.ReadFrom(reader);
            result.MineExplosionParameters = ExplosionParameters.ReadFrom(reader);
            result.MinePrepareTime         = reader.ReadDouble();
            result.MineTriggerTime         = reader.ReadDouble();
            result.MineTriggerRadius       = reader.ReadDouble();
            result.KillScore = reader.ReadInt32();
            return(result);
        }
예제 #4
0
        public static UnitAction ReadFrom(System.IO.BinaryReader reader)
        {
            var result = new UnitAction();

            result.Velocity   = reader.ReadDouble();
            result.Jump       = reader.ReadBoolean();
            result.JumpDown   = reader.ReadBoolean();
            result.Aim        = Vec2Double.ReadFrom(reader);
            result.Shoot      = reader.ReadBoolean();
            result.Reload     = reader.ReadBoolean();
            result.SwapWeapon = reader.ReadBoolean();
            result.PlantMine  = reader.ReadBoolean();
            return(result);
        }
예제 #5
0
        public static UnitAction ReadFrom(System.IO.BinaryReader reader)
        {
            if (reader == null)
            {
                throw new System.ArgumentNullException(nameof(reader));
            }

            return(new UnitAction(
                       reader.ReadDouble(),
                       reader.ReadBoolean(),
                       reader.ReadBoolean(),
                       Vec2Double.ReadFrom(reader),
                       reader.ReadBoolean(),
                       reader.ReadBoolean(),
                       reader.ReadBoolean(),
                       reader.ReadBoolean()));
        }
예제 #6
0
파일: Unit.cs 프로젝트: gjrfytn/MLG360
        public static Unit ReadFrom(System.IO.BinaryReader reader)
        {
            if (reader == null)
                throw new System.ArgumentNullException(nameof(reader));

            var playerId = reader.ReadInt32();
            var id = reader.ReadInt32();
            var health = reader.ReadInt32();
            var position = Vec2Double.ReadFrom(reader);
            var size = Vec2Double.ReadFrom(reader);
            var jumpState = JumpState.ReadFrom(reader);
            var walkedRight = reader.ReadBoolean();
            var stand = reader.ReadBoolean();
            var onGround = reader.ReadBoolean();
            var onLadder = reader.ReadBoolean();
            var mines = reader.ReadInt32();
            var weapon = reader.ReadBoolean() ? Weapon.ReadFrom(reader) : null;

            return new Unit(playerId, id, health, position, size, jumpState, walkedRight, stand, onGround, onLadder, mines, weapon);
        }
예제 #7
0
파일: Mine.cs 프로젝트: gjrfytn/MLG360
        public static Mine ReadFrom(System.IO.BinaryReader reader)
        {
            if (reader == null)
            {
                throw new System.ArgumentNullException(nameof(reader));
            }

            var playerId = reader.ReadInt32();
            var position = Vec2Double.ReadFrom(reader);
            var size     = Vec2Double.ReadFrom(reader);

            MineState state;

            switch (reader.ReadInt32())
            {
            case 0:
                state = MineState.Preparing;
                break;

            case 1:
                state = MineState.Idle;
                break;

            case 2:
                state = MineState.Triggered;
                break;

            case 3:
                state = MineState.Exploded;
                break;

            default:
                throw new System.Exception("Unexpected discriminant value");
            }

            var timer               = reader.ReadBoolean() ? reader.ReadDouble() : (double?)null;
            var triggerRadius       = reader.ReadDouble();
            var explosionParameters = ExplosionParameters.ReadFrom(reader);

            return(new Mine(playerId, position, size, state, timer, triggerRadius, explosionParameters));
        }
예제 #8
0
        public static Mine ReadFrom(System.IO.BinaryReader reader)
        {
            var result = new Mine();

            result.PlayerId = reader.ReadInt32();
            result.Position = Vec2Double.ReadFrom(reader);
            result.Size     = Vec2Double.ReadFrom(reader);
            switch (reader.ReadInt32())
            {
            case 0:
                result.State = MineState.Preparing;
                break;

            case 1:
                result.State = MineState.Idle;
                break;

            case 2:
                result.State = MineState.Triggered;
                break;

            case 3:
                result.State = MineState.Exploded;
                break;

            default:
                throw new System.Exception("Unexpected discriminant value");
            }
            if (reader.ReadBoolean())
            {
                result.Timer = reader.ReadDouble();
            }
            else
            {
                result.Timer = null;
            }
            result.TriggerRadius       = reader.ReadDouble();
            result.ExplosionParameters = ExplosionParameters.ReadFrom(reader);
            return(result);
        }
예제 #9
0
파일: Bullet.cs 프로젝트: Zar13st/AICup2019
        public static Bullet ReadFrom(System.IO.BinaryReader reader)
        {
            var result = new Bullet();

            switch (reader.ReadInt32())
            {
            case 0:
                result.WeaponType = WeaponType.Pistol;
                break;

            case 1:
                result.WeaponType = WeaponType.AssaultRifle;
                break;

            case 2:
                result.WeaponType = WeaponType.RocketLauncher;
                break;

            default:
                throw new System.Exception("Unexpected discriminant value");
            }
            result.UnitId   = reader.ReadInt32();
            result.PlayerId = reader.ReadInt32();
            result.Position = Vec2Double.ReadFrom(reader);
            result.Velocity = Vec2Double.ReadFrom(reader);
            result.Damage   = reader.ReadInt32();
            result.Size     = reader.ReadDouble();
            if (reader.ReadBoolean())
            {
                result.ExplosionParameters = Model.ExplosionParameters.ReadFrom(reader);
            }
            else
            {
                result.ExplosionParameters = null;
            }
            return(result);
        }
예제 #10
0
파일: Bullet.cs 프로젝트: gjrfytn/MLG360
        public static Bullet ReadFrom(System.IO.BinaryReader reader)
        {
            if (reader == null)
            {
                throw new System.ArgumentNullException(nameof(reader));
            }

            WeaponType weaponType;

            switch (reader.ReadInt32())
            {
            case 0:
                weaponType = WeaponType.Pistol;
                break;

            case 1:
                weaponType = WeaponType.AssaultRifle;
                break;

            case 2:
                weaponType = WeaponType.RocketLauncher;
                break;

            default:
                throw new System.Exception("Unexpected discriminant value");
            }

            var unitId              = reader.ReadInt32();
            var playerId            = reader.ReadInt32();
            var position            = Vec2Double.ReadFrom(reader);
            var velocity            = Vec2Double.ReadFrom(reader);
            var damage              = reader.ReadInt32();
            var size                = reader.ReadDouble();
            var explosionParameters = reader.ReadBoolean() ? ExplosionParameters.ReadFrom(reader) : null;

            return(new Bullet(weaponType, unitId, playerId, position, velocity, damage, size, explosionParameters));
        }
예제 #11
0
파일: LootBox.cs 프로젝트: gjrfytn/MLG360
 public static LootBox ReadFrom(System.IO.BinaryReader reader)
 {
     return(new LootBox(Vec2Double.ReadFrom(reader), Vec2Double.ReadFrom(reader), Items.Item.ReadFrom(reader)));
 }
예제 #12
0
        public static Properties ReadFrom(System.IO.BinaryReader reader)
        {
            if (reader == null)
            {
                throw new System.ArgumentNullException(nameof(reader));
            }

            var maxTickCount           = reader.ReadInt32();
            var teamSize               = reader.ReadInt32();
            var ticksPerSecond         = reader.ReadDouble();
            var updatesPerTick         = reader.ReadInt32();
            var lootBoxSize            = Vec2Double.ReadFrom(reader);
            var unitSize               = Vec2Double.ReadFrom(reader);
            var unitMaxHorizontalSpeed = reader.ReadDouble();
            var unitFallSpeed          = reader.ReadDouble();
            var unitJumpTime           = reader.ReadDouble();
            var unitJumpSpeed          = reader.ReadDouble();
            var jumpPadJumpTime        = reader.ReadDouble();
            var jumpPadJumpSpeed       = reader.ReadDouble();
            var unitMaxHealth          = reader.ReadInt32();
            var healthPackHealth       = reader.ReadInt32();
            var weaponParametersSize   = reader.ReadInt32();
            var weaponParameters       = new System.Collections.Generic.Dictionary <WeaponType, WeaponParameters>(weaponParametersSize);

            for (var i = 0; i < weaponParametersSize; i++)
            {
                WeaponType weaponParametersKey;
                switch (reader.ReadInt32())
                {
                case 0:
                    weaponParametersKey = WeaponType.Pistol;
                    break;

                case 1:
                    weaponParametersKey = WeaponType.AssaultRifle;
                    break;

                case 2:
                    weaponParametersKey = WeaponType.RocketLauncher;
                    break;

                default:
                    throw new System.Exception("Unexpected discriminant value");
                }

                WeaponParameters weaponParametersValue;
                weaponParametersValue = Model.WeaponParameters.ReadFrom(reader);
                weaponParameters.Add(weaponParametersKey, weaponParametersValue);
            }

            var mineSize = Vec2Double.ReadFrom(reader);
            var mineExplosionParameters = ExplosionParameters.ReadFrom(reader);
            var minePrepareTime         = reader.ReadDouble();
            var mineTriggerTime         = reader.ReadDouble();
            var mineTriggerRadius       = reader.ReadDouble();
            var killScore = reader.ReadInt32();

            return(new Properties(
                       maxTickCount,
                       teamSize,
                       ticksPerSecond,
                       updatesPerTick,
                       lootBoxSize,
                       unitSize,
                       unitMaxHorizontalSpeed,
                       unitFallSpeed,
                       unitJumpTime,
                       unitJumpSpeed,
                       jumpPadJumpTime,
                       jumpPadJumpSpeed,
                       unitMaxHealth,
                       healthPackHealth,
                       weaponParameters,
                       mineSize,
                       mineExplosionParameters,
                       minePrepareTime,
                       mineTriggerTime,
                       mineTriggerRadius,
                       killScore));
        }