Esempio n. 1
0
        public Creature(ObjectType objType)
            : base(objType)
        {
            this.Position = new Position();
            this.LastUpdate = Globals.GetTime();

            this.PositionsToMove = new List<Position>();
        }
Esempio n. 2
0
        public GameObject(ObjectType objType)
        {
            this.ObjType = objType;

            if (!GObjectManager.Instance.Create(this))
            {
                ConsoleUtils.ShowError("Failed to get a handle to game object. Type: {0}", objType);
            }
        }
Esempio n. 3
0
		string ObjectReference_ResolveObjectName(Guid objectUID, ObjectType objectType)
		{
			if (objectUID == Guid.Empty)
				return "Null";
			switch (objectType)
			{
				case ObjectType.Device:
					var device = GKManager.DeviceConfiguration.Devices.FirstOrDefault(x => x.UID == objectUID);
					if (device != null)
						return device.PresentationName;
					break;
				case ObjectType.Zone:
					var zone = GKManager.DeviceConfiguration.Zones.FirstOrDefault(x => x.UID == objectUID);
					if (zone != null)
						return zone.PresentationName;
					break;
				case ObjectType.Direction:
					var direction = GKManager.DeviceConfiguration.Directions.FirstOrDefault(x => x.UID == objectUID);
					if (direction != null)
						return direction.PresentationName;
					break;
				case ObjectType.Delay:
					var delay = GKManager.DeviceConfiguration.Delays.FirstOrDefault(x => x.UID == objectUID);
					if (delay != null)
						return delay.PresentationName;
					break;
				case ObjectType.GuardZone:
					var guardZone = GKManager.DeviceConfiguration.GuardZones.FirstOrDefault(x => x.UID == objectUID);
					if (guardZone != null)
						return guardZone.PresentationName;
					break;
				case ObjectType.PumpStation:
					var pumpStation = GKManager.DeviceConfiguration.PumpStations.FirstOrDefault(x => x.UID == objectUID);
					if (pumpStation != null)
						return pumpStation.PresentationName;
					break;
				case ObjectType.MPT:
					var mpt = GKManager.DeviceConfiguration.MPTs.FirstOrDefault(x => x.UID == objectUID);
					if (mpt != null)
						return mpt.PresentationName;
					break;
				case ObjectType.VideoDevice:
					var camera = ProcedureExecutionContext.SystemConfiguration.Cameras.FirstOrDefault(x => x.UID == objectUID);
					if (camera != null)
						return camera.PresentationName;
					break;
				case ObjectType.GKDoor:
					var gKDoor = GKManager.Doors.FirstOrDefault(x => x.UID == objectUID);
					if (gKDoor != null)
						return gKDoor.PresentationName;
					break;
				case ObjectType.Organisation:
					var organisation = RubezhClient.SKDHelpers.OrganisationHelper.GetSingle(objectUID);
					if (organisation != null)
						return organisation.Name;
					break;
			}
			return "Null";
		}
Esempio n. 4
0
		object ExplicitValue_ResolveObjectValue(Guid objectUID, ObjectType objectType)
		{
			if (objectUID == Guid.Empty)
				return null;
			switch (objectType)
			{
				case ObjectType.Device: return GKManager.DeviceConfiguration.Devices.FirstOrDefault(x => x.UID == objectUID);
				case ObjectType.Zone: return GKManager.DeviceConfiguration.Zones.FirstOrDefault(x => x.UID == objectUID);
				case ObjectType.Direction: return GKManager.DeviceConfiguration.Directions.FirstOrDefault(x => x.UID == objectUID);
				case ObjectType.Delay: return GKManager.DeviceConfiguration.Delays.FirstOrDefault(x => x.UID == objectUID);
				case ObjectType.GuardZone: return GKManager.DeviceConfiguration.GuardZones.FirstOrDefault(x => x.UID == objectUID);
				case ObjectType.PumpStation: return GKManager.DeviceConfiguration.PumpStations.FirstOrDefault(x => x.UID == objectUID);
				case ObjectType.MPT: return GKManager.DeviceConfiguration.MPTs.FirstOrDefault(x => x.UID == objectUID);
				case ObjectType.VideoDevice: return ProcedureExecutionContext.SystemConfiguration.Cameras.FirstOrDefault(x => x.UID == objectUID);
				case ObjectType.GKDoor: return GKManager.Doors.FirstOrDefault(x => x.UID == objectUID);
				case ObjectType.Organisation: return RubezhClient.SKDHelpers.OrganisationHelper.GetSingle(objectUID);
			}
			return null;
		}
Esempio n. 5
0
		IEnumerable<object> GetObjects(ObjectType objectType)
		{
			switch (objectType)
			{
				case ObjectType.Delay:
					return new List<GKDelay>(GKManager.DeviceConfiguration.Delays);
				case ObjectType.Device:
					return new List<GKDevice>(GKManager.DeviceConfiguration.Devices);
				case ObjectType.Direction:
					return new List<GKDirection>(GKManager.DeviceConfiguration.Directions);
				case ObjectType.GKDoor:
					return new List<GKDoor>(GKManager.DeviceConfiguration.Doors);
				case ObjectType.GuardZone:
					return new List<GKGuardZone>(GKManager.DeviceConfiguration.GuardZones);
				case ObjectType.VideoDevice:
					return new List<Camera>(ProcedureExecutionContext.SystemConfiguration.Cameras);
				case ObjectType.Zone:
					return new List<GKZone>(GKManager.DeviceConfiguration.Zones);
				case ObjectType.PumpStation:
					return new List<GKPumpStation>(GKManager.DeviceConfiguration.PumpStations);
				case ObjectType.MPT:
					return new List<GKMPT>(GKManager.DeviceConfiguration.MPTs);
				case ObjectType.Organisation:
					return new List<Organisation>(ProcedureExecutionContext.GetOrganisations(ClientUID));
			}
			return new List<object>();
		}
Esempio n. 6
0
 private List<int> getAllMainPartsIds(ObjectType Type)
 {
     List<int> result = new List<int>();
     foreach (var item in Result.Items.FindAll(x => x.ObjectType == Type))
     {
         result.Add(item.Id);
         result.AddRange(item.ServiceParts.Select(x => x.Id));
         result.AddRange(item.AddedWordsCase1.Select(x => x.Id));
         result.AddRange(item.AddedWordsCase2.Select(x => x.Id));
     }
     return result;
 }
Esempio n. 7
0
        private void findSP(List<int> allResultIds, PartOfSpeech PartOfSpeech, ObjectType type, List<int> excludeIds)
        {
            // из всех текущих id выбираем такие, которые являются заданным типом СЧР
            List<int> idsToAnalyze = new List<int>();
            foreach (var resultId in allResultIds)
            {
                if (_sentence.WordList.Exists(x => x.Id == resultId && x.PartOfSpeech.Value == PartOfSpeech.Value))
                    idsToAnalyze.Add(resultId);
            }

            foreach (var wordId in idsToAnalyze)
            {
                //ищем дочернее слово для СЧР
                List<SentenceWord> childWords = _sentence.WordList.FindAll(x => x.DOM == wordId && !excludeIds.Contains(x.Id));

                foreach (var childWord in childWords)
                {
                    // найдем в текущих результатах такой элемент, id которого либо равен исследуемому, либо в его ServiceParts присутствует исследуемый id - чтобы знать куда добавлять инфу
                    var resultItem = Result.Items.Find(x => x.Id == wordId);
                    if (resultItem == null)
                    {
                        foreach (var i in Result.Items)
                        {
                            if (i.ServiceParts.Concat(i.AddedWordsCase1).Concat(i.AddedWordsCase2).ToList().Exists(x => x.Id == wordId))
                                resultItem = i;
                        }
                    }

                    if (resultItem != null)
                    {
                        // если дочернего слова нет в списке предварительных элеметнов, то добавляем его вместо текущего элемента, присоединяя к нему СЧР с заданным типом СЧР
                        if (!allResultIds.Exists(x => x == childWord.Id))
                        {
                            Stage3ResultElement itemToAdd = new Stage3ResultElement();
                            itemToAdd.IsRestoredFromServicePart = true;
                            itemToAdd.CopyFromSourceWord(childWord);
                            itemToAdd.ObjectType = type;
                            List<SentenceWord> itemAddWords = itemToAdd.ServiceParts.Concat(itemToAdd.AddedWordsCase1).Concat(itemToAdd.AddedWordsCase2).ToList();
                            if (itemAddWords.Find(x => x.Id == wordId) == null)
                                itemToAdd.AddedWordsCase2.Add(_sentence.WordList.Find(x => x.Id == wordId));

                            itemAddWords = itemToAdd.ServiceParts.Concat(itemToAdd.AddedWordsCase1).Concat(itemToAdd.AddedWordsCase2).ToList();
                            if (itemAddWords.Find(x => x.Id == wordId) == null)
                                itemToAdd.AddedWordsCase2.Add(_sentence.WordList.Find(x => x.Id == resultItem.Id));

                            Result.Items.Remove(resultItem);

                            Result.Items.Add(itemToAdd);
                        }
                        // а если такое слово есть, то берем его и объединяем с СЧР, с заданным типом
                        else
                        {
                            List<SentenceWord> resultAddWords = resultItem.ServiceParts.Concat(resultItem.AddedWordsCase1).Concat(resultItem.AddedWordsCase2).ToList();

                            if (resultAddWords.Find(x => x.Id == wordId) == null && resultItem.Id != wordId)
                                resultItem.AddedWordsCase2.Add(_sentence.WordList.Find(x => x.Id == wordId));
                            Result.Items.RemoveAll(x => x.Id == wordId);
                        }
                    }
                    else
                        Debug.WriteLine("IPPI MainParts 583: resultItem == null, sentence " + allResultIds.ToString());

                    allResultIds = getAllMainPartsIds(type);
                }
            }
        }
Esempio n. 8
0
        private void findAdditionalMainPartWords(ObjectType Type)
        {
            bool allDone = false;

            while (!allDone)
            {
                List<SentenceWord> foundAdditionalItems = new List<SentenceWord>();
                foreach (var currentItem in Result.Items.FindAll(x => x.ObjectType == Type))
                {
                    foundAdditionalItems.AddRange(_sentence.WordList.FindAll(x => (x.DOM == currentItem.Id ||
                        currentItem.ServiceParts.Concat(currentItem.AddedWordsCase1).Concat(currentItem.AddedWordsCase2).ToList().FindAll(y => y.Id == x.DOM).Count > 0)
                        && (x.Link.Value == LinkType.Sochin.Value
                        || x.Link.Value == LinkType.SochSouz.Value)));
                }
                allDone = true;

                foreach (var addItem in foundAdditionalItems)
                {
                    Stage3ResultElement item = new Stage3ResultElement();
                    item.CopyFromSourceWord(addItem);
                    item.ObjectType = Type;
                    item.ObjectKind = ObjectKind.Additional;
                    if (!Result.Items.Exists(x => x.Id == addItem.Id))
                    {
                        Result.Items.Add(item);
                        allDone = false;
                    }
                }
            }
        }
Esempio n. 9
0
        /// <summary>
        /// Gets a GameObject by its handle and type
        /// </summary>
        /// <param name="type"></param>
        /// <param name="handle"></param>
        /// <returns></returns>
        public GameObject Get(ObjectType type, uint handle)
        {
            if (handle == 0) return null;

            switch (type)
            {
                case ObjectType.Player:
                    {
                        Player result;
                        if (Players.TryGetValue(handle, out result))
                            return result;
                        return null;
                    }
                case ObjectType.Npc:
                    {
                        Npc result;
                        if (Npcs.TryGetValue(handle, out result))
                            return result;
                        return null;
                    }
                case ObjectType.Item:
                    {
                        Item result;
                        if (Items.TryGetValue(handle, out result))
                            return result;
                        return null;
                    }
                case ObjectType.Mob:
                    {
                        Monster monster;
                        if (Monsters.TryGetValue(handle, out monster))
                            return monster;
                        return null;
                    }
                case ObjectType.Summon:
                    {
                        Summon summon;
                        if (Summons.TryGetValue(handle, out summon))
                            return summon;
                        return null;
                    }
                case ObjectType.SkillProp:
                    {
                        SkillProp skillProp;
                        if (SkillProps.TryGetValue(handle, out skillProp))
                            return skillProp;
                        return null;
                    }
                case ObjectType.FieldProp:
                    {
                        FieldProp fieldProp;
                        if (FieldProps.TryGetValue(handle, out fieldProp))
                            return fieldProp;
                        return null;
                    }
                case ObjectType.Pet:
                    {
                        Pet pet;
                        if (Pets.TryGetValue(handle, out pet))
                            return pet;
                        return null;
                    }
                default:
                    ConsoleUtils.ShowFatalError("Trying to Get invalid GameObject type ({0})", type);
                    break;
            }

            return null;
        }