]> Dogcows Code - chaz/carfire/blobdiff - CarFire/leveleditor/plugin/leveleditor.vim
adding initial level editor files
[chaz/carfire] / CarFire / leveleditor / plugin / leveleditor.vim
diff --git a/CarFire/leveleditor/plugin/leveleditor.vim b/CarFire/leveleditor/plugin/leveleditor.vim
new file mode 100644 (file)
index 0000000..76a5a0e
--- /dev/null
@@ -0,0 +1,88 @@
+" Car Fire Level Editor for Vim
+" Last Change: 2010 Apr 09
+" Maintainer:  Charles McGarvey <mcgarvey@eng.utah.edu>
+" License:     This file is placed in the public domain.
+
+
+"if exists("loaded_leveleditor")
+    "finish
+"endif
+"let loaded_leveleditor = 1
+
+let s:save_cursorcolumn = &cursorcolumn
+let s:save_expandtab = &expandtab
+let s:save_statusline = &statusline
+
+
+set statusline=%!LevelEditor_Evaluate()
+function! LevelEditor_Evaluate()
+
+    let l:linenum = search('\m^\s*dimensions\s*=\s*\[\d\+,\d\+\]', 'bnw')
+    if l:linenum != 0
+        let l:line = getline(l:linenum)
+        let l:dimensions = matchlist(line, '\m\[\(.*\),\(.*\)\]')
+        let l:dw = get(l:dimensions, 1)
+        let l:dh = get(l:dimensions, 2)
+        let l:linenum = search('\m^\[maptable\]', 'bnW')
+        let l:current = line(".")
+        if l:linenum != 0 && l:current > l:linenum && l:current < l:linenum + l:dh + 1
+            let l:cx = col(".") - 1
+            let l:cy = line(".") - l:linenum - 1
+            setlocal cursorcolumn
+            setlocal expandtab
+            return s:save_statusline."  Map: [".l:cx.",".l:cy."]"
+        else
+                       return s:LevelEditor_Reset()
+        endif
+    else
+        return s:LevelEditor_Reset()
+    endif
+
+endfunction
+
+function! s:LevelEditor_Reset()
+       if s:save_cursorcolumn == 0
+               setlocal nocursorcolumn
+       endif
+       if s:save_expandtab == 0
+               setlocal noexpandtab
+       endif
+       return s:save_statusline
+endfunction
+
+
+if !hasmapto('<Plug>LeInitLevel')
+       map <unique> <Leader>ei <Plug>LeInitLevel
+endif
+noremap <unique> <script> <Plug>LeInitLevel <SID>InitLevel
+noremenu <script> Plugin.Level\ Editor.Initialize\ Buffer <SID>InitLevel
+
+noremap <SID>InitLevel :call <SID>InitLevel()<CR>
+function! s:InitLevel()
+       setlocal filetype=dosini
+    normal ggdGa[metadata]
+    call append(line('$'), "\tauthor = " . expand("$USER"))
+    call append(line('$'), "\tlevelname = My Level")
+    call append(line('$'), "\ttype = Campaign")
+    call append(line('$'), "\tdimensions = ")
+    call append(line('$'), "\ttileset = FuturisticBuilding")
+    call append(line('$'), "\tnumplayers = <1-4>")
+    call append(line('$'), "[maptable]")
+endfunction
+
+
+if !hasmapto('<Plug>LeAddEntity')
+       map <unique> <Leader>ea <Plug>LeAddEntity
+endif
+noremap <unique> <script> <Plug>LeAddEntity <SID>AddEntity
+noremenu <script> Plugin.Level\ Editor.Add\ Entity <SID>AddEntity
+
+noremap <SID>AddEntity :call <SID>AddEntity()<CR>
+function! s:AddEntity()
+       echo Cool!
+endfunction
+
+
+menu <silent> Plugin.Level\ Editor.-Sep- :
+menu <script> Plugin.Level\ Editor.Help :help leveleditor-contents<CR>
+
This page took 0.024432 seconds and 4 git commands to generate.