コード例 #1
0
        public void FindBySQLAssociatedObject()
        {
            ISession s = OpenSession();

            Category c = new Category();

            c.Name = "NAME";
            Assignable assn = new Assignable();

            assn.Id         = "i.d.";
            assn.Categories = new List <Category> {
                c
            };
            c.Assignable = assn;
            s.Save(assn);
            s.Flush();
            s.Close();

            s = OpenSession();
            IList list = s.CreateSQLQuery("select {category.*} from Category {category}")
                         .AddEntity("category", typeof(Category)).List();

            Assert.AreEqual(1, list.Count, "Count differs");

            s.Delete("from Assignable");
            s.Delete("from Category");
            s.Flush();
            s.Close();
        }
コード例 #2
0
        public Assignables[] GetAssignees(Room room)
        {
            if (room == null)
            {
                return(new Assignables[0]);
            }
            RoomType roomType = room.roomType;

            if (roomType.primary_constraint == null)
            {
                return(new Assignables[0]);
            }
            List <Assignables> list = new List <Assignables>();

            foreach (KPrefabID building in room.buildings)
            {
                if (!((UnityEngine.Object)building == (UnityEngine.Object)null) && roomType.primary_constraint.building_criteria(building))
                {
                    Assignable component = building.GetComponent <Assignable>();
                    if (component.assignee != null)
                    {
                        foreach (Ownables owner in component.assignee.GetOwners())
                        {
                            if (!list.Contains(owner))
                            {
                                list.Add(owner);
                            }
                        }
                    }
                }
            }
            return(list.ToArray());
        }
コード例 #3
0
 public override void Assign(IAssignableIdentity new_assignee)
 {
     if (new_assignee != assignee)
     {
         if (base.slot != null && new_assignee is MinionIdentity)
         {
             new_assignee = (new_assignee as MinionIdentity).assignableProxy.Get();
         }
         if (base.slot != null && new_assignee is StoredMinionIdentity)
         {
             new_assignee = (new_assignee as StoredMinionIdentity).assignableProxy.Get();
         }
         if (new_assignee is MinionAssignablesProxy)
         {
             Ownables soleOwner          = new_assignee.GetSoleOwner();
             Ownables component          = soleOwner.GetComponent <Ownables>();
             AssignableSlotInstance slot = component.GetSlot(base.slot);
             if (slot != null)
             {
                 Assignable assignable = slot.assignable;
                 if ((Object)assignable != (Object)null)
                 {
                     assignable.Unassign();
                 }
             }
         }
         base.Assign(new_assignee);
     }
 }
コード例 #4
0
        public void UpdateBed()
        {
            Ownables   soleOwner   = base.sm.masterTarget.Get(base.smi).GetComponent <MinionIdentity>().GetSoleOwner();
            Assignable assignable  = null;
            Assignable assignable2 = soleOwner.GetAssignable(Db.Get().AssignableSlots.MedicalBed);

            if ((Object)assignable2 != (Object)null && assignable2.CanAutoAssignTo(base.sm.masterTarget.Get(base.smi).GetComponent <MinionIdentity>().assignableProxy.Get()))
            {
                assignable = assignable2;
            }
            else
            {
                assignable = soleOwner.GetAssignable(Db.Get().AssignableSlots.Bed);
                if ((Object)assignable == (Object)null)
                {
                    assignable = soleOwner.AutoAssignSlot(Db.Get().AssignableSlots.Bed);
                    if ((Object)assignable != (Object)null)
                    {
                        AssignableReachabilitySensor sensor = GetComponent <Sensors>().GetSensor <AssignableReachabilitySensor>();
                        sensor.Update();
                    }
                }
            }
            base.smi.sm.bed.Set(assignable, base.smi);
        }
コード例 #5
0
 public AssignStatement(Assignable to, Expression from)
 {
     To = to;
     From = from;
     To.Parent = this;
     From.Parent = this;
 }
コード例 #6
0
 private void SetWorkerDestination(Worker w, Assignable a)
 {
     if (w.SetDestination(a))
     {
         SelectionManager.GetInstance().Deselect(w.GetComponent <Selectable>());
     }
 }
コード例 #7
0
        private static bool ShouldTransfer(Assignable assignable, Equipment equipment)
        {
            var resume     = equipment?.GetTargetGameObject()?.GetComponent <MinionResume>();
            var durability = assignable?.GetComponent <Durability>();

            return(durability != null && durability.IsTrueWornOut(resume));
        }
コード例 #8
0
 public AssignStatement(Assignable to, Expression from)
 {
     To          = to;
     From        = from;
     To.Parent   = this;
     From.Parent = this;
 }
    public void FindAvailableMedicalBed(Navigator navigator)
    {
        Clinic                 clinic    = null;
        AssignableSlot         clinic2   = Db.Get().AssignableSlots.Clinic;
        Ownables               soleOwner = gameObject.GetComponent <MinionIdentity>().GetSoleOwner();
        AssignableSlotInstance slot      = soleOwner.GetSlot(clinic2);

        if ((UnityEngine.Object)slot.assignable == (UnityEngine.Object)null)
        {
            Assignable assignable = soleOwner.AutoAssignSlot(clinic2);
            if ((UnityEngine.Object)assignable != (UnityEngine.Object)null)
            {
                clinic = assignable.GetComponent <Clinic>();
            }
        }
        else
        {
            clinic = slot.assignable.GetComponent <Clinic>();
        }
        if ((UnityEngine.Object)clinic != (UnityEngine.Object)null && navigator.CanReach(clinic))
        {
            base.smi.sm.clinic.Set(clinic.gameObject, base.smi);
            base.smi.GoTo(base.smi.sm.incapacitation_root.rescue.waitingForPickup);
        }
    }
コード例 #10
0
    public void OnLoadDependencies(object savedData)
    {
        var data       = (Dictionary <string, object>)savedData;
        var houseIndex = (int?)data["house"];

        House            = houseIndex.HasValue ? SaveManager.GetInstance().FindLoadedInstanceBySaveIndex(houseIndex.Value).GetComponent <Housing>() : null;
        assignedLocation = (int)data["assignedLocation"] == -1 ? null : SaveManager.GetInstance().FindLoadedInstanceBySaveIndex((int)data["assignedLocation"]).GetComponent <Assignable>();
    }
コード例 #11
0
            private static void TryTransfer(Assignable assignable, SuitLocker.ReturnSuitWorkable workable, Equipment equipment)
            {
                var storage = workable?.GetComponent <Storage>();

                if (ShouldTransfer(assignable, equipment))
                {
                    Transfer(assignable, storage);
                }
            }
コード例 #12
0
 public void SetDestination(Vector3 destination)
 {
     if (assignedLocation != null)
     {
         assignedLocation.RemoveWorker(this);
         assignedLocation = null;
     }
     SetWalkerDestination(destination);
 }
コード例 #13
0
 public void Assign(Assignable assignable)
 {
     if (!((Object)this.assignable == (Object)assignable))
     {
         Unassign(false);
         this.assignable = assignable;
         assignables.Trigger(-1585839766, this);
     }
 }
コード例 #14
0
        /// <summary>
        /// Determines if an expression of the source type can be assigned to a parameter or other input of the target type.
        /// </summary>
        /// <param name="sourceType">The source type.</param>
        /// <param name="targetType">The target type.</param>
        /// <param name="allowedCasts">Indicates what type of cast may be permitted.</param>
        /// <param name="priority">The priority.</param>
        /// <returns></returns>
        internal static Assignable IsAssignable(ExprType sourceType, ExprType targetType, CastType allowedCasts, out int priority)
        {
            priority = 0;

            // Target requires a literal
            if (targetType.Constant && !sourceType.Constant)
            {
                return(Assignable.No);
            }

            Assignable result = Assignable.Yes;

            // IsList mismatch
            if (sourceType.IsList && targetType.DisallowList)
            {
                return(Assignable.No);
            }

            // Entity type
            if (sourceType.EntityTypeId != targetType.EntityTypeId)
            {
                result = Assignable.RequiresCast;
            }

            // Exact match of type
            if (sourceType.Type == targetType.Type)
            {
                return(result);
            }

            if (sourceType.Type == DataType.None)
            {
                return(Assignable.RequiresCast);
            }

            // Check cast
            result   = Assignable.No;
            priority = int.MaxValue;
            foreach (var cast in LanguageManager.Instance.Casts)
            {
                if (cast.FromType != sourceType.Type || cast.ToType != targetType.Type)
                {
                    continue;
                }

                // Check if we can do this cast
                // (Implicit casts can implicitly be used as explicit casts)
                if (cast.CastType == CastType.Implicit && allowedCasts == CastType.Implicit || allowedCasts == CastType.Explicit)
                {
                    priority = Math.Min(priority, cast.Priority);
                    result   = Assignable.RequiresCast;
                }
            }
            return(result);
        }
コード例 #15
0
 public override void ClearTarget()
 {
     if (targetAssignableSubscriptionHandle != -1 && (UnityEngine.Object)targetAssignable != (UnityEngine.Object)null)
     {
         targetAssignable.Unsubscribe(targetAssignableSubscriptionHandle);
         targetAssignableSubscriptionHandle = -1;
     }
     targetAssignable = null;
     Components.LiveMinionIdentities.OnAdd    -= OnMinionIdentitiesChanged;
     Components.LiveMinionIdentities.OnRemove -= OnMinionIdentitiesChanged;
     base.ClearTarget();
 }
コード例 #16
0
ファイル: SQLLoaderTest.cs プロジェクト: renefc3/nhibernate
        public void FindBySQLMultipleObject()
        {
            ISession s = OpenSession();

            Category c = new Category();

            c.Name = "NAME";
            Assignable assn = new Assignable();

            assn.Id = "i.d.";
            IList l = new ArrayList();

            l.Add(c);
            assn.Categories = l;
            c.Assignable    = assn;
            s.Save(assn);
            s.Flush();

            c       = new Category();
            c.Name  = "NAME2";
            assn    = new Assignable();
            assn.Id = "i.d.2";
            l       = new ArrayList();
            l.Add(c);
            assn.Categories = l;
            c.Assignable    = assn;
            s.Save(assn);
            s.Flush();

            assn    = new Assignable();
            assn.Id = "i.d.3";
            s.Save(assn);
            s.Flush();
            s.Close();

            s = OpenSession();

            if (!(Dialect is MySQLDialect))
            {
                IList list =
                    s.CreateSQLQuery("select {category.*}, {assignable.*} from Category {category}, \"assign able\" {assignable}")
                    .AddEntity("category", typeof(Category))
                    .AddEntity("assignable", typeof(Assignable))
                    .List();
                Assert.AreEqual(6, list.Count, "Count differs");                 // cross-product of 2 categories x 3 assignables;
                Assert.IsTrue(list[0] is object[]);
            }

            s.Delete("from Assignable");
            s.Delete("from Category");
            s.Flush();
            s.Close();
        }
コード例 #17
0
ファイル: ReadAssignableTests.cs プロジェクト: amenkes/sniper
 public void CreateAssignableThrowsError()
 {
     var client = new TargetProcessClient
     {
         ApiSiteInfo = new ApiSiteInfo(TargetProcessRoutes.Route.Assignables)
     };
     var assignable = new Assignable
     {
         //EntityState = new EntityState { Name = "Some Entity state"}
     };
     var data = client.CreateData <Assignable>(assignable);
 }
コード例 #18
0
        public async Task FindBySQLMultipleObjectAsync()
        {
            ISession s = OpenSession();

            Category c = new Category();

            c.Name = "NAME";
            Assignable assn = new Assignable();

            assn.Id         = "i.d.";
            assn.Categories = new List <Category> {
                c
            };
            c.Assignable = assn;
            await(s.SaveAsync(assn));
            await(s.FlushAsync());

            c               = new Category();
            c.Name          = "NAME2";
            assn            = new Assignable();
            assn.Id         = "i.d.2";
            assn.Categories = new List <Category> {
                c
            };
            c.Assignable = assn;
            await(s.SaveAsync(assn));
            await(s.FlushAsync());

            assn    = new Assignable();
            assn.Id = "i.d.3";
            await(s.SaveAsync(assn));
            await(s.FlushAsync());
            s.Close();

            s = OpenSession();

            if (!(Dialect is MySQLDialect))
            {
                IList list =
                    await(s.CreateSQLQuery("select {category.*}, {assignable.*} from Category {category}, \"assign able\" {assignable}")
                          .AddEntity("category", typeof(Category))
                          .AddEntity("assignable", typeof(Assignable))
                          .ListAsync());
                Assert.AreEqual(6, list.Count, "Count differs");                 // cross-product of 2 categories x 3 assignables;
                Assert.IsTrue(list[0] is object[]);
            }

            await(s.DeleteAsync("from Assignable"));
            await(s.DeleteAsync("from Category"));
            await(s.FlushAsync());
            s.Close();
        }
        public void RemoveSuitIfNecessary()
        {
            Equipment equipment = base.sm.recoverer.Get <Equipment>(base.smi);

            if (!((UnityEngine.Object)equipment == (UnityEngine.Object)null))
            {
                Assignable assignable = equipment.GetAssignable(Db.Get().AssignableSlots.Suit);
                if (!((UnityEngine.Object)assignable == (UnityEngine.Object)null))
                {
                    assignable.Unassign();
                }
            }
        }
コード例 #20
0
 public virtual void Unassign(bool trigger_event = true)
 {
     if (!unassigning && IsAssigned())
     {
         unassigning = true;
         assignable.Unassign();
         if (trigger_event)
         {
             assignables.Trigger(-1585839766, this);
         }
         assignable  = null;
         unassigning = false;
     }
 }
コード例 #21
0
 public bool SetDestination(Assignable assignment)
 {
     if (assignment == null || assignment.AddWorker(this))
     {
         if (assignedLocation != null && assignedLocation != assignment)
         {
             assignedLocation.RemoveWorker(this);
         }
         assignedLocation = assignment;
         SetWalkerDestination(assignment == null ? null : (Vector3?)assignment.GetSpotForWorker(this).position);
         return(true);
     }
     return(false);
 }
コード例 #22
0
        public void UpdateMessStation()
        {
            Ownables          soleOwner            = base.sm.eater.Get(base.smi).GetComponent <MinionIdentity>().GetSoleOwner();
            List <Assignable> preferredAssignables = Game.Instance.assignmentManager.GetPreferredAssignables(soleOwner, Db.Get().AssignableSlots.MessStation);

            if (preferredAssignables.Count == 0)
            {
                soleOwner.AutoAssignSlot(Db.Get().AssignableSlots.MessStation);
                preferredAssignables = Game.Instance.assignmentManager.GetPreferredAssignables(soleOwner, Db.Get().AssignableSlots.MessStation);
            }
            Assignable value = (preferredAssignables.Count <= 0) ? null : preferredAssignables[0];

            base.smi.sm.messstation.Set(value, base.smi);
        }
コード例 #23
0
        public async Task QueuedBagAddsAsync()
        {
            ISession   s = OpenSession();
            Assignable a = new Assignable();

            a.Id         = "foo";
            a.Categories = new List <Category>();
            Category c = new Category();

            c.Assignable = a;
            a.Categories.Add(c);
            await(s.SaveAsync(a));
            await(s.FlushAsync());
            s.Close();

            await(Sfi.EvictCollectionAsync("NHibernate.DomainModel.Assignable.Categories"));

            s            = OpenSession();
            a            = (Assignable)await(s.GetAsync(typeof(Assignable), "foo"));
            c            = new Category();
            c.Assignable = a;
            a.Categories.Add(c);
            Assert.IsFalse(NHibernateUtil.IsInitialized(a.Categories));
            Assert.AreEqual(2, a.Categories.Count);
            await(s.FlushAsync());
            s.Close();

            await(Sfi.EvictCollectionAsync("NHibernate.DomainModel.Assignable.Categories"));

            s            = OpenSession();
            a            = (Assignable)await(s.GetAsync(typeof(Assignable), "foo"));
            c            = new Category();
            c.Assignable = a;
            a.Categories.Add(c);
            Assert.IsFalse(NHibernateUtil.IsInitialized(a.Categories));
            await(s.FlushAsync());
            Assert.IsFalse(NHibernateUtil.IsInitialized(a.Categories));
            Assert.AreEqual(3, a.Categories.Count);
            s.Close();

            await(Sfi.EvictCollectionAsync("NHibernate.DomainModel.Assignable.Categories"));

            s = OpenSession();
            a = (Assignable)await(s.GetAsync(typeof(Assignable), "foo"));
            Assert.AreEqual(3, a.Categories.Count);
            await(s.DeleteAsync(a));
            await(s.FlushAsync());
            s.Close();
        }
コード例 #24
0
        public void QueuedBagAdds()
        {
            ISession   s = OpenSession();
            Assignable a = new Assignable();

            a.Id         = "foo";
            a.Categories = new ArrayList();
            Category c = new Category();

            c.Assignable = a;
            a.Categories.Add(c);
            s.Save(a);
            s.Flush();
            s.Close();

            sessions.EvictCollection("NHibernate.DomainModel.Assignable.Categories");

            s            = OpenSession();
            a            = (Assignable)s.Get(typeof(Assignable), "foo");
            c            = new Category();
            c.Assignable = a;
            a.Categories.Add(c);
            Assert.IsFalse(NHibernateUtil.IsInitialized(a.Categories));
            Assert.AreEqual(2, a.Categories.Count);
            s.Flush();
            s.Close();

            sessions.EvictCollection("NHibernate.DomainModel.Assignable.Categories");

            s            = OpenSession();
            a            = (Assignable)s.Get(typeof(Assignable), "foo");
            c            = new Category();
            c.Assignable = a;
            a.Categories.Add(c);
            Assert.IsFalse(NHibernateUtil.IsInitialized(a.Categories));
            s.Flush();
            Assert.IsFalse(NHibernateUtil.IsInitialized(a.Categories));
            Assert.AreEqual(3, a.Categories.Count);
            s.Close();

            sessions.EvictCollection("NHibernate.DomainModel.Assignable.Categories");

            s = OpenSession();
            a = (Assignable)s.Get(typeof(Assignable), "foo");
            Assert.AreEqual(3, a.Categories.Count);
            s.Delete(a);
            s.Flush();
            s.Close();
        }
コード例 #25
0
        public void CreateAssignableThrowsError()
        {
            var client = CommonMethods.GetClientByRoute(TargetProcessRoutes.Route.Assignables);

            var assignable = new Assignable();
            var data       = client.CreateData <Assignable>(assignable);

            Assert.NotNull(data);
            Assert.True(data.HttpResponse.IsError);
            Assert.Equal(data.HttpResponse.Exception.GetType(), typeof(SniperExceptions.RequiredPropertyException));

            var exception = (SniperExceptions.RequiredPropertyException)data.HttpResponse.Exception;

            Assert.Equal(exception.RequiredDataResponse.Message, CrudMessages.CreateProhibited);
        }
コード例 #26
0
    /// <summary>
    /// Init class method.
    /// </summary>
    private void Init()
    {
        if (_assignable == null)
        {
            switch (slotType)                       // TODO: Add get assignable for weapons.
            {
            case Slot.Type.item:
                _assignable = GetComponent <Assignable>();
                break;

            default:
                break;
            }
        }
    }
コード例 #27
0
 private void UnassignKPrefabIDs(Room room, List <KPrefabID> list)
 {
     foreach (KPrefabID item in list)
     {
         if (!((UnityEngine.Object)item == (UnityEngine.Object)null))
         {
             item.Trigger(144050788, null);
             Assignable component = item.GetComponent <Assignable>();
             if ((UnityEngine.Object)component != (UnityEngine.Object)null && component.assignee == room)
             {
                 component.Unassign();
             }
         }
     }
 }
コード例 #28
0
 private static void Transfer(Assignable assignable, Storage lockerStorage)
 {
     if (assignable != null && lockerStorage != null)
     {
         var suitStorage = assignable.GetComponent <Storage>();
         var suitTank    = assignable.GetComponent <SuitTank>();
         if (suitStorage != null && suitTank != null)
         {
             suitStorage.Transfer(lockerStorage, suitTank.elementTag, suitTank.capacity, false, true);
         }
         var jetSuitTank = assignable.GetComponent <JetSuitTank>();
         if (jetSuitTank != null && lockerStorage.HasTag(JetSuitLockerConfig.ID))
         {
             lockerStorage.AddLiquid(SimHashes.Petroleum, jetSuitTank.amount, assignable.GetComponent <PrimaryElement>().Temperature, byte.MaxValue, 0, false, true);
             jetSuitTank.amount = 0f;
         }
     }
 }
コード例 #29
0
ファイル: SQLLoaderTest.cs プロジェクト: renefc3/nhibernate
        public void NamedSQLQuery()
        {
            if (Dialect is MySQLDialect)
            {
                return;
            }

            ISession s = OpenSession();

            Category c = new Category();

            c.Name = "NAME";
            Assignable assn = new Assignable();

            assn.Id = "i.d.";
            IList l = new ArrayList();

            l.Add(c);
            assn.Categories = l;
            c.Assignable    = assn;
            s.Save(assn);
            s.Flush();
            s.Close();

            s = OpenSession();
            IQuery q = s.GetNamedQuery("namedsql");

            Assert.IsNotNull(q, "should have found 'namedsql'");
            IList list = q.List();

            Assert.IsNotNull(list, "executing query returns list");

            object[] values = list[0] as object[];
            Assert.IsNotNull(values[0], "index 0 should not be null");
            Assert.IsNotNull(values[1], "index 1 should not be null");

            Assert.AreEqual(typeof(Category), values[0].GetType(), "should be a Category");
            Assert.AreEqual(typeof(Assignable), values[1].GetType(), "should be Assignable");
            s.Delete("from Category");
            s.Delete("from Assignable");
            s.Flush();
            s.Close();
        }
コード例 #30
0
    protected override void OnSpawn()
    {
        base.OnSpawn();
        storage    = GetComponent <Storage>();
        assignable = GetComponent <Assignable>();
        assignable.AddAssignPrecondition(CanAssignTo);
        base.smi.StartSM();
        int cell = Grid.PosToCell(base.gameObject);

        partitionerEntry = GameScenePartitioner.Instance.Add("CommandModule.gantryChanged", base.gameObject, cell, GameScenePartitioner.Instance.validNavCellChangedLayer, OnGantryChanged);
        OnGantryChanged(null);
        RocketModule component = GetComponent <RocketModule>();

        reachable         = (ConditionDestinationReachable)component.AddLaunchCondition(new ConditionDestinationReachable(this));
        hasAstronaut      = (ConditionHasAstronaut)component.AddLaunchCondition(new ConditionHasAstronaut(this));
        hasSuit           = (ConditionHasAtmoSuit)component.AddLaunchCondition(new ConditionHasAtmoSuit(this));
        cargoEmpty        = (CargoBayIsEmpty)component.AddLaunchCondition(new CargoBayIsEmpty(this));
        destHasResources  = (ConditionHasMinimumMass)component.AddLaunchCondition(new ConditionHasMinimumMass(this));
        flightPathIsClear = (ConditionFlightPathIsClear)component.AddFlightCondition(new ConditionFlightPathIsClear(base.gameObject, 1));
    }
コード例 #31
0
    private void AssignBuildingsToRoom(Room room)
    {
        Debug.Assert(room != null);
        RoomType roomType = room.roomType;

        if (roomType != Db.Get().RoomTypes.Neutral)
        {
            foreach (KPrefabID building in room.buildings)
            {
                if (!((UnityEngine.Object)building == (UnityEngine.Object)null) && !building.HasTag(GameTags.NotRoomAssignable))
                {
                    Assignable component = building.GetComponent <Assignable>();
                    if ((UnityEngine.Object)component != (UnityEngine.Object)null && (roomType.primary_constraint == null || !roomType.primary_constraint.building_criteria(building.GetComponent <KPrefabID>())))
                    {
                        component.Assign(room);
                    }
                }
            }
        }
    }