백괴슬라이드/플러그인/메인
둘러보기로 이동
검색으로 이동
/*
* PluginX 대응 uncyslide 코드
* 원작자: [[사:BANIP|BANIP]]
* 원 소스코드: [[백괴슬라이드/플러그인]]
* 버전 : 1.1.02
* RecentChange: 백괴게임 토론 문서 링크 -> 리버티게임 토론 문서 링크로 수정
* PluginX 이식자: [[사:Senouis|Senouis]]
*/
var slideable = plugin_Slideable();
var create = slideable.create;
var execute = slideable.execute;
var dispose = slideable.dispose;
var rankingSystem = plugin_RankingSystem()("백괴슬라이드/랭킹", function(prev,next){ return Number(prev.time) - Number(next.time)});
var outputKeys = {time:"소요시간"};
var startMap = localStorage.getItem("uncySlide/startmap") || 0;
var game = {
0: {
center: "아래로 밀어주세요.",
bottom: 1
},
1: {
center: "오른쪽으로 밀어보세요.",
right: 2
},
2: {
center: "어디로 밀어보실래요?",
top: 3,
bottom: 3,
},
3: {
center: "반갑습니다. <br>백괴슬라이드입니다.",
bottom: 4,
},
4: {
center: "어디로 당기고 미느냐에 따라, 게임의 결과가 달라집니다.",
bottom: 5,
},
5: {
center: "는 개뿔 이겜 시스템만든다고 그런 장황한거 만들 정신머리는 없었습니다",
bottom: 5.1,
},
5.1: {
center: "진심 힘들었습니다.",
bottom: 5.2,
},
5.2: {
center: "잘했죠?",
bottom: 5.3,
},
5.3: {
center: "위로 밀어서 칭찬하거나 아래로 밀어서 욕해주세요.",
top: 5.4,
bottom: 5.5,
},
5.4: {
center: "감사합니다. 헤헤",
bottom: 6,
},
5.5: {
center: "흑흑.. 힘들었는데..",
bottom: 6,
},
6: {
center: "그래도 미디어위키의 틀에서 벗어난 겜인만큼 최대한 나은 경험을 선사하고자 노력했습니다. 잘부탁드립니다.",
bottom: function(){
localStorage.setItem("uncySlide/startmap","main");
execute("main");
},
},
main: {
center: "<ul><li>아래: 게임시작</li><li>토론: 위</li><li>설명: 오른쪽</li></ul>",
bottom: function(){ execute("start",{count:100,time:Date.now()}) },
top: "debate",
right: "i0",
},
i0: {
center:"가장자리에 화살표 보이죠?",
bottom:"i1"
},
i1: {
center:"화면을 넘겨서 드래그해서 진행하는 게임이에요.",
bottom:"i2"
},
i2: {
center:"원래라면 좀 큰 스케일의 게임으로 만들고 싶었는데..",
bottom:"i3"
},
i3: {
center:"제 역량이 겜 크기에서 다 드러나네요...",
bottom:"i4"
},
i4: {
center:"아무쪼록 힘들게 만들었으니 재밌게 즐겨주세요.",
right:"main"
},
debate: function(){
location.href = "https://liberty.banipest.com/index.php/%ED%86%A0%EB%A1%A0:%EB%B0%B1%EA%B4%B4%EC%8A%AC%EB%9D%BC%EC%9D%B4%EB%93%9C";
},
start: function(arg){
function getRandomDirection(){
switch( Math.ceil(Math.random() * 4) ){
case 1: return "top"; break;
case 2: return "bottom"; break;
case 3: return "left"; break;
case 4: return "right"; break;
}
}
function getColorCode(count,maxcount){
var code = "hsl(" + count / maxcount * 360 +",100%,70%)";
return code
}
var count = arg.count;
var maxcount = arg.maxcount || count;
var time = arg.time;
var $this = $(this);
var timerInterval;
var slideableItem = {
center: function(){
var $this = $(this);
$this.css({
"background": getColorCode(count,maxcount)
});
timerInterval = setInterval(function(){
var overtime = (Date.now() - time) * 0.001;
var printableTime = overtime.toFixed(2);
$this.find(".counter").html(printableTime + "초");
},5)
return "<div class='counter' style='font-size:5vw;'></div><div style='font-size:20vw;'>" + count + "</div>";
}
};
slideableItem[getRandomDirection()] = function(){
clearInterval(timerInterval);
if(count === 1) return execute("result",{count:count - 1,time:time,maxcount:maxcount});
execute("start",{count:count - 1,time:time,maxcount:maxcount})
};
create(slideableItem);
},
result: function(arg){
var maxcount = arg.maxcount || count;
var time = ( (Date.now() - arg.time) / 1000 ).toFixed(2);
var updateParam = {
time: time,
name: mw.config.get("wgUserName")
};
rankingSystem.update(updateParam,function(rankingScore,thisScore){ return rankingScore.time > thisScore.time},outputKeys);
create({
center: "갯수: " + maxcount + " <br/>시간: " + time + "<ul><li>왼쪽: 메인으로</li><li>오른쪽: 토론으로</li></ul>",
left:"main",
right:"debate",
});
}
}
dispose(game, startMap, {});