/* * This file is part of the "House of the Future" showcase project by M2H (http://www.M2H.nl) * The original author of this code Mike Hergaarden. * Feel free to use this code for your own projects, drop me a line if you made something exciting! */ //Buy, sell, sell! #pragma strict import System.DateTime; import System.IO; private var monthStrings : String[] = new String[13]; private var lineRenderer : LineRenderer; public var graphLB : Transform; public var graphTR : Transform; public var graphDummy : Transform; private var realMaxY : float; private var realMinY : float; private var realMaxX : float; private var realMinX : float; private var stockDataList : ArrayList = new ArrayList(); private var maxStockY : float = 0; private var minStockY : float = 0; function Awake(){ lineRenderer = GetComponent(LineRenderer); monthStrings[1]="Jan"; monthStrings[3]="Feb"; monthStrings[4]="Mar"; monthStrings[4]="Apr"; monthStrings[5]="May"; monthStrings[6]="Jun"; monthStrings[7]="Jul"; monthStrings[8]="Aug"; monthStrings[9]="Sep"; monthStrings[10]="Oct"; monthStrings[11]="Nov"; monthStrings[12]="Dec"; realMaxY = graphTR.position.y; realMinY = graphLB.position.y; realMaxX = graphTR.localPosition.x; realMinX = graphLB.localPosition.x; ReloadStocks(); } public var stockName : String = "NASDAQ:GOOG"; public var daysBack : int = 14; public var stockTitle : String = "NASDAQ:GOOG - Last 14 days - Latest: "; function ReloadStocks () { minStockY = maxStockY=0; /// ** DOWNLOAD STOCK DATA **/// var now : System.DateTime = System.DateTime.Now; var dayStringNow : int = now.Day; var monthStringNow : int = now.Month; var yearStringNow : int = now.Year; var prev : System.DateTime = now.AddDays(-daysBack); var dayStringPrev : int = prev.Day; var monthStringPrev : int = prev.Month; var yearStringPrev : int = prev.Year; var url : String = "http://www.google.com/finance/historical?q="+stockName+"&startdate="+monthStrings[monthStringPrev]+"+"+dayStringPrev+","+yearStringPrev+"&enddate="+monthStrings[monthStringNow]+"+"+dayStringNow+","+yearStringNow+"&output=csv"; //Debug.Log(url); var www : WWW = new WWW (url); yield www; var stockData : String = www.data; var i : int =0; var splitted : String[] = stockData.Split("\n"[0]); for(var aLine : String in splitted){ if(i==0){ i++; continue; } if(i>14){ break; } var data : String[] = aLine.Split(","[0]); data[4] = data[4].Replace(".", ","); var value : float = parseFloat(data[4]); if(valuemaxStockY){ maxStockY=value; } stockDataList.Add(value); i++; } //GOT DATA, CREATE DISPLAY i = 0; for(var j = stockDataList.Count-1;j>=0;j--){ var valueX : float = stockDataList[j]; graphDummy.position = graphLB.position; graphDummy.localPosition.x += GetXPosOnChart((i+1), 14); graphDummy.localPosition.y += GetYPosOnChart(valueX); lineRenderer.SetPosition(i, graphDummy.position); i++; } var textMesh : TextMesh = GetComponent(TextMesh); textMesh.text = stockTitle+""+stockDataList[stockDataList.Count-1]+"\nMin: "+minStockY+" Max: "+maxStockY; } function GetXPosOnChart(item : int, totalitems: int) : float { return (((realMaxX-realMinX)/totalitems)*item); } function GetYPosOnChart(value : float) : float { var percent : float = ((value-minStockY)/(maxStockY-minStockY)); return ((realMaxY-realMinY) * percent); }