public int GetBytesNeededFor(ScreenObjectType objType) { // If there is not an enemy data marker, one may need to be created: 1 byte int bytesForFD = HasEnemyDataSegment ? 0 : 1; // If room is empty, we have to factor in mem needed for DefaultColorAttribute and FF terminator int bytesForHeaderFooter = (Size > 0) ? 0 : 2; switch (objType) { case ScreenObjectType.Struct: // 3 bytes for obj return(bytesForHeaderFooter + 3); case ScreenObjectType.Enemy: // 3 bytes for enemy data return(bytesForHeaderFooter + bytesForFD + 3); case ScreenObjectType.Door: // 2 bytes for door data return(bytesForHeaderFooter + bytesForFD + 2); case ScreenObjectType.Bridge: // 1 byte for bridge data return(bytesForHeaderFooter + bytesForFD + 1); default: throw new ArgumentException("Invalid object type."); } }
internal void AddScreenObjects(ScreenObjectType type, int numObjects, bool hasMovement) { ICGEScreenObject tmp; for (int i = 1; i <= numObjects; i++) { switch (type) { case ScreenObjectType.Bat: tmp = new CGEScreenObjectBat(SelectedBackground); break; default: tmp = new CGEScreenObjectTree(SelectedBackground); break; } if (tmp != null) { tmp.HasMovement = hasMovement; AddScreenObject(tmp); } } }