/* * RoadTubeCrossing.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; using System.Collections.Generic; using Microsoft.Xna.Framework; namespace ColonySim.Structures { /// /// This represents a crossing between a Road and a Tube. /// class RoadTubeCrossing : TransportStructure { private bool mRoadAlongX = false; public bool RoadAlongX { get { return mRoadAlongX; } set { mRoadAlongX = value; } } #region Constructs /// /// Base constructor /// /// The Content Manager /// The model name /// The texture name public RoadTubeCrossing(ContentManager pContent, string pModelName, string pTextureName) : base(pContent, pModelName, pTextureName) { RequiresBuildArea = false; BuildRadius = 0; //SpecularIntensity = 1f; //SpecularPower = .7f; } #endregion #region Utility /// /// Returns a clone of this structure. /// /// The cloned structure. public override Structure Clone() { // Create the return value RoadTubeCrossing retVal = new RoadTubeCrossing(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(); } #endregion public new Matrix TransformationMatrix { get { return m_TransformationMatrix; } set { m_TransformationMatrix = value; } } internal override void setDisplayForRunning() { // Set the model path to the four way path ModelPath = ColonyStrings.MODEL_PATH + ColonyStrings.Red_Blue_Crossing_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(); } } }