/* * Tube.cs * Authors: Bradley R. Blankenship * Copyright (c) 2007-2008 Cornell University This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ using Microsoft.Xna.Framework.Content; namespace ColonySim.Structures { /// /// This represents how resources are transported within the Colony. /// class Tube : TransportStructure { #region Constructs /// /// Base constructor /// /// The Content Manager /// The model name /// The texture name public Tube(ContentManager pContent, string pModelName, string pTextureName) : base(pContent, pModelName, pTextureName) { RequiresBuildArea = false; BuildRadius = 0; //SpecularIntensity = 1f; //SpecularPower = .7f; } #endregion #region Behavior #endregion #region Utility /// /// Returns a clone of this structure. /// /// The cloned structure. public override Structure Clone() { // Create the return value Tube retVal = new Tube(Content, ModelPath, TexturePath); // Set the values to ours retVal.Name = Name; retVal.FootPrintSize = FootPrintSize; retVal.Cost = Cost; retVal.BuildRadius = BuildRadius; retVal.Running = Running; retVal.DrawOrder = DrawOrder; retVal.TechniqueName = TechniqueName; retVal.RequiresBuildArea = RequiresBuildArea; retVal.AlphaMapPath = AlphaMapPath; // Return the retval return retVal; } public override string ToSaveString() { System.Text.StringBuilder returnString = new System.Text.StringBuilder(); if (Name == null) returnString.Append("null"); else returnString.Append(Name); returnString.Append(" "); returnString.Append(FootPrintSize.X); returnString.Append(" "); returnString.Append(FootPrintSize.Y); returnString.Append(" "); returnString.Append(Cost); returnString.Append(" "); returnString.Append(BuildRadius); returnString.Append(" "); returnString.Append((int)Running); returnString.Append(" "); returnString.Append(DrawOrder); returnString.Append(" "); returnString.Append(TechniqueName); returnString.Append(" "); returnString.AppendLine(); return returnString.ToString(); } ///// ///// Test if this Tube equals ///// ///// ///// //public override bool Equals(object obj) //{ // // The return values // bool retVal = false; // // If it's a // if (obj is Tube) // { // // Cast it // Tube temp = obj as Tube; // // Now see if we're equal // if ((temp.Structure_A == this.Structure_A && temp.Structure_B == this.Structure_B) || // (temp.Structure_A == this.Structure_B && temp.Structure_B == this.Structure_A)) // { // // We're equivalent // retVal = true; // } // } // // Return the retVal // return retVal; //} #endregion internal override void setDisplayForRunning() { switch (Running) { case Runnings.X: case Runnings.Y: ModelPath = ColonyStrings.MODEL_PATH + ColonyStrings.Tube_Straight_Model; if (!string.IsNullOrEmpty(ColonyStrings.Tube_Straight_Texture)) { TexturePath = ColonyStrings.TEXTURE_PATH + ColonyStrings.Tube_Straight_Texture; } AlphaMapPath = ColonyStrings.MODEL_PATH + ColonyStrings.ALPHAMAP_PATH + ColonyStrings.Tube_Straight_AlphaMap; ReloadModel(); return; case Runnings.NXNY: case Runnings.NXPY: case Runnings.PXNY: case Runnings.PXPY: ModelPath = ColonyStrings.MODEL_PATH + ColonyStrings.Tube_Angled_Model; if (!string.IsNullOrEmpty(ColonyStrings.Tube_Angled_Texture)) { TexturePath = ColonyStrings.TEXTURE_PATH + ColonyStrings.Tube_Angled_Texture; } AlphaMapPath = ColonyStrings.MODEL_PATH + ColonyStrings.ALPHAMAP_PATH + ColonyStrings.Tube_Angled_AlphaMap; ReloadModel(); return; case Runnings.Negative_X: case Runnings.Negative_Y: case Runnings.Positive_X: case Runnings.Positive_Y: ModelPath = ColonyStrings.MODEL_PATH + ColonyStrings.Tube_T_Model; if (!string.IsNullOrEmpty(ColonyStrings.Tube_T_Texture)) { TexturePath = ColonyStrings.TEXTURE_PATH + ColonyStrings.Tube_T_Texture; } AlphaMapPath = ColonyStrings.MODEL_PATH + ColonyStrings.ALPHAMAP_PATH + ColonyStrings.Tube_T_AlphaMap; ReloadModel(); return; case Runnings.Four_Way: ModelPath = ColonyStrings.MODEL_PATH + ColonyStrings.Tube_Four_Model; if (!string.IsNullOrEmpty(ColonyStrings.Tube_Four_Texture)) { TexturePath = ColonyStrings.TEXTURE_PATH + ColonyStrings.Tube_Four_Texture; } AlphaMapPath = ColonyStrings.MODEL_PATH + ColonyStrings.ALPHAMAP_PATH + ColonyStrings.Tube_Four_AlphaMap; ReloadModel(); return; } } } }