Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
M
mycard
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Packages
Packages
List
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issues
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
syntax_j
mycard
Commits
c4f8ee6d
Commit
c4f8ee6d
authored
Apr 10, 2012
by
神楽坂玲奈
Browse files
Options
Browse Files
Download
Plain Diff
版本0.5.3 大厅实时刷新
parents
e075ad12
e284688b
Changes
4
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
254 additions
and
195 deletions
+254
-195
Rakefile
Rakefile
+1
-1
lib/update.rb
lib/update.rb
+140
-140
lib/ygocore/event.rb
lib/ygocore/event.rb
+53
-53
lib/ygocore/game.rb
lib/ygocore/game.rb
+60
-1
No files found.
Rakefile
View file @
c4f8ee6d
...
@@ -65,4 +65,4 @@ Rake::RDocTask.new do |rdoc|
...
@@ -65,4 +65,4 @@ Rake::RDocTask.new do |rdoc|
rdoc
.
options
<<
'--line-numbers'
rdoc
.
options
<<
'--line-numbers'
end
end
CLOBBER
.
include
%w(error-程序出错请到论坛反馈.txt log.log profile.log config.yml doc ygocore/pics)
+
list
(
'replay'
)
+
list
(
'ygocore/replay'
)
+
list
(
'.'
).
keep_if
{
|
file
|
File
.
basename
(
file
)
==
"Thumbs.db"
}
+
list
(
"graphics/avatars"
).
keep_if
{
|
file
|
File
.
basename
(
file
)
=~
/.*_(?:small|middle|large)\.png/
}
+
list
(
"ygocore/deck"
).
keep_if
{
|
file
|
File
.
basename
(
file
)
!=
'sample.ydk'
}
CLOBBER
.
include
%w(error-程序出错请到论坛反馈.txt log.log profile.log config.yml doc ygocore/pics)
+
list
(
'replay'
)
+
list
(
'ygocore/replay'
)
+
list
(
'.'
).
keep_if
{
|
file
|
File
.
basename
(
file
)
==
"Thumbs.db"
}
+
list
(
"graphics/avatars"
).
keep_if
{
|
file
|
File
.
basename
(
file
)
=~
/.*_(?:small|middle|large)\.png/
}
+
list
(
"ygocore/deck"
).
keep_if
{
|
file
|
File
.
basename
(
file
)
!=
'sample.ydk'
}
\ No newline at end of file
lib/update.rb
View file @
c4f8ee6d
This diff is collapsed.
Click to expand it.
lib/ygocore/event.rb
View file @
c4f8ee6d
class
Game_Event
class
Game_Event
def
self
.
parse
(
header
,
data
)
def
self
.
parse
(
header
,
data
)
case
header
case
header
when
:login
when
:login
if
data
if
data
Login
.
new
parse_user
data
Login
.
new
parse_user
data
else
else
Error
.
new
(
'登录'
,
'用户名或密码错误'
)
Error
.
new
(
'登录'
,
'用户名或密码错误'
)
end
end
when
:users
when
:users
AllUsers
.
new
data
.
collect
{
|
user
|
parse_user
(
user
)}
AllUsers
.
new
data
.
collect
{
|
user
|
parse_user
(
user
)}
when
:rooms
when
:rooms
rooms_wait
=
[]
rooms_wait
=
[]
rooms_start
=
[]
rooms_start
=
[]
data
.
each
do
|
room
|
data
.
each
do
|
room
|
room
=
parse_room
(
room
)
room
=
parse_room
(
room
)
if
room
.
full?
if
room
.
full?
rooms_start
<<
room
rooms_start
<<
room
else
else
rooms_wait
<<
room
rooms_wait
<<
room
end
end
end
end
AllRooms
.
new
rooms_wait
+
rooms_start
AllRooms
.
new
rooms_wait
+
rooms_start
when
:newuser
when
:newuser
NewUser
.
new
parse_user
data
NewUser
.
new
parse_user
data
when
:missinguser
when
:missinguser
MissingUser
.
new
parse_user
data
MissingUser
.
new
parse_user
data
when
:newroom
when
:newroom
NewRoom
.
new
parse_room
data
NewRoom
.
new
parse_room
data
when
:missingroom
when
:missingroom
MissingRoom
.
new
parse_room
data
MissingRoom
.
new
parse_room
data
when
:chat
when
:chat
case
data
[
:channel
]
case
data
[
:channel
]
when
:lobby
when
:lobby
Chat
.
new
ChatMessage
.
new
User
.
new
(
data
[
:from
][
:id
],
data
[
:from
][
:name
]),
data
[
:message
],
:lobby
Chat
.
new
ChatMessage
.
new
User
.
new
(
data
[
:from
][
:id
],
data
[
:from
][
:name
]),
data
[
:message
],
:lobby
else
else
Chat
.
new
ChatMessage
.
new
User
.
new
(
data
[
:from
][
:id
],
data
[
:from
][
:name
]),
data
[
:message
],
User
.
new
(
data
[
:channel
])
Chat
.
new
ChatMessage
.
new
User
.
new
(
data
[
:from
][
:id
],
data
[
:from
][
:name
]),
data
[
:message
],
User
.
new
(
data
[
:channel
])
end
end
end
end
end
end
def
self
.
parse_room
(
room
)
def
self
.
parse_room
(
room
)
result
=
Room
.
new
(
room
[
:id
],
room
[
:name
])
result
=
Room
.
new
(
room
[
:id
],
room
[
:name
])
result
.
player1
=
room
[
:player1
]
&&
parse_user
(
room
[
:player1
])
result
.
player1
=
room
[
:player1
]
&&
parse_user
(
room
[
:player1
])
result
.
player2
=
room
[
:player2
]
&&
parse_user
(
room
[
:player2
])
result
.
player2
=
room
[
:player2
]
&&
parse_user
(
room
[
:player2
])
result
.
pvp
=
room
[
:pvp
]
result
.
pvp
=
room
[
:pvp
]
result
.
match
=
room
[
:match
]
result
.
match
=
room
[
:match
]
result
.
status
=
room
[
:status
]
result
.
status
=
room
[
:status
]
result
result
end
end
def
self
.
parse_user
(
user
)
def
self
.
parse_user
(
user
)
User
.
new
(
user
[
:id
],
user
[
:name
],
user
[
:certified
])
User
.
new
(
user
[
:id
],
user
[
:name
],
user
[
:certified
])
end
end
end
end
\ No newline at end of file
lib/ygocore/game.rb
View file @
c4f8ee6d
...
@@ -5,6 +5,7 @@ require 'open-uri'
...
@@ -5,6 +5,7 @@ require 'open-uri'
class
Ygocore
<
Game
class
Ygocore
<
Game
attr_reader
:username
attr_reader
:username
attr_reader
:password
attr_reader
:password
attr_reader
:irc_users
@@config
=
YAML
.
load_file
(
"lib/ygocore/server.yml"
)
@@config
=
YAML
.
load_file
(
"lib/ygocore/server.yml"
)
def
initialize
def
initialize
super
super
...
@@ -13,6 +14,7 @@ class Ygocore < Game
...
@@ -13,6 +14,7 @@ class Ygocore < Game
load
'lib/ygocore/room.rb'
load
'lib/ygocore/room.rb'
load
'lib/ygocore/scene_lobby.rb'
load
'lib/ygocore/scene_lobby.rb'
require
'json'
require
'json'
@irc_users
=
[]
end
end
def
refresh_interval
def
refresh_interval
60
60
...
@@ -38,6 +40,58 @@ class Ygocore < Game
...
@@ -38,6 +40,58 @@ class Ygocore < Game
end
end
end
end
def
user
=
(
user
)
super
begin
require
'net/yail'
$log
.
info
(
'聊天'
){
user
.
inspect
}
@irc
=
Net
::
YAIL
.
new
(
address:
'card.touhou.cc'
,
username:
hexencode
(
user
.
id
),
nicknames:
[
hexencode
(
user
.
name
),
hexencode
(
"
#{
user
.
name
}
_
#{
rand
(
10000
)
}
"
),
hexencode
(
"
#{
user
.
name
}
_
#{
rand
(
10000
)
}
"
)])
$log
.
info
(
'聊天连接'
)
@irc
.
on_welcome
proc
{
|
event
|
$log
.
info
(
'连接聊天服务器成功'
);
Game_Event
.
push
(
Game_Event
::
Chat
.
new
(
ChatMessage
.
new
(
User
.
new
(
:system
,
'system'
),
'聊天服务器连接成功,聊天功能测试中,可能引发程序崩溃,如果崩得过于频繁请暂时不要使用.'
,
:lobby
)));
@irc
.
join
(
'#lobby'
)
}
@irc
.
hearing_msg
{
|
event
|
user
=
User
.
new
(
hexdecode
(
event
.
msg
.
user
).
to_sym
,
hexdecode
(
event
.
nick
))
Game_Event
.
push
Game_Event
::
Chat
.
new
(
ChatMessage
.
new
(
user
,
event
.
message
,
event
.
channel
?
event
.
channel
[
1
,
event
.
channel
.
size
-
1
].
to_sym
:
user
))
}
@irc
.
heard_namreply
{
|
event
|
@irc_users
.
concat
@irc
.
instance_variable_get
(
:@nicklist
).
collect
{
|
user
|
User
.
new
(
hexdecode
(
user
).
to_sym
,
hexdecode
(
user
))
}
Game_Event
.
push
Game_Event
::
AllUsers
.
new
(
@users
|
@irc_users
)
$log
.
info
(
'irc用户列表'
){
user
}
}
@irc
.
heard_join
{
|
event
|
user
=
User
.
new
(
hexdecode
(
event
.
msg
.
user
).
to_sym
,
hexdecode
(
event
.
nick
))
Game_Event
.
push
Game_Event
::
NewUser
.
new
(
user
)
$log
.
info
(
'irc用户上线'
){
user
}
}
@irc
.
heard_quit
{
|
event
|
user
=
User
.
new
(
hexdecode
(
event
.
msg
.
user
).
to_sym
,
hexdecode
(
event
.
nick
))
Game_Event
.
push
Game_Event
::
MissingUser
.
new
(
user
)
$log
.
info
(
'irc用户下线'
){
user
}
}
#@irc.hearing_join {}
$log
.
info
(
'聊天开始监听'
)
@irc
.
start_listening
$log
.
info
(
'聊天加载完毕'
)
rescue
Exception
=>
exception
$log
.
error
(
'聊天出错'
){[
exception
.
inspect
,
*
exception
.
backtrace
].
collect
{
|
str
|
str
.
encode
(
"UTF-8"
)}.
join
(
"
\n
"
)}
Game_Event
.
push
(
Game_Event
::
Chat
.
new
(
ChatMessage
.
new
(
User
.
new
(
:system
,
'system'
),
'连接聊天服务器失败'
,
:lobby
)))
end
end
def
chat
(
chatmessage
)
$log
.
info
(
'发送聊天消息'
){
chatmessage
.
inspect
}
return
unless
@irc
case
chatmessage
.
channel
when
Symbol
@irc
.
msg
"#
#{
chatmessage
.
channel
}
"
,
chatmessage
.
message
when
User
@irc
.
msg
hexencode
(
chatmessage
.
channel
.
id
),
chatmessage
.
message
end
$log
.
info
(
'发送聊天消息完毕'
)
end
def
host
(
room_name
,
room_config
)
def
host
(
room_name
,
room_config
)
room
=
Room
.
new
(
0
,
room_name
)
room
=
Room
.
new
(
0
,
room_name
)
room
.
pvp
=
room_config
[
:pvp
]
room
.
pvp
=
room_config
[
:pvp
]
...
@@ -65,6 +119,11 @@ class Ygocore < Game
...
@@ -65,6 +119,11 @@ class Ygocore < Game
@recv
.
exit
if
@recv
@recv
.
exit
if
@recv
@recv
=
nil
@recv
=
nil
end
end
def
exit
(
@irc
.
quit
if
@irc
)
rescue
nil
@irc
=
nil
@chat_thread
=
nil
end
def
ygocore_path
def
ygocore_path
"ygocore/gframe.exe"
"ygocore/gframe.exe"
end
end
...
@@ -193,4 +252,4 @@ class Ygocore < Game
...
@@ -193,4 +252,4 @@ class Ygocore < Game
end
end
end
end
get_announcements
get_announcements
end
end
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment