Example #1
0
    public void Save()
    {
        string q;

        if (Id == 0)
        {
            q  = $@"
                INSERT INTO players_ships(player_id) VALUES({PlayerId})
                SELECT @@IDENTITY AS Result";
            Id = DataConnection.GetResultInt(q);
        }

        q = $@"UPDATE players_ships SET 
                player_id = {PlayerId},
                ss_design_id = {ModelId},
                experience = {Experience},
                ship_level = {Level},
                rig_id = {RigId},
                ship_code = CAST('{ShipCode.ToString()}' AS uniqueidentifier)
            WHERE
                id = {Id}";
        DataConnection.Execute(q);

        if (shipCache == null)
        {
            shipCache = new Dictionary <Guid, Ship>();
        }
        if (!shipCache.ContainsKey(ShipCode))
        {
            shipCache.Add(ShipCode, this);
        }
    }
Example #2
0
        public async Task <IActionResult> Edit(long id, [Bind("Carriers,DeliveryTime,CollectionFee,ZipCode,Total,Id")] ShipCode shipCode)
        {
            if (id != shipCode.Id)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(shipCode);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!ShipCodeExists(shipCode.Id))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            return(View(shipCode));
        }
Example #3
0
        public async Task <IActionResult> Create([Bind("Carriers,DeliveryTime,CollectionFee,ZipCode,Total,Id")] ShipCode shipCode)
        {
            if (ModelState.IsValid)
            {
                _context.Add(shipCode);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(View(shipCode));
        }
Example #4
0
        public static ShipCode LoadCode(string name)
        {
            ShipCode code;

            if (Programs.TryGetValue(name, out code))
                return code;

            code = new ShipCode(Path.Combine(BaseLocation, name));
            Programs.Add(name, code);

            return code;
        }
Example #5
0
        public void Load(ShipCode code)
        {
            Vm = new VirtualMachine(4096);

            Vm.Attach(new Timer());

            Navigation = new Navigation(Body);
            Vm.Attach(Navigation);

            Radar = new Radar(this);
            Vm.Attach(Radar);

            Engines = new Engines();
            Vm.Attach(Engines);

            Guns = new Guns();
            Vm.Attach(Guns);

            Broadcast = new Broadcast(this);
            Vm.Attach(Broadcast);

            Code = code;

            for (var i = 0; i < Code.Length; i++)
            {
                Vm.Memory[i] = Code[i];
            }

            var ptr = 8;
            var varCount = Vm.Memory.ReadInt(ptr);
            ptr += sizeof(int);

            _variables.Clear();

            for (var i = 0; i < varCount; i++)
            {
                var varAddr = ptr;
                ptr += sizeof(int);

                var varType = Vm.Memory.ReadSByte(ptr);
                ptr += sizeof(sbyte);

                _variables.Add(new Variable((VariableType)varType, varAddr));
            }

            _programLen = Code.Length;
            _programOffset = ptr;
            _programDead = false;

            for (var i = 0; i < Vm.Registers.Length; i++)
            {
                Vm.Registers[i] = 0;
            }

            Vm.SP = Vm.Memory.Length;
        }
Example #6
0
 public static ShipCode ReloadCode(string name)
 {
     var code = new ShipCode(name);
     Programs[name] = code;
     return code;
 }