bool MoleculePatternWasUsed(MoleculePattern moleculePattern, List <Molecule> molecules) { foreach (Molecule molecule in molecules) { if (molecule.stateWasUpdated && moleculePattern.Matches(molecule)) { return(true); } } return(false); }
public virtual void SetStateOfComplex(Molecule molecule1, MoleculePattern productMolecule1, Molecule molecule2, MoleculePattern productMolecule2) { //get references to the reaction center molecules in this complex pattern MoleculePattern productMoleculeRef1 = null, productMoleculeRef2 = null; foreach (string moleculeName in moleculePatterns.Keys) { foreach (MoleculePattern moleculePattern in moleculePatterns[moleculeName]) { if (productMolecule1.Matches(moleculePattern)) { productMoleculeRef1 = moleculePattern; } else if (productMolecule2.Matches(moleculePattern)) { productMoleculeRef2 = moleculePattern; } } } //set states of attached molecules SetProductStatesOfAttachedMolecules(molecule1, productMoleculeRef1); SetProductStatesOfAttachedMolecules(molecule2, productMoleculeRef2); }