コード例 #1
0
ファイル: Field.cs プロジェクト: witia87/Riffer
        public void SwapSubstances(Field other)
        {
            var newSubstanceId = other.SubstanceId;

            other.SubstanceId = this.SubstanceId;
            SubstanceId       = newSubstanceId;
        }
コード例 #2
0
 protected override void ConfigureFieldGetters()
 {
     FieldsGetters.Add("id", () => ID == Constants.DefaultIndex ? null : ID.ToString());
     FieldsGetters.Add("star_id", () => StarId.ToString());
     FieldsGetters.Add("substance_id", () => SubstanceId.ToString());
     FieldsGetters.Add("percentage", () => Percentage.ToString().Replace(",", "."));
 }
コード例 #3
0
 void Update()
 {
     if (_substanceId != ViewModel.Board.GetField(_row, _column).SubstanceId)
     {
         _substanceId     = ViewModel.Board.GetField(_row, _column).SubstanceId;
         _renderer.sprite = ViewModel.GetSprite(_substanceId);
     }
 }
コード例 #4
0
 public int IndexOfSubstance(SubstanceId substanceId)
 {
     for (int i = 0; i < _listImplementation.Count; i++)
     {
         if (_listImplementation[i].SubstanceId == substanceId)
         {
             return(i);
         }
     }
     return(-1);
 }
コード例 #5
0
        private int FindSubstanceIndex(SubstanceId id)
        {
            for (int i = 0; i < this.Count; i++)
            {
                if (this[i].SubstanceId == id)
                {
                    return(i);
                }
            }

            return(-1);
        }
コード例 #6
0
        private SubstanceId[,] GetInitialSubstanceDistribution()
        {
            var distribution = new SubstanceId[Board.HEIGHT, Board.WIDTH];

            for (var row = 0; row < Board.HEIGHT; row++)
            {
                for (var column = 0; column < Board.WIDTH; column++)
                {
                    distribution[row, column] =
                        GameObject.Find(String.Format(BoardView.FIELD_NAME_PATTERN, row, column)).GetComponent <FieldView>().InitialSubstanceId;
                }
            }

            return(distribution);
        }
コード例 #7
0
        private bool FindReagentIndexes(Reaction reaction, out int[] reagentIndexes)
        {
            reagentIndexes = new int[reaction.Reagents.Length];

            bool ok = true;

            for (int i = 0; i < reagentIndexes.Length && ok; i++)
            {
                SubstanceId reagentId = reaction.Reagents[i].SubstanceId;
                int         index     = FindSubstanceIndex(reagentId);

                if (index != -1)
                {
                    reagentIndexes[i] = index;
                }
                else
                {
                    ok = false;
                }
            }

            return(ok);
        }
コード例 #8
0
        private void DoReaction(Reaction reaction, int[] reagentsIndexes, float factor)
        {
            for (int i = 0; i < reagentsIndexes.Length; i++)
            {
                int reagentIndex = reagentsIndexes[i];
                if (reagentIndex < 0 || reagentIndex >= this.Count || this.Count == 0)
                {
                    return;
                }
                Substance substanceInfo  = this[reagentIndex];
                float     reactionVolume = factor * reaction.Reagents[i].Mole;
                substanceInfo.Volume -= reactionVolume;

                if (substanceInfo.Volume > 0)
                {
                    this[reagentIndex] = substanceInfo;
                }
                else
                {
                    this.RemoveAt(reagentIndex);
                }
            }

            SubstanceMixture additions = new SubstanceMixture(0, this.Temperature + reaction.ThermalFactor * factor);

            for (int i = 0; i < reaction.Results.Length; i++)
            {
                //SubstanceId id = ChemistryController.Current.GetSubstance(reaction.Results[i].SubstanceName).Id;
                SubstanceId id = reaction.Results[i].SubstanceId;
                if (id != SubstanceId.IncorrectSubstance)
                {
                    additions.Add(new Substance(id, factor * reaction.Results[i].Mole));
                }
            }

            this.Concatinate(additions);
        }
コード例 #9
0
 public Substance(SubstanceId id, float volume)
 {
     _substanceId = id;
     _volume      = volume;
 }
コード例 #10
0
ファイル: Reagent.cs プロジェクト: DmitryMI/TileEngineSfml
 public void ReadFields(XmlElement parentElement)
 {
     SubstanceId =
         SerializationUtils.ReadEnum(nameof(SubstanceId), parentElement, SubstanceId.IncorrectSubstance);
     Mole = SerializationUtils.ReadInt(nameof(Mole), parentElement, Mole);
 }
コード例 #11
0
ファイル: Reagent.cs プロジェクト: DmitryMI/TileEngineSfml
 public Reagent(SubstanceId id, int mole)
 {
     SubstanceId = id;
     Mole        = mole;
 }
コード例 #12
0
ファイル: ViewModel.cs プロジェクト: witia87/Riffer
 public static Sprite GetSprite(SubstanceId id)
 {
     return(_spritesDictionary[id]);
 }
コード例 #13
0
 void Start()
 {
     _renderer        = GetComponent <SpriteRenderer>();
     _substanceId     = ViewModel.Board.GetField(_row, _column).SubstanceId;
     _renderer.sprite = ViewModel.GetSprite(_substanceId);
 }
コード例 #14
0
ファイル: Field.cs プロジェクト: witia87/Riffer
 public Field(int row, int column, SubstanceId initialSubstanceId)
 {
     Row         = row;
     Column      = column;
     SubstanceId = initialSubstanceId;
 }