public Creature(ObjectType objType) : base(objType) { this.Position = new Position(); this.LastUpdate = Globals.GetTime(); this.PositionsToMove = new List<Position>(); }
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); } }
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"; }
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; }
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>(); }
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; }
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); } } }
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; } } } }
/// <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; }