Пример #1
0
    protected override DNABit produceDNABit()
    {
        LinkedList <BioBrick> deviceBricks = new LinkedList <BioBrick>();

        string[] bricks = new string[] { promoterName, rbsName, geneName, terminatorName };

        foreach (string brickName in bricks)
        {
            BioBrick brick = AvailableBioBricksManager.get().getBioBrickFromAll(brickName);
            if (brick != null)
            {
                deviceBricks.AddLast(brick);
            }
            else
            {
                Logger.Log("PickableDeviceRef4Bricks::produceDNABit failed to add brick with name " + brickName + "!", Logger.Level.WARN);
            }
        }

        if (ExpressionModule.isBioBricksSequenceValid(deviceBricks))
        {
            ExpressionModule deviceModule = new ExpressionModule(deviceName, deviceBricks);
            LinkedList <ExpressionModule> deviceModules = new LinkedList <ExpressionModule>();
            deviceModules.AddLast(deviceModule);
            Device result = Device.buildDevice(deviceName, deviceModules);
            return(result);
        }
        else
        {
            Logger.Log("PickableDeviceRef4Bricks::produceDNABit failed to produce DNABit - BioBrick sequence is incorrect: list=" + Logger.ToString <BioBrick>(deviceBricks), Logger.Level.WARN);
            return(null);
        }
    }
Пример #2
0
    public bool addAvailableBioBrick(BioBrick brick, bool updateView = true)
    {
        Logger.Log("AvailableBioBricksManager::addAvailableBioBrick(" + brick + ")", Logger.Level.INFO);
        string bbName = brick.getName();

        if ((null != brick) &&
            (null == LinkedListExtensions.Find <BioBrick>(
                 _availableBioBricks
                 , b => b.getName() == bbName
                 , false
                 , " AvailableBioBricksManager::addAvailableBioBrick(" + brick + ", " + updateView + ")"
                 )
            ))
        // TODO deeper safety check
        // && !LinkedListExtensions.Find<BioBrick>(_availableBioBricks, b => b..Equals(brick), true, " AvailableBioBricksManager::addAvailableBioBrick("+brick+", "+updateView+")")
        {
            Logger.Log("AvailableBioBricksManager::addAvailableBioBrick(" + brick + ") will _availableBioBricks.AddLast(" + brick + ")", Logger.Level.INFO);

            _availableBioBricks.AddLast(brick);
            if (updateView)
            {
                updateDisplayedBioBricks();
            }
            return(true);
        }
        else
        {
            Logger.Log("AvailableBioBricksManager::addAvailableBioBrick(" + brick + ") fail", Logger.Level.INFO);
            return(false);
        }
    }
  public static CraftZoneDisplayedBioBrick Create(
   Transform parentTransform,
   Vector3 localPosition,
   string spriteName,
   BioBrick biobrick
   )
  {
    string nullSpriteName = (spriteName!=null)?"":"(null)";
    Object prefab = Resources.Load(_prefabURICraftZone);

    Logger.Log("CraftZoneDisplayedBioBrick::Create(parentTransform="+parentTransform
      + ", localPosition="+localPosition
      + ", spriteName="+spriteName+nullSpriteName
      + ", biobrick="+biobrick
      , Logger.Level.DEBUG
      );

    CraftZoneDisplayedBioBrick result = (CraftZoneDisplayedBioBrick)DisplayedBioBrick.Create(
      parentTransform
      ,localPosition
      ,spriteName
      ,biobrick
      ,prefab
      );

    return result;
 }
 public static GenericDisplayedBioBrick Create(
   Transform parentTransform
   ,Vector3 localPosition
   ,string spriteName
   ,BioBrick biobrick
   ,Object externalPrefab = null
   )
 {

    string usedSpriteName = ((spriteName!=null)&&(spriteName!=""))?spriteName:getSpriteName(biobrick);
    string nullSpriteName = ((spriteName!=null)&&(spriteName!=""))?"":"(null)=>"+usedSpriteName;

    if(genericPrefab == null) genericPrefab = Resources.Load(prefabURI);
    Object prefabToUse = (externalPrefab==null)?genericPrefab:externalPrefab;

    Logger.Log("GenericDisplayedBioBrick::Create(parentTransform="+parentTransform
      + ", localPosition="+localPosition
      + ", spriteName="+spriteName+nullSpriteName
      + ", biobrick="+biobrick
      , Logger.Level.TRACE
      );

    GenericDisplayedBioBrick result = (GenericDisplayedBioBrick)DisplayedElement.Create(
      parentTransform
      ,localPosition
      ,usedSpriteName
      ,prefabToUse
      );

    Initialize(result, biobrick);

    return result;
 }
Пример #5
0
    private AvailableDisplayedBioBrick getDisplayableAvailableBioBrick(BioBrick brick, int index)
    {
        Transform parentTransformParam = bioBricksPanel.transform;
        Vector3   localPositionParam   = getNewPosition(index);
        string    spriteNameParam      = AvailableDisplayedBioBrick.getSpriteName(brick);
        BioBrick  biobrickParam        = brick;

        Logger.Log("AvailableBioBricksManager::getDisplayableAvailableBioBrick(brick=" + brick + ", index=" + index + "),"
                   + ", parentTransformParam=" + parentTransformParam
                   + ", localPositionParam=" + localPositionParam
                   + " (width=" + _width + ")"
                   + ", spriteNameParam=" + spriteNameParam
                   + ", biobrickParam=" + biobrickParam
                   , Logger.Level.TRACE
                   );

        AvailableDisplayedBioBrick resultBrick = AvailableDisplayedBioBrick.Create(
            parentTransformParam
            , localPositionParam
            , spriteNameParam
            , biobrickParam
            );

        return(resultBrick);
    }
Пример #6
0
    private static int getIndex(BioBrick brick)
    {
        int idx;

        switch (brick.getType())
        {
        case BioBrick.Type.PROMOTER:
            idx = 0;
            break;

        case BioBrick.Type.RBS:
            idx = 1;
            break;

        case BioBrick.Type.GENE:
            idx = 2;
            break;

        case BioBrick.Type.TERMINATOR:
            idx = 3;
            break;

        default:
            idx = 0;
            Logger.Log("CraftZoneManager getIndex unknown type " + brick.getType(), Logger.Level.WARN);
            break;
        }
        return(idx);
    }
Пример #7
0
    public static GenericDisplayedBioBrick Create(
        Transform parentTransform
        , Vector3 localPosition
        , string spriteName
        , BioBrick biobrick
        , Object externalPrefab = null
        )
    {
        string usedSpriteName = ((spriteName != null) && (spriteName != ""))?spriteName:getSpriteName(biobrick);
        string nullSpriteName = ((spriteName != null) && (spriteName != ""))?"":"(null)=>" + usedSpriteName;

        if (genericPrefab == null)
        {
            genericPrefab = Resources.Load(prefabURI);
        }
        Object prefabToUse = (externalPrefab == null)?genericPrefab:externalPrefab;

        Logger.Log("GenericDisplayedBioBrick::Create(parentTransform=" + parentTransform
                   + ", localPosition=" + localPosition
                   + ", spriteName=" + spriteName + nullSpriteName
                   + ", biobrick=" + biobrick
                   , Logger.Level.TRACE
                   );

        GenericDisplayedBioBrick result = (GenericDisplayedBioBrick)DisplayedElement.Create(
            parentTransform
            , localPosition
            , usedSpriteName
            , prefabToUse
            );

        Initialize(result, biobrick);

        return(result);
    }
Пример #8
0
 private void reinitVars()
 {
     deviceName = null;
     device     = null;
     brick      = null;
     deviceBricks.Clear();
 }
Пример #9
0
 private void reinitVars()
 {
     deviceName = null;
     device = null;
     brick = null;
     deviceBricks.Clear();
 }
Пример #10
0
    public static AvailableDisplayedBioBrick Create(
        Transform parentTransform,
        Vector3 localPosition,
        string spriteName,
        BioBrick biobrick
        )
    {
        string nullSpriteName = (spriteName != null)?"":"(null)";
        Object prefab         = Resources.Load(_prefabURIAvailable);

        if (craftZoneManager == null)
        {
            craftZoneManager = CraftZoneManager.get();
        }

        Logger.Log("DisplayedBioBrick::Create(parentTransform=" + parentTransform
                   + ", localPosition=" + localPosition
                   + ", spriteName=" + spriteName + nullSpriteName
                   + ", biobrick=" + biobrick
                   , Logger.Level.DEBUG
                   );

        AvailableDisplayedBioBrick result = (AvailableDisplayedBioBrick)DisplayedBioBrick.Create(
            parentTransform
            , localPosition
            , spriteName
            , biobrick
            , prefab
            );

        return(result);
    }
Пример #11
0
 protected static void Initialize(
     GenericDisplayedBioBrick biobrickScript
     , BioBrick biobrick
     )
 {
     Logger.Log("GenericDisplayedBioBrick::Initialize(" + biobrickScript + ", " + biobrick + ") starts", Logger.Level.TRACE);
     biobrickScript._biobrick = biobrick;
 }
Пример #12
0
  protected static void Initialize(
    GenericDisplayedBioBrick biobrickScript
    ,BioBrick biobrick
  ) {

    Logger.Log("GenericDisplayedBioBrick::Initialize("+biobrickScript+", "+biobrick+") starts", Logger.Level.TRACE);
    biobrickScript._biobrick = biobrick;

  }
Пример #13
0
 protected static void Initialize(
     DisplayedBioBrick biobrickScript
     , BioBrick biobrick
     )
 {
     // Logger.Log("DisplayedBioBrick::Initialize("+biobrickScript+", "+biobrick+") starts", Logger.Level.TRACE);
     GenericDisplayedBioBrick.Initialize(biobrickScript, biobrick);
     biobrickScript._localize.key = GameplayNames.biobrickPrefix + biobrick.getName();
     Logger.Log("DisplayedBioBrick::Initialize ends with biobrickScript._lastHoveredInfoManager=" + biobrickScript._lastHoveredInfoManager, Logger.Level.TRACE);
 }
Пример #14
0
	protected static void Initialize(
		DisplayedBioBrick biobrickScript
		,BioBrick biobrick
		) {

		// Logger.Log("DisplayedBioBrick::Initialize("+biobrickScript+", "+biobrick+") starts", Logger.Level.TRACE);
		GenericDisplayedBioBrick.Initialize(biobrickScript, biobrick);
		biobrickScript._localize.key = GameplayNames.biobrickPrefix+biobrick.getName();
		Logger.Log("DisplayedBioBrick::Initialize ends with biobrickScript._lastHoveredInfoManager="+biobrickScript._lastHoveredInfoManager, Logger.Level.TRACE);

	}
Пример #15
0
    private void reinitVars()
    {
        bioBrickName = null;
        bioBrickSize = null;
        bioBrickType = null;

        beta = null;
        formula = null;
        rbsfactor = null;
        protein = null;
        terminatorfactor = null;

        bioBrick = null;
    }
Пример #16
0
    private void reinitVars()
    {
        bioBrickName = null;
        bioBrickSize = null;
        bioBrickType = null;

        beta             = null;
        formula          = null;
        rbsfactor        = null;
        protein          = null;
        terminatorfactor = null;

        bioBrick = null;
    }
Пример #17
0
  public static TinyBioBrickIcon Create(
    Transform parentTransform
    ,Vector3 localPosition
    ,string spriteName
    ,BioBrick biobrick
  )
  {
    TinyBioBrickIcon result = (TinyBioBrickIcon)GenericDisplayedBioBrick.Create(
      parentTransform
      , localPosition
      , spriteName
      , biobrick
      , genericPrefab
      );

    return result;
  }
Пример #18
0
    public static TinyBioBrickIcon Create(
        Transform parentTransform
        , Vector3 localPosition
        , string spriteName
        , BioBrick biobrick
        )
    {
        TinyBioBrickIcon result = (TinyBioBrickIcon)GenericDisplayedBioBrick.Create(
            parentTransform
            , localPosition
            , spriteName
            , biobrick
            , genericPrefab
            );

        return(result);
    }
Пример #19
0
    protected override void addTo()
    {
        BioBrick biobrick = _dnaBit as BioBrick;

        if (null == biobrick)
        {
            biobrick = produceDNABit() as BioBrick;
        }
        if (null == biobrick)
        {
            Logger.Log("PickableBioBrick::addTo() - failed to produce non-null dna bit", Logger.Level.WARN);
        }
        else
        {
            Logger.Log("PickableBioBrick::addTo " + _dnaBit, Logger.Level.INFO);
            AvailableBioBricksManager.get().addAvailableBioBrick(biobrick, false);
        }
    }
Пример #20
0
 private void insertOrdered(BioBrick toInsert)
 {
     foreach (BioBrick brick in _currentBioBricks)
     {
         if (brick.getType() > toInsert.getType())
         {
             LinkedListNode <BioBrick> afterNode = _currentBioBricks.Find(brick);
             _currentBioBricks.AddBefore(afterNode, toInsert);
             return;
         }
         else if (brick.getType() == toInsert.getType())
         {
             LinkedListNode <BioBrick> toReplaceNode = _currentBioBricks.Find(brick);
             _currentBioBricks.AddAfter(toReplaceNode, toInsert);
             _currentBioBricks.Remove(brick);
             return;
         }
     }
     _currentBioBricks.AddLast(toInsert);
 }
Пример #21
0
    public override bool Equals(System.Object obj)
    {
        if (obj == null)
        {
            return(false);
        }

        BioBrick b = obj as BioBrick;

        if ((System.Object)b == null)
        {
            return(false);
        }

        bool result;

        //check type, name, length
        result = (this._type == b._type) && (this._name == b._name) && (this._size == b._size);

        return(result);
    }
Пример #22
0
    public BioBrick getBioBrickFromAll(string brickName)
    {
        Logger.Log("AvailableBioBricksManager::getBioBrickFromAll", Logger.Level.DEBUG);

        BioBrick brick = LinkedListExtensions.Find <BioBrick>(
            getAllBioBricks()
            , b => (b.getName() == brickName)
            , false
            , "AvailableBioBricksManager::getBioBrickFromAll(" + brickName + ")"
            );

        if (brick != null)
        {
            Logger.Log("AvailableBioBricksManager::getBioBrickFromAll found " + brick, Logger.Level.TRACE);
            return(brick);
        }
        else
        {
            Logger.Log("AvailableBioBricksManager::getBioBrickFromAll failed to find brick with name " + brickName + "!", Logger.Level.WARN);
            return(null);
        }
    }
Пример #23
0
    // Searches for a brick from its name in available BioBricks
    //  If it succeeds, adds brick to deviceBricks and returns true
    //  If it fails, searches for it in all the known BioBricks
    //      If it succeeds, adds brick to available BioBricks list and does previous success treatment
    //      If it fails, returns false
    private bool processBrick(string brickName, string filePath = "")
    {
        Logger.Log("DeviceLoader::loadDevicesFromFile brick name " + brickName, Logger.Level.TRACE);
        //"warn" parameter is true to indicate that there is no such BioBrick
        //as the one mentioned in the xml file of the device
        brick = LinkedListExtensions.Find<BioBrick>(_availableBioBricks
                                                    , b => (b.getName() == brickName)
                                                    , true
                                                    , " DeviceLoader::loadDevicesFromFile(" + filePath + ")"
                                                        );

        if (brick == null)
        {
            brick = LinkedListExtensions.Find<BioBrick>(_allBioBricks
                                                        , b => (b.getName() == brickName)
                                                        , true
                                                        , " DeviceLoader::loadDevicesFromFile(" + filePath + ")"
                                                            );
            if (brick != null)
            {
                Logger.Log("DeviceLoader::loadDevicesFromFile successfully added brick " + brick, Logger.Level.TRACE);
                AvailableBioBricksManager.get().addAvailableBioBrick(brick);
            }
        }
        if (brick != null)
        {
            Logger.Log("DeviceLoader::loadDevicesFromFile successfully added brick " + brick, Logger.Level.TRACE);
            deviceBricks.AddLast(brick);
            return true;
        }
        else
        {
            Logger.Log("DeviceLoader::loadDevicesFromFile failed to add brick with name " + brickName + "!", Logger.Level.WARN);
            return false;
        }
    }
Пример #24
0
 private static int getIndex(BioBrick brick)
 {
   int idx;
   switch(brick.getType())
     {
       case BioBrick.Type.PROMOTER:
         idx = 0;
         break;
       case BioBrick.Type.RBS:
         idx = 1;
         break;
       case BioBrick.Type.GENE:
         idx = 2;
         break;
       case BioBrick.Type.TERMINATOR:
         idx = 3;
         break;
     default:
       idx = 0;
       Logger.Log("CraftZoneManager getIndex unknown type "+brick.getType(), Logger.Level.WARN);
       break;
     }
   return idx;
 }
Пример #25
0
    // Searches for a brick from its name in available BioBricks
    //  If it succeeds, adds brick to deviceBricks and returns true
    //  If it fails, searches for it in all the known BioBricks
    //      If it succeeds, adds brick to available BioBricks list and does previous success treatment
    //      If it fails, returns false
    private bool processBrick(string brickName, string filePath = "")
    {
        Logger.Log("DeviceLoader::loadDevicesFromFile brick name " + brickName, Logger.Level.TRACE);
        //"warn" parameter is true to indicate that there is no such BioBrick
        //as the one mentioned in the xml file of the device
        brick = LinkedListExtensions.Find <BioBrick>(_availableBioBricks
                                                     , b => (b.getName() == brickName)
                                                     , true
                                                     , " DeviceLoader::loadDevicesFromFile(" + filePath + ")"
                                                     );

        if (brick == null)
        {
            brick = LinkedListExtensions.Find <BioBrick>(_allBioBricks
                                                         , b => (b.getName() == brickName)
                                                         , true
                                                         , " DeviceLoader::loadDevicesFromFile(" + filePath + ")"
                                                         );
            if (brick != null)
            {
                Logger.Log("DeviceLoader::loadDevicesFromFile successfully added brick " + brick, Logger.Level.TRACE);
                AvailableBioBricksManager.get().addAvailableBioBrick(brick);
            }
        }
        if (brick != null)
        {
            Logger.Log("DeviceLoader::loadDevicesFromFile successfully added brick " + brick, Logger.Level.TRACE);
            deviceBricks.AddLast(brick);
            return(true);
        }
        else
        {
            Logger.Log("DeviceLoader::loadDevicesFromFile failed to add brick with name " + brickName + "!", Logger.Level.WARN);
            return(false);
        }
    }
Пример #26
0
 private static bool checkGene(BioBrick b)
 {
     Logger.Log("ExpressionModule::checkGene(" + b + ")", Logger.Level.DEBUG);
     return(b.getType() == BioBrick.Type.GENE);
 }
Пример #27
0
 private static bool checkPromoter(BioBrick b)
 {
     Logger.Log("ExpressionModule::checkPromoter(" + b + ")", Logger.Level.DEBUG);
     return(b.getType() == BioBrick.Type.PROMOTER);
 }
Пример #28
0
    public BioBrick loadBioBrick(XmlNode bioBrickNode)
    {

        reinitVars();
        //common biobrick attributes
        try
        {
            bioBrickName = bioBrickNode.Attributes[BioBricksXMLTags.ID].Value;
            bioBrickSize = bioBrickNode.Attributes[BioBricksXMLTags.SIZE].Value;
            bioBrickType = bioBrickNode.Attributes[BioBricksXMLTags.TYPE].Value;
        }
        catch (NullReferenceException exc)
        {
            Logger.Log("BioBrickLoader::loadBioBricksFromFile bad xml, missing field\n" + exc, Logger.Level.WARN);
            return null;
        }
        catch (Exception exc)
        {
            Logger.Log("BioBrickLoader::loadBioBricksFromFile failed, got exc=" + exc, Logger.Level.WARN);
            return null;
        }
        Logger.Log("BioBrickLoader::loadBioBricksFromFile got id=" + bioBrickName
          + ", size=" + bioBrickSize
          + ", type=" + bioBrickType
          , Logger.Level.TRACE);

        if (checkString(bioBrickName))
        {
            switch (bioBrickType)
            {
                case BioBricksXMLTags.PROMOTER:
                    logCurrentBioBrick(BioBricksXMLTags.PROMOTER);
                    foreach (XmlNode attr in bioBrickNode)
                    {
                        switch (attr.Name)
                        {
                            case BioBricksXMLTags.BETA:
                                beta = attr.InnerText;
                                break;
                            case BioBricksXMLTags.FORMULA:
                                formula = attr.InnerText;
                                break;
                            case XMLTags.COMMENT:
                                break;
                            default:
                                logUnknownAttr(attr, BioBricksXMLTags.PROMOTER);
                                break;
                        }
                    }
                    if (checkString(beta) && checkString(formula))
                    {
                        bioBrick = new PromoterBrick(bioBrickName, parseFloat(beta), formula);
                    }
                    break;
                case BioBricksXMLTags.RBS:
                    logCurrentBioBrick(BioBricksXMLTags.RBS);
                    foreach (XmlNode attr in bioBrickNode)
                    {
                        switch (attr.Name)
                        {
                            case BioBricksXMLTags.RBSFACTOR:
                                rbsfactor = attr.InnerText;
                                break;
                            case XMLTags.COMMENT:
                                break;
                            default:
                                logUnknownAttr(attr, BioBricksXMLTags.RBS);
                                break;
                        }
                    }
                    if (checkString(rbsfactor))
                    {
                        bioBrick = new RBSBrick(bioBrickName, parseFloat(rbsfactor));
                    }
                    break;
                case BioBricksXMLTags.GENE:
                    logCurrentBioBrick(BioBricksXMLTags.GENE);
                    foreach (XmlNode attr in bioBrickNode)
                    {
                        switch (attr.Name)
                        {
                            case BioBricksXMLTags.PROTEIN:
                                protein = attr.InnerText;
                                break;
                            case XMLTags.COMMENT:
                                break;
                            default:
                                logUnknownAttr(attr, BioBricksXMLTags.GENE);
                                break;
                        }
                    }
                    if (checkString(protein))
                    {
                        bioBrick = new GeneBrick(bioBrickName, protein);
                    }
                    break;
                case BioBricksXMLTags.TERMINATOR:
                    logCurrentBioBrick(BioBricksXMLTags.TERMINATOR);
                    foreach (XmlNode attr in bioBrickNode)
                    {
                        switch (attr.Name)
                        {
                            case BioBricksXMLTags.TERMINATORFACTOR:
                                terminatorfactor = attr.InnerText;
                                break;
                            case XMLTags.COMMENT:
                                break;
                            default:
                                logUnknownAttr(attr, BioBricksXMLTags.TERMINATOR);
                                break;
                        }
                    }
                    if (checkString(terminatorfactor))
                    {
                        bioBrick = new TerminatorBrick(bioBrickName, parseFloat(terminatorfactor));
                    }
                    break;
                default:
                    Logger.Log("BioBrickLoader::loadBioBricksFromFile wrong type " + bioBrickType, Logger.Level.WARN);
                    break;
            }
            if (null != bioBrick && checkString(bioBrickSize))
            {
                bioBrick.setSize(parseInt(bioBrickSize));
            }
            return bioBrick;
        }
        else
        {
            Logger.Log("BioBrickLoader::loadBioBricksFromFile Error : missing attribute id in BioBrick node", Logger.Level.WARN);
            return null;
        }
    }
Пример #29
0
 public static string getSpriteName(BioBrick brick)
 {
     return(spriteNamesDico[brick.getType()]);
 }
Пример #30
0
 public void removeBioBrick(BioBrick brick)
 {
     Logger.Log("CraftZoneManager::removeBioBrick(" + brick + ")", Logger.Level.TRACE);
     _currentBioBricks.Remove(brick);
     OnBioBricksChanged();
 }
    public bool addAvailableBioBrick(BioBrick brick, bool updateView = true)
    {
        Logger.Log("AvailableBioBricksManager::addAvailableBioBrick(" + brick + ")", Logger.Level.INFO);
        string bbName = brick.getName();
        if ((null != brick)
            && (null == LinkedListExtensions.Find<BioBrick>(
            _availableBioBricks
            , b => b.getName() == bbName
            , false
            , " AvailableBioBricksManager::addAvailableBioBrick(" + brick + ", " + updateView + ")"
            )
            ))
        // TODO deeper safety check
        // && !LinkedListExtensions.Find<BioBrick>(_availableBioBricks, b => b..Equals(brick), true, " AvailableBioBricksManager::addAvailableBioBrick("+brick+", "+updateView+")")
        {
            Logger.Log("AvailableBioBricksManager::addAvailableBioBrick(" + brick + ") will _availableBioBricks.AddLast(" + brick + ")", Logger.Level.INFO);

            _availableBioBricks.AddLast(brick);
            if (updateView)
            {
                updateDisplayedBioBricks();
            }
            return true;
        }
        else
        {
            Logger.Log("AvailableBioBricksManager::addAvailableBioBrick(" + brick + ") fail", Logger.Level.INFO);
            return false;
        }
    }
Пример #32
0
    public BioBrick loadBioBrick(XmlNode bioBrickNode)
    {
        reinitVars();
        //common biobrick attributes
        try
        {
            bioBrickName = bioBrickNode.Attributes[BioBricksXMLTags.ID].Value;
            bioBrickSize = bioBrickNode.Attributes[BioBricksXMLTags.SIZE].Value;
            bioBrickType = bioBrickNode.Attributes[BioBricksXMLTags.TYPE].Value;
        }
        catch (NullReferenceException exc)
        {
            Logger.Log("BioBrickLoader::loadBioBricksFromFile bad xml, missing field\n" + exc, Logger.Level.WARN);
            return(null);
        }
        catch (Exception exc)
        {
            Logger.Log("BioBrickLoader::loadBioBricksFromFile failed, got exc=" + exc, Logger.Level.WARN);
            return(null);
        }
        Logger.Log("BioBrickLoader::loadBioBricksFromFile got id=" + bioBrickName
                   + ", size=" + bioBrickSize
                   + ", type=" + bioBrickType
                   , Logger.Level.TRACE);

        if (checkString(bioBrickName))
        {
            switch (bioBrickType)
            {
            case BioBricksXMLTags.PROMOTER:
                logCurrentBioBrick(BioBricksXMLTags.PROMOTER);
                foreach (XmlNode attr in bioBrickNode)
                {
                    switch (attr.Name)
                    {
                    case BioBricksXMLTags.BETA:
                        beta = attr.InnerText;
                        break;

                    case BioBricksXMLTags.FORMULA:
                        formula = attr.InnerText;
                        break;

                    case XMLTags.COMMENT:
                        break;

                    default:
                        logUnknownAttr(attr, BioBricksXMLTags.PROMOTER);
                        break;
                    }
                }
                if (checkString(beta) && checkString(formula))
                {
                    bioBrick = new PromoterBrick(bioBrickName, parseFloat(beta), formula);
                }
                break;

            case BioBricksXMLTags.RBS:
                logCurrentBioBrick(BioBricksXMLTags.RBS);
                foreach (XmlNode attr in bioBrickNode)
                {
                    switch (attr.Name)
                    {
                    case BioBricksXMLTags.RBSFACTOR:
                        rbsfactor = attr.InnerText;
                        break;

                    case XMLTags.COMMENT:
                        break;

                    default:
                        logUnknownAttr(attr, BioBricksXMLTags.RBS);
                        break;
                    }
                }
                if (checkString(rbsfactor))
                {
                    bioBrick = new RBSBrick(bioBrickName, parseFloat(rbsfactor));
                }
                break;

            case BioBricksXMLTags.GENE:
                logCurrentBioBrick(BioBricksXMLTags.GENE);
                foreach (XmlNode attr in bioBrickNode)
                {
                    switch (attr.Name)
                    {
                    case BioBricksXMLTags.PROTEIN:
                        protein = attr.InnerText;
                        break;

                    case XMLTags.COMMENT:
                        break;

                    default:
                        logUnknownAttr(attr, BioBricksXMLTags.GENE);
                        break;
                    }
                }
                if (checkString(protein))
                {
                    bioBrick = new GeneBrick(bioBrickName, protein);
                }
                break;

            case BioBricksXMLTags.TERMINATOR:
                logCurrentBioBrick(BioBricksXMLTags.TERMINATOR);
                foreach (XmlNode attr in bioBrickNode)
                {
                    switch (attr.Name)
                    {
                    case BioBricksXMLTags.TERMINATORFACTOR:
                        terminatorfactor = attr.InnerText;
                        break;

                    case XMLTags.COMMENT:
                        break;

                    default:
                        logUnknownAttr(attr, BioBricksXMLTags.TERMINATOR);
                        break;
                    }
                }
                if (checkString(terminatorfactor))
                {
                    bioBrick = new TerminatorBrick(bioBrickName, parseFloat(terminatorfactor));
                }
                break;

            default:
                Logger.Log("BioBrickLoader::loadBioBricksFromFile wrong type " + bioBrickType, Logger.Level.WARN);
                break;
            }
            if (null != bioBrick && checkString(bioBrickSize))
            {
                bioBrick.setSize(parseInt(bioBrickSize));
            }
            return(bioBrick);
        }
        else
        {
            Logger.Log("BioBrickLoader::loadBioBricksFromFile Error : missing attribute id in BioBrick node", Logger.Level.WARN);
            return(null);
        }
    }
Пример #33
0
 public void replaceWithBioBrick(BioBrick brick)
 {
     Logger.Log("CraftZoneManager::replaceWithBioBrick(" + brick + ")", Logger.Level.TRACE);
     insertOrdered(brick);
     OnBioBricksChanged();
 }
Пример #34
0
    public static bool displayTooltip(bool isOver, BioBrick brick, Vector3 pos)
    {
        string code = (null == brick)?null:_bioBrickPrefix + brick.getName();

        return(displayTooltip(isOver, code, pos));
    }
Пример #35
0
 private static bool checkTerminator(BioBrick b)
 {
     return (b.getType() == BioBrick.Type.TERMINATOR);
 }
Пример #36
0
 private static bool checkRBS(BioBrick b)
 {
     return (b.getType() == BioBrick.Type.RBS);
 }
Пример #37
0
 private static bool checkPromoter(BioBrick b)
 {
     return (b.getType() == BioBrick.Type.PROMOTER);
 }
Пример #38
0
 public new static string getSpriteName(BioBrick brick)
 {
     return(brick.getName());
 }
Пример #39
0
 private static bool checkGene(BioBrick b)
 {
     Logger.Log("ExpressionModule::checkGene("+b+")", Logger.Level.DEBUG);
     return (b.getType() == BioBrick.Type.GENE);
 }
Пример #40
0
 private static bool checkTerminator(BioBrick b)
 {
     Logger.Log("ExpressionModule::checkTerminator(" + b + ")", Logger.Level.DEBUG);
     return(b.getType() == BioBrick.Type.TERMINATOR);
 }
Пример #41
0
 private void insertOrdered(BioBrick toInsert)
 {
   foreach(BioBrick brick in _currentBioBricks)
   {
     if(brick.getType() > toInsert.getType())
     {
       LinkedListNode<BioBrick> afterNode = _currentBioBricks.Find(brick);
       _currentBioBricks.AddBefore(afterNode, toInsert);
       return;
     }
     else if(brick.getType() == toInsert.getType())
     {
       LinkedListNode<BioBrick> toReplaceNode = _currentBioBricks.Find(brick);
       _currentBioBricks.AddAfter(toReplaceNode, toInsert);
       _currentBioBricks.Remove(brick);
       return;
     }
   }
   _currentBioBricks.AddLast(toInsert);
 }
Пример #42
0
 public void replaceWithBioBrick(BioBrick brick) {
   Logger.Log("CraftZoneManager::replaceWithBioBrick("+brick+")", Logger.Level.TRACE);
   insertOrdered(brick);
   OnBioBricksChanged();
 }
 private LinkedList<BioBrick> getAvailableBioBricksOfType(BioBrick.Type type)
 {
     Logger.Log("AvailableBioBricksManager::getAvailableBioBricksOfType(" + type + ")", Logger.Level.TRACE);
     return LinkedListExtensions.Filter<BioBrick>(_availableBioBricks, b => (b.getType() == type));
 }
Пример #44
0
    public LinkedList <Device> loadDevicesFromFile(string filePath)
    {
        Logger.Log("DeviceLoader::loadDevicesFromFile(" + filePath + ")", Logger.Level.INFO);

        LinkedList <Device> resultDevices = new LinkedList <Device>();

        XmlDocument xmlDoc = Tools.getXmlDocument(filePath);

        XmlNodeList deviceList = xmlDoc.GetElementsByTagName(BioBricksXMLTags.DEVICE);

        reinitVars();

        foreach (XmlNode deviceNode in deviceList)
        {
            try
            {
                deviceName = deviceNode.Attributes[BioBricksXMLTags.ID].Value;
            }
            catch (NullReferenceException exc)
            {
                Logger.Log("DeviceLoader::loadDevicesFromFile bad xml, missing field \"id\"\n" + exc, Logger.Level.WARN);
                continue;
            }
            catch (Exception exc)
            {
                Logger.Log("DeviceLoader::loadDevicesFromFile failed, got exc=" + exc, Logger.Level.WARN);
                continue;
            }

            Logger.Log("DeviceLoader::loadDevicesFromFile got id=" + deviceName
                       , Logger.Level.TRACE);


            bool processSuccess = true;

            if (checkString(deviceName))
            {
                // processes longer grammars that use explicit brick nodes names
                if (0 != deviceNode.ChildNodes.Count)
                {
                    foreach (XmlNode attr in deviceNode)
                    {
                        if (attr.Name == BioBricksXMLTags.BIOBRICK)
                        {
                            //find brick in existing bricks
                            string brickName = attr.Attributes[BioBricksXMLTags.ID].Value;
                            if (!processBrick(brickName, filePath))
                            {
                                // processes even longer grammar that uses explicit brick description
                                // because the brick wasn't found neither in 'available' nor 'all' biobricks lists
                                brick = bLoader.loadBioBrick(attr);
                                if (null != brick)
                                {
                                    AvailableBioBricksManager.get().addAvailableBioBrick(brick);
                                    deviceBricks.AddLast(brick);
                                }
                                else
                                {
                                    processSuccess = false;
                                    break;
                                }
                            }
                        }
                        else
                        {
                            Logger.Log("DeviceLoader::loadDevicesFromFile unknown attr " + attr.Name, Logger.Level.WARN);
                        }
                    }
                }
                else
                {
                    // processes shortened grammar that uses only device name
                    foreach (string brickName in deviceName.Split(':'))
                    {
                        if (!processBrick(brickName, filePath))
                        {
                            processSuccess = false;
                            break;
                        }
                    }
                }

                if (processSuccess)
                {
                    ExpressionModule deviceModule = new ExpressionModule(deviceName, deviceBricks);
                    LinkedList <ExpressionModule> deviceModules = new LinkedList <ExpressionModule>();
                    deviceModules.AddLast(deviceModule);
                    device = Device.buildDevice(deviceName, deviceModules);
                    if (device != null)
                    {
                        resultDevices.AddLast(device);
                    }
                }
            }
            else
            {
                Logger.Log("DeviceLoader::loadDevicesFromFile Error : missing attribute id in Device node", Logger.Level.WARN);
            }
            reinitVars();
        }
        return(resultDevices);
    }
    private AvailableDisplayedBioBrick getDisplayableAvailableBioBrick(BioBrick brick, int index)
    {

        Transform parentTransformParam = bioBricksPanel.transform;
        Vector3 localPositionParam = getNewPosition(index);
        string spriteNameParam = AvailableDisplayedBioBrick.getSpriteName(brick);
        BioBrick biobrickParam = brick;

        Logger.Log("AvailableBioBricksManager::getDisplayableAvailableBioBrick(brick=" + brick + ", index=" + index + "),"
          + ", parentTransformParam=" + parentTransformParam
          + ", localPositionParam=" + localPositionParam
          + " (width=" + _width + ")"
          + ", spriteNameParam=" + spriteNameParam
          + ", biobrickParam=" + biobrickParam
          , Logger.Level.TRACE
          );

        AvailableDisplayedBioBrick resultBrick = AvailableDisplayedBioBrick.Create(
          parentTransformParam
          , localPositionParam
          , spriteNameParam
          , biobrickParam
        );
        return resultBrick;
    }
Пример #46
0
 public static bool displayTooltip(bool isOver, BioBrick brick, Vector3 pos)
 {
   string code = (null == brick)?null:_bioBrickPrefix+brick.getName();
   return displayTooltip(isOver, code, pos);
 }
Пример #47
0
  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  // utilities

  private BioBrick findFirstBioBrick(BioBrick.Type type) {
    foreach(BioBrick brick in _currentBioBricks) {
      if(brick.getType() == type) return brick;
    }
    Logger.Log("CraftZoneManager::findFirstBioBrick("+type+") failed with current bricks="+_currentBioBricks, Logger.Level.TRACE);
    return null;
  }
Пример #48
0
    public LinkedList<Device> loadDevicesFromFile(string filePath)
    {
        Logger.Log("DeviceLoader::loadDevicesFromFile(" + filePath + ")", Logger.Level.INFO);

        LinkedList<Device> resultDevices = new LinkedList<Device>();

        XmlDocument xmlDoc = Tools.getXmlDocument(filePath);

        XmlNodeList deviceList = xmlDoc.GetElementsByTagName(BioBricksXMLTags.DEVICE);

        reinitVars();

        foreach (XmlNode deviceNode in deviceList)
        {
            try
            {
                deviceName = deviceNode.Attributes[BioBricksXMLTags.ID].Value;
            }
            catch (NullReferenceException exc)
            {
                Logger.Log("DeviceLoader::loadDevicesFromFile bad xml, missing field \"id\"\n" + exc, Logger.Level.WARN);
                continue;
            }
            catch (Exception exc)
            {
                Logger.Log("DeviceLoader::loadDevicesFromFile failed, got exc=" + exc, Logger.Level.WARN);
                continue;
            }

            Logger.Log("DeviceLoader::loadDevicesFromFile got id=" + deviceName
              , Logger.Level.TRACE);


            bool processSuccess = true;

            if (checkString(deviceName))
            {
                // processes longer grammars that use explicit brick nodes names
                if (0 != deviceNode.ChildNodes.Count)
                {
                    foreach (XmlNode attr in deviceNode)
                    {
                        if (attr.Name == BioBricksXMLTags.BIOBRICK)
                        {
                            //find brick in existing bricks
                            string brickName = attr.Attributes[BioBricksXMLTags.ID].Value;
                            if (!processBrick(brickName, filePath))
                            {
                                // processes even longer grammar that uses explicit brick description
                                // because the brick wasn't found neither in 'available' nor 'all' biobricks lists
                                brick = bLoader.loadBioBrick(attr);
                                if (null != brick)
                                {
                                    AvailableBioBricksManager.get().addAvailableBioBrick(brick);
                                    deviceBricks.AddLast(brick);
                                }
                                else
                                {
                                    processSuccess = false;
                                    break;
                                }
                            }
                        }
                        else
                        {
                            Logger.Log("DeviceLoader::loadDevicesFromFile unknown attr " + attr.Name, Logger.Level.WARN);
                        }
                    }
                }
                else
                {
                    // processes shortened grammar that uses only device name
                    foreach (string brickName in deviceName.Split(':'))
                    {
                        if (!processBrick(brickName, filePath))
                        {
                            processSuccess = false;
                            break;
                        }
                    }
                }

                if (processSuccess)
                {
                    ExpressionModule deviceModule = new ExpressionModule(deviceName, deviceBricks);
                    LinkedList<ExpressionModule> deviceModules = new LinkedList<ExpressionModule>();
                    deviceModules.AddLast(deviceModule);
                    device = Device.buildDevice(deviceName, deviceModules);
                    if (device != null)
                    {
                        resultDevices.AddLast(device);
                    }
                }
            }
            else
            {
                Logger.Log("DeviceLoader::loadDevicesFromFile Error : missing attribute id in Device node", Logger.Level.WARN);
            }
            reinitVars();
        }
        return resultDevices;
    }
Пример #49
0
 public static string getSpriteName(BioBrick brick) {
   return spriteNamesDico[brick.getType()];
 }
Пример #50
0
 public void removeBioBrick(BioBrick brick) {
   Logger.Log("CraftZoneManager::removeBioBrick("+brick+")", Logger.Level.TRACE);
   _currentBioBricks.Remove(brick);
   OnBioBricksChanged();
 }
Пример #51
0
 private static bool checkPromoter(BioBrick b)
 {
     Logger.Log("ExpressionModule::checkPromoter("+b+")", Logger.Level.DEBUG);
     return (b.getType() == BioBrick.Type.PROMOTER);
 }
Пример #52
0
	public new static string getSpriteName(BioBrick brick) {
		return brick.getName();
	}
Пример #53
0
 private static bool checkTerminator(BioBrick b)
 {
     Logger.Log("ExpressionModule::checkTerminator("+b+")", Logger.Level.DEBUG);
     return (b.getType() == BioBrick.Type.TERMINATOR);
 }  
Пример #54
0
 private static bool checkGene(BioBrick b)
 {
     return (b.getType() == BioBrick.Type.GENE);
 }