Script - Ship Viewer
From FreeSpace Wiki
Function
Prevents game itself from loading but instead loads a ship viewer.
Moving mouse cursor with mouse botton pressed to:
Upper left corner | Goes to next ship |
Upper right corner | Zooms in |
Lower left corner | Exits |
Lower right corner | Zooms out |
Table Entry
#State Hooks $State: GS_STATE_INITIAL_PLAYER_SELECT $Hook: [ --Set default values if not rotate_pct then rotate_pct = 40 end if not pitch then pitch = 0 end if not bank then bank = 0 end if not count then count = 1 end if not zoom then zoom = 1.3 end --Figure out if we need to check for triggers --upper-left:#1 Goes to next ship --upper-right:#2 Zooms in --lower-left:#3 Quits --lower-right:#4 Zooms out if ms.getX() == 0 and ms.getY() == 0 then trig = 1 elseif ms.getX()==(gr.getScreenWidth()-1) and ms.getY()==0 then trig = 2 elseif ms.getX()==0 and ms.getY()==(gr.getScreenHeight()-1) then trig = 3 elseif ms.getX()==(gr.getScreenWidth()-1) and ms.getY()==(gr.getScreenHeight()-1) then trig = 4 else trig = 0 end --Do we need to activate trigger? --Make sure that if the mouse is held down for --more than one frame, trigger doesn't activate multiple times if trig>0 then if not middle_was_down then middle_was_down = ms.isButtonDown("Left") activate_trig = middle_was_down elseif ms.isButtonDown("Left")==true then middle_was_down = true activate_trig = false else middle_was_down = false activate_trig = false end else middle_was_down = false activate_trig = false end --Do trigger actions if activate_trig then if trig==1 then count = count + 1 if count > tb.getNumShipClasses() then count = 1 end elseif trig==2 then zoom = zoom-0.1 elseif trig==3 then ba.setEvent("GS_EVENT_QUIT_GAME") elseif trig==4 then zoom = zoom+0.1 end end --If no triggers, do normal mouse stuff --Left changes heading --Middle changes pitch --Right changes bank if trig==0 then if ms.isButtonDown("Left") then rotate_pct = (1-ms.getX()/gr.getScreenWidth())*100 end if ms.isButtonDown("Middle") then pitch = (1-ms.getY()/gr.getScreenHeight())*100 end if ms.isButtonDown("Right") then bank = ms.getX()/gr.getScreenWidth()*100 end end --Finally, render the ship render_ship = tb.getShipClassByIndex(count) render_ship:renderTechModel(0, 0, gr.getScreenWidth()-1, gr.getScreenHeight()-1, rotate_pct, pitch, bank, zoom) ] +Override: true #End