/// <summary> /// Creates entity and assigns ID. /// </summary> public static CEntity Create(EType Type, CWorld World, int ID = 0) { CEntity entity = null; switch (Type) { case EType.UNIT: entity = new CUnit(); break; case EType.ITEM_START: entity = new CItemStart(); break; case EType.ITEM_DECO: entity = new CItemDeco(); break; case EType.ITEM_DESK: entity = new CItemDesk(); break; case EType.ITEM_SAFE: entity = new CItemSafe(); break; case EType.ITEM_REST: entity = new CItemRest(); break; case EType.ITEM_FOOD: entity = new CItemFood(); break; case EType.ITEM_DOOR: entity = new CItemDoor(); break; case EType.RESUME: entity = new CResume(); break; case EType.CONTRACT: entity = new CContract(); break; case EType.PICKUP: entity = new CPickup(); break; case EType.MISSILE: entity = new CMissile(); break; case EType.VOLUME: entity = new CVolume(); break; case EType.DECAL: entity = new CDecal(); break; } if (entity != null) { _InitNewEntity(entity, World, ID); } else { Debug.LogError("Entity Factory couldn't create a " + (int)Type + " is"); } return(entity); }
public void UpdateState(CItem Item) { if (!mBlueprint) { mDurability = Item.mDurability; mMaxDurability = Item.mMaxDurability; if (Item.mType == CEntity.EType.ITEM_DOOR) { CItemDoor door = (CItemDoor)Item; mDoorPosition = door.mAngle; if (mPlayerID == mOwnerID) { door.mLocked = mLocked; } else if (mWorld.IsAllied(mPlayerID, mOwnerID)) { if (mLocked != door.mLocked) { SetDoorLock(door.mLocked); } } } else if (Item.mType == CEntity.EType.ITEM_START) { mDoorPosition = ((CItemStart)Item).mDoorPosition; } else if (Item.mType == CEntity.EType.ITEM_DESK) { mUserID = ((CItemDesk)Item).mUserID; mCompletedPaperStacks = ((CItemDesk)Item).mCompletedStacks.Count; mMaxCompletedPapers = ((CItemDesk)Item).mMaxCompletedPapers; } else if (Item.mType == CEntity.EType.ITEM_SAFE) { mValue = ((CItemSafe)Item).mValue; } // TODO: Update State is only called when the item is visible. We need to update queue tokens every tick. UpdateQueueTokens(); } }