summaryrefslogtreecommitdiff
path: root/js/user.js
blob: 39beaaa15ad8b32cbf050141ac88cc05fe9dfe95 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
var user = new function(){}
user.init = function(){
  user.load()
  user.bind()
  user.shaders.init()
}
user.bind = function(){
  $("#username").on("input", user.save)
}
user.load = function(){
  user.username = user.getCookie()
  $("#username").val(user.username)
}
user.sanitize = function(){
  return $("#username").val().replace(/[^-_ a-zA-Z0-9]/g,"")
}
user.getCookie = function () {
  var username = localStorage.getItem("im.name") || "";
  if (document.cookie && ! username.length) {
    var cookies = document.cookie.split(";")
    for (i in cookies) {
      var cookie = cookies[i].split("=")
      if (cookie[0].indexOf("imname") !== -1) {
        if (cookie[1] !== 'false' && cookie[1] !== 'undefined' && cookie[1].length) {
          return cookie[1]
        }
      }
    }
  }
  return username
}
user.save = function(){
  var username = user.sanitize()
  if (username != user.username) user.setCookie(username);
}
user.setCookie = function(username){
  console.log("setting to " + username)
  document.cookie = "imname="+username+";path=/;domain=.asdf.us;max-age=1086400"
  localStorage.setItem("im.name", username);
}

user.shaders = new function(){}
user.shaders.init = function(){
  user.shaders.bind()
}
user.shaders.bind = function(){
  user.shaders.buttons = {}
  user.shaders.bindButtons( user.shaders.getShaders() )
  if ('SHADERS' in window) {
    user.shaders.bindButtons( window.SHADERS )
  }
  document.getElementById("add-shader").addEventListener("click", user.shaders.save, false)
  document.getElementById("remove-shader").addEventListener("click", user.shaders.remove, false)
}
user.shaders.bindButtons = function(shaders){
  for (var i = 0; i < shaders.length; i++){
    user.shaders.bindButton(shaders[i])
  }
}
user.shaders.bindButton = function(data){
  console.log("button >> " + data.name)
  var button = document.createElement("button")
  button.innerHTML = data.name
  button.addEventListener("click", user.shaders.load.bind(this, data), false)
  document.getElementById("shaders").appendChild(button)
  user.shaders.buttons[data.name] = button
}
user.shaders.load = function(data){
  console.log(data.name)
  var shader = data.shader
  if (shader && shader.length > 0) {
    user.shaders.name = data.name
    $("#shader").val(shader)
    // pause here?
    shader_build()
    $(".active").removeClass("active")
    $(user.shaders.buttons[data.name]).addClass("active")
  }
}

user.shaders.getShaderIndex = function(){
  return JSON.parse( localStorage.getItem("im.shaders") ) || []
}
user.shaders.getShader = function(name){
  return localStorage.getItem("im.shaders."+name) || null
}
user.shaders.getShaders = function(){
  var shaders = user.shaders.getShaderIndex()
  return shaders.map(function(name){ return { name: name, shader: user.shaders.getShader(name) } })
}
user.shaders.setShaderIndex = function(shaders){
  localStorage.setItem("im.shaders", JSON.stringify(shaders))
}
user.shaders.setShader = function(name, shader){
  if (! name.length || ! shader.length || !name.length || !shader.length) return
  localStorage.setItem("im.shaders." + name, shader)
}
user.shaders.removeShader = function(name){
  localStorage.removeItem("im.shaders." + name)
}

user.shaders.save = function(){
  var name = prompt("enter shader name")
  var shader = $("#shader").val()

  if (! name) return;
  if (shade !== shade_no_error_handling) return;

  user.shaders.setShader(name, shader)

  var shaders = user.shaders.getShaderIndex()
  shaders.push(name)
  user.shaders.setShaderIndex(shaders)

  user.shaders.name = name
  user.shaders.bindButton(name)
}
user.shaders.remove = function(){
  var name = user.shaders.name
  if (! name || ! name.length) return

  var shaders = user.shaders.getShaderIndex()
  if (shaders.splice( shaders.indexOf(name), 1 )) {
    user.shaders.setShaderIndex(shaders)
    user.shaders.removeShader(name)
    $(user.shaders.buttons[name]).remove()
    user.shaders.name = ""
  }
}