Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Y
YGOMobile
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
fallenstardust
YGOMobile
Commits
6a37a700
Commit
6a37a700
authored
Jun 17, 2022
by
fallenstardust
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
迁移服务器列表到fragment
parent
6faf195c
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
292 additions
and
258 deletions
+292
-258
mobile/src/main/java/cn/garymb/ygomobile/GameUriManager.java
mobile/src/main/java/cn/garymb/ygomobile/GameUriManager.java
+7
-5
mobile/src/main/java/cn/garymb/ygomobile/ui/home/HomeActivity.java
...c/main/java/cn/garymb/ygomobile/ui/home/HomeActivity.java
+4
-237
mobile/src/main/java/cn/garymb/ygomobile/ui/home/HomeFragment.java
...c/main/java/cn/garymb/ygomobile/ui/home/HomeFragment.java
+269
-4
mobile/src/main/res/layout/activity_home.xml
mobile/src/main/res/layout/activity_home.xml
+0
-12
mobile/src/main/res/layout/main_fragment.xml
mobile/src/main/res/layout/main_fragment.xml
+12
-0
No files found.
mobile/src/main/java/cn/garymb/ygomobile/GameUriManager.java
View file @
6a37a700
...
@@ -18,7 +18,8 @@ import android.text.TextUtils;
...
@@ -18,7 +18,8 @@ import android.text.TextUtils;
import
android.util.Log
;
import
android.util.Log
;
import
android.widget.Toast
;
import
android.widget.Toast
;
import
com.ourygo.assistant.base.listener.OnDeRoomListener
;
import
androidx.fragment.app.Fragment
;
import
com.ourygo.assistant.util.YGODAUtil
;
import
com.ourygo.assistant.util.YGODAUtil
;
import
java.io.File
;
import
java.io.File
;
...
@@ -29,7 +30,7 @@ import cn.garymb.ygodata.YGOGameOptions;
...
@@ -29,7 +30,7 @@ import cn.garymb.ygodata.YGOGameOptions;
import
cn.garymb.ygomobile.bean.Deck
;
import
cn.garymb.ygomobile.bean.Deck
;
import
cn.garymb.ygomobile.lite.R
;
import
cn.garymb.ygomobile.lite.R
;
import
cn.garymb.ygomobile.ui.cards.DeckManagerActivity
;
import
cn.garymb.ygomobile.ui.cards.DeckManagerActivity
;
import
cn.garymb.ygomobile.ui.home.
MainActivity
;
import
cn.garymb.ygomobile.ui.home.
HomeFragment
;
import
cn.garymb.ygomobile.ui.preference.SettingsActivity
;
import
cn.garymb.ygomobile.ui.preference.SettingsActivity
;
import
cn.garymb.ygomobile.utils.FileUtils
;
import
cn.garymb.ygomobile.utils.FileUtils
;
import
cn.garymb.ygomobile.utils.IOUtils
;
import
cn.garymb.ygomobile.utils.IOUtils
;
...
@@ -39,6 +40,7 @@ import ocgcore.DataManager;
...
@@ -39,6 +40,7 @@ import ocgcore.DataManager;
public
class
GameUriManager
{
public
class
GameUriManager
{
private
Activity
activity
;
private
Activity
activity
;
private
Fragment
fragment
;
private
String
fname
;
private
String
fname
;
public
GameUriManager
(
Activity
activity
)
{
public
GameUriManager
(
Activity
activity
)
{
...
@@ -254,9 +256,9 @@ public class GameUriManager {
...
@@ -254,9 +256,9 @@ public class GameUriManager {
}
else
if
(
Constants
.
URI_ROOM
.
equals
(
host
))
{
}
else
if
(
Constants
.
URI_ROOM
.
equals
(
host
))
{
YGODAUtil
.
deRoomListener
(
uri
,
(
host1
,
port
,
password
,
exception
)
->
{
YGODAUtil
.
deRoomListener
(
uri
,
(
host1
,
port
,
password
,
exception
)
->
{
if
(
TextUtils
.
isEmpty
(
exception
))
if
(
TextUtils
.
isEmpty
(
exception
))
if
(
activity
instanceof
MainActivity
)
{
if
(
fragment
instanceof
HomeFragment
)
{
MainActivity
mainActivity
=
(
MainActivity
)
activity
;
HomeFragment
homeFragment
=
(
HomeFragment
)
fragment
;
mainActivity
.
quickjoinRoom
(
host1
,
port
,
password
);
homeFragment
.
quickjoinRoom
(
host1
,
port
,
password
);
}
else
{
}
else
{
YGOUtil
.
show
(
exception
);
YGOUtil
.
show
(
exception
);
}
}
...
...
mobile/src/main/java/cn/garymb/ygomobile/ui/home/HomeActivity.java
View file @
6a37a700
...
@@ -82,11 +82,8 @@ public abstract class HomeActivity extends BaseActivity implements OnDuelAssista
...
@@ -82,11 +82,8 @@ public abstract class HomeActivity extends BaseActivity implements OnDuelAssista
private
static
final
int
ID_MAINACTIVITY
=
0
;
private
static
final
int
ID_MAINACTIVITY
=
0
;
protected
SwipeMenuRecyclerView
mServerList
;
long
exitLasttime
=
0
;
long
exitLasttime
=
0
;
private
ServerListAdapter
mServerListAdapter
;
private
ServerListManager
mServerListManager
;
private
DuelAssistantManagement
duelAssistantManagement
;
private
DuelAssistantManagement
duelAssistantManagement
;
private
CardManager
mCardManager
;
private
CardManager
mCardManager
;
private
CardDetailRandom
mCardDetailRandom
;
private
CardDetailRandom
mCardDetailRandom
;
...
@@ -102,11 +99,6 @@ public abstract class HomeActivity extends BaseActivity implements OnDuelAssista
...
@@ -102,11 +99,6 @@ public abstract class HomeActivity extends BaseActivity implements OnDuelAssista
setExitAnimEnable
(
false
);
setExitAnimEnable
(
false
);
mImageLoader
=
new
ImageLoader
(
false
);
mImageLoader
=
new
ImageLoader
(
false
);
mCardManager
=
DataManager
.
get
().
getCardManager
();
mCardManager
=
DataManager
.
get
().
getCardManager
();
//server list
initServerlist
();
//event
EventBus
.
getDefault
().
register
(
this
);
QbSdk
.
PreInitCallback
cb
=
new
QbSdk
.
PreInitCallback
()
{
QbSdk
.
PreInitCallback
cb
=
new
QbSdk
.
PreInitCallback
()
{
@Override
@Override
...
@@ -137,8 +129,8 @@ public abstract class HomeActivity extends BaseActivity implements OnDuelAssista
...
@@ -137,8 +129,8 @@ public abstract class HomeActivity extends BaseActivity implements OnDuelAssista
checkNotch
();
checkNotch
();
//showNewbieGuide("homePage");
//showNewbieGuide("homePage");
initBottomNavigationBar
();
initBottomNavigationBar
();
onItemSelect
();
}
}
private
void
initBottomNavigationBar
()
{
private
void
initBottomNavigationBar
()
{
// 获取页面上的底部导航栏控件
// 获取页面上的底部导航栏控件
BottomNavigationView
navView
=
findViewById
(
R
.
id
.
nav_view
);
BottomNavigationView
navView
=
findViewById
(
R
.
id
.
nav_view
);
...
@@ -153,33 +145,12 @@ public abstract class HomeActivity extends BaseActivity implements OnDuelAssista
...
@@ -153,33 +145,12 @@ public abstract class HomeActivity extends BaseActivity implements OnDuelAssista
NavigationUI
.
setupWithNavController
(
navView
,
navController
);
NavigationUI
.
setupWithNavController
(
navView
,
navController
);
getSupportActionBar
().
hide
();
getSupportActionBar
().
hide
();
}
}
//调用
private
void
onItemSelect
()
{
mOnItemSelectedListener
=
new
BottomNavigationView
.
OnNavigationItemSelectedListener
()
{
@Override
public
boolean
onNavigationItemSelected
(
@NonNull
MenuItem
item
)
{
switch
(
item
.
getItemId
())
{
case
R
.
id
.
home_fragment
:
return
true
;
case
R
.
id
.
mycard_fragment
:
return
true
;
case
R
.
id
.
setting_fragment
:
return
true
;
}
return
false
;
}
};
}
@Override
@Override
protected
void
onResume
()
{
protected
void
onResume
()
{
super
.
onResume
();
super
.
onResume
();
duelAssistantCheck
();
duelAssistantCheck
();
//server list
mServerListManager
.
syncLoadData
();
}
}
@Override
@Override
...
@@ -212,7 +183,7 @@ public abstract class HomeActivity extends BaseActivity implements OnDuelAssista
...
@@ -212,7 +183,7 @@ public abstract class HomeActivity extends BaseActivity implements OnDuelAssista
@Override
@Override
public
void
onJoinRoom
(
String
host
,
int
port
,
String
password
,
int
id
)
{
public
void
onJoinRoom
(
String
host
,
int
port
,
String
password
,
int
id
)
{
if
(
id
==
ID_MAINACTIVITY
)
{
if
(
id
==
ID_MAINACTIVITY
)
{
quickjoinRoom
(
host
,
port
,
password
);
//
quickjoinRoom(host, port, password);
}
}
}
}
...
@@ -262,29 +233,6 @@ public abstract class HomeActivity extends BaseActivity implements OnDuelAssista
...
@@ -262,29 +233,6 @@ public abstract class HomeActivity extends BaseActivity implements OnDuelAssista
EventBus
.
getDefault
().
unregister
(
this
);
EventBus
.
getDefault
().
unregister
(
this
);
}
}
@Subscribe
(
threadMode
=
ThreadMode
.
MAIN
)
public
void
onServerInfoEvent
(
ServerInfoEvent
event
)
{
if
(
event
.
delete
)
{
DialogPlus
dialogPlus
=
new
DialogPlus
(
getContext
());
dialogPlus
.
setTitle
(
R
.
string
.
question
);
dialogPlus
.
setMessage
(
R
.
string
.
delete_server_info
);
dialogPlus
.
setMessageGravity
(
Gravity
.
CENTER_HORIZONTAL
);
dialogPlus
.
setLeftButtonListener
((
dialog
,
which
)
->
{
mServerListManager
.
delete
(
event
.
position
);
mServerListAdapter
.
notifyDataSetChanged
();
dialog
.
dismiss
();
});
dialogPlus
.
setCancelable
(
true
);
dialogPlus
.
setOnCloseLinster
(
null
);
dialogPlus
.
show
();
}
else
if
(
event
.
join
)
{
joinRoom
(
event
.
position
);
//showNewbieGuide("joinRoom");
}
else
{
mServerListManager
.
showEditDialog
(
event
.
position
);
}
}
@Override
@Override
public
boolean
onCreateOptionsMenu
(
Menu
menu
)
{
public
boolean
onCreateOptionsMenu
(
Menu
menu
)
{
getMenuInflater
().
inflate
(
R
.
menu
.
main
,
menu
);
getMenuInflater
().
inflate
(
R
.
menu
.
main
,
menu
);
...
@@ -322,7 +270,7 @@ public abstract class HomeActivity extends BaseActivity implements OnDuelAssista
...
@@ -322,7 +270,7 @@ public abstract class HomeActivity extends BaseActivity implements OnDuelAssista
if
(
mCardDetailRandom
!=
null
)
{
if
(
mCardDetailRandom
!=
null
)
{
mCardDetailRandom
.
show
();
mCardDetailRandom
.
show
();
}
}
openGame
();
//
openGame();
break
;
break
;
case
R
.
id
.
action_settings
:
{
case
R
.
id
.
action_settings
:
{
Intent
intent
=
new
Intent
(
this
,
SettingsActivity
.
class
);
Intent
intent
=
new
Intent
(
this
,
SettingsActivity
.
class
);
...
@@ -394,102 +342,7 @@ public abstract class HomeActivity extends BaseActivity implements OnDuelAssista
...
@@ -394,102 +342,7 @@ public abstract class HomeActivity extends BaseActivity implements OnDuelAssista
}
}
}
}
public
void
joinRoom
(
int
position
)
{
ServerInfo
serverInfo
=
mServerListAdapter
.
getItem
(
position
);
if
(
serverInfo
==
null
)
{
return
;
}
//进入房间
DialogPlus
builder
=
new
DialogPlus
(
getContext
());
builder
.
setTitle
(
R
.
string
.
intput_room_name
);
builder
.
setContentView
(
R
.
layout
.
dialog_room_name
);
EditText
editText
=
builder
.
bind
(
R
.
id
.
room_name
);
ListView
listView
=
builder
.
bind
(
R
.
id
.
room_list
);
TextView
text_abt_roomlist
=
builder
.
bind
(
R
.
id
.
abt_room_list
);
SimpleListAdapter
simpleListAdapter
=
new
SimpleListAdapter
(
getContext
());
simpleListAdapter
.
set
(
AppsSettings
.
get
().
getLastRoomList
());
if
(
AppsSettings
.
get
().
getLastRoomList
().
size
()
>
0
)
text_abt_roomlist
.
setVisibility
(
View
.
VISIBLE
);
else
text_abt_roomlist
.
setVisibility
(
View
.
GONE
);
listView
.
setAdapter
(
simpleListAdapter
);
listView
.
setOnItemClickListener
((
a
,
v
,
pos
,
index
)
->
{
String
name
=
simpleListAdapter
.
getItemById
(
index
);
editText
.
setText
(
name
);
});
editText
.
setOnEditorActionListener
((
v
,
actionId
,
event
)
->
{
if
(
actionId
==
EditorInfo
.
IME_ACTION_DONE
)
{
builder
.
dismiss
();
String
name
=
editText
.
getText
().
toString
();
if
(!
TextUtils
.
isEmpty
(
name
))
{
List
<
String
>
items
=
simpleListAdapter
.
getItems
();
int
index
=
items
.
indexOf
(
name
);
if
(
index
>=
0
)
{
items
.
remove
(
index
);
items
.
add
(
0
,
name
);
}
else
{
items
.
add
(
0
,
name
);
}
AppsSettings
.
get
().
setLastRoomList
(
items
);
simpleListAdapter
.
notifyDataSetChanged
();
}
joinGame
(
serverInfo
,
name
);
return
true
;
}
return
false
;
});
listView
.
setOnItemLongClickListener
((
a
,
v
,
i
,
index
)
->
{
String
name
=
simpleListAdapter
.
getItemById
(
index
);
int
pos
=
simpleListAdapter
.
findItem
(
name
);
if
(
pos
>=
0
)
{
simpleListAdapter
.
remove
(
pos
);
simpleListAdapter
.
notifyDataSetChanged
();
AppsSettings
.
get
().
setLastRoomList
(
simpleListAdapter
.
getItems
());
}
return
true
;
});
builder
.
setLeftButtonText
(
R
.
string
.
join_game
);
builder
.
setLeftButtonListener
((
dlg
,
i
)
->
{
dlg
.
dismiss
();
if
(
Build
.
VERSION
.
SDK_INT
>=
23
&&
YGOStarter
.
isGameRunning
(
getActivity
()))
{
Toast
toast
=
Toast
.
makeText
(
getApplicationContext
(),
R
.
string
.
tip_return_to_duel
,
Toast
.
LENGTH_SHORT
);
toast
.
setGravity
(
Gravity
.
CENTER
,
0
,
0
);
toast
.
show
();
openGame
();
}
else
{
//保存名字
String
name
=
editText
.
getText
().
toString
();
if
(!
TextUtils
.
isEmpty
(
name
))
{
List
<
String
>
items
=
simpleListAdapter
.
getItems
();
int
index
=
items
.
indexOf
(
name
);
if
(
index
>=
0
)
{
items
.
remove
(
index
);
items
.
add
(
0
,
name
);
}
else
{
items
.
add
(
0
,
name
);
}
AppsSettings
.
get
().
setLastRoomList
(
items
);
simpleListAdapter
.
notifyDataSetChanged
();
}
joinGame
(
serverInfo
,
name
);
}
});
builder
.
setOnCloseLinster
((
dlg
)
->
{
dlg
.
dismiss
();
});
builder
.
setOnCancelListener
((
dlg
)
->
{
});
builder
.
show
();
}
void
joinGame
(
ServerInfo
serverInfo
,
String
name
)
{
showTipsToast
();
YGOGameOptions
options
=
new
YGOGameOptions
();
options
.
mServerAddr
=
serverInfo
.
getServerAddr
();
options
.
mUserName
=
serverInfo
.
getPlayerName
();
options
.
mPort
=
serverInfo
.
getPort
();
options
.
mRoomName
=
name
;
YGOStarter
.
startGame
(
this
,
options
);
}
protected
abstract
void
checkResourceDownload
(
ResCheckTask
.
ResCheckListener
listener
);
protected
abstract
void
checkResourceDownload
(
ResCheckTask
.
ResCheckListener
listener
);
...
@@ -552,59 +405,6 @@ public abstract class HomeActivity extends BaseActivity implements OnDuelAssista
...
@@ -552,59 +405,6 @@ public abstract class HomeActivity extends BaseActivity implements OnDuelAssista
});
});
}
}
public
void
quickjoinRoom
(
String
host
,
int
port
,
String
password
)
{
String
message
;
if
(!
TextUtils
.
isEmpty
(
host
))
message
=
getString
(
R
.
string
.
quick_join
)
+
"\nIP:"
+
host
+
"\n端口:"
+
port
+
"\n密码:"
+
password
;
else
message
=
getString
(
R
.
string
.
quick_join
)
+
":\""
+
password
+
"\""
;
DialogPlus
dialog
=
new
DialogPlus
(
this
);
dialog
.
setTitle
(
R
.
string
.
question
);
dialog
.
setMessage
(
message
);
dialog
.
setMessageGravity
(
Gravity
.
CENTER_HORIZONTAL
);
dialog
.
setLeftButtonText
(
R
.
string
.
Cancel
);
dialog
.
setRightButtonText
(
R
.
string
.
join
);
dialog
.
show
();
dialog
.
setRightButtonListener
((
dlg
,
s
)
->
{
dialog
.
dismiss
();
ServerListAdapter
mServerListAdapter
=
new
ServerListAdapter
(
this
);
ServerListManager
mServerListManager
=
new
ServerListManager
(
this
,
mServerListAdapter
);
mServerListManager
.
syncLoadData
();
File
xmlFile
=
new
File
(
getFilesDir
(),
Constants
.
SERVER_FILE
);
VUiKit
.
defer
().
when
(()
->
{
ServerList
assetList
=
ServerListManager
.
readList
(
this
.
getAssets
().
open
(
ASSET_SERVER_LIST
));
ServerList
fileList
=
xmlFile
.
exists
()
?
ServerListManager
.
readList
(
new
FileInputStream
(
xmlFile
))
:
null
;
if
(
fileList
==
null
)
{
return
assetList
;
}
if
(
fileList
.
getVercode
()
<
assetList
.
getVercode
())
{
xmlFile
.
delete
();
return
assetList
;
}
return
fileList
;
}).
done
((
list
)
->
{
if
(
list
!=
null
)
{
String
host1
=
host
;
int
port1
=
port
;
ServerInfo
serverInfo
=
list
.
getServerInfoList
().
get
(
0
);
if
(!
TextUtils
.
isEmpty
(
host1
))
{
serverInfo
.
setServerAddr
(
host1
);
serverInfo
.
setPort
(
port1
);
}
joinGame
(
serverInfo
,
password
);
}
});
});
dialog
.
setLeftButtonListener
((
dlg
,
s
)
->
{
dialog
.
dismiss
();
});
}
public
void
setRandomCardDetail
()
{
public
void
setRandomCardDetail
()
{
//加载数据库中所有卡片卡片
//加载数据库中所有卡片卡片
mCardManager
.
loadCards
();
mCardManager
.
loadCards
();
...
@@ -617,39 +417,6 @@ public abstract class HomeActivity extends BaseActivity implements OnDuelAssista
...
@@ -617,39 +417,6 @@ public abstract class HomeActivity extends BaseActivity implements OnDuelAssista
mCardDetailRandom
=
CardDetailRandom
.
genRandomCardDetail
(
this
,
mImageLoader
,
cardInfo
);
mCardDetailRandom
=
CardDetailRandom
.
genRandomCardDetail
(
this
,
mImageLoader
,
cardInfo
);
}
}
public
void
showTipsToast
()
{
if
(!
YGOStarter
.
isGameRunning
(
getActivity
()))
{
String
[]
tipsList
=
this
.
getResources
().
getStringArray
(
R
.
array
.
tips
);
int
x
=
(
int
)
(
Math
.
random
()
*
tipsList
.
length
);
String
tips
=
tipsList
[
x
];
Toast
.
makeText
(
this
,
tips
,
Toast
.
LENGTH_LONG
).
show
();
}
}
public
void
initServerlist
()
{
mServerList
=
$
(
R
.
id
.
list_server
);
mServerListAdapter
=
new
ServerListAdapter
(
this
);
LayoutInflater
infla
=
LayoutInflater
.
from
(
this
);
View
footView
=
infla
.
inflate
(
R
.
layout
.
item_ic_add
,
null
);
TextView
add_server
=
footView
.
findViewById
(
R
.
id
.
add_server
);
add_server
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
@Override
public
void
onClick
(
View
v
)
{
mServerListManager
.
addServer
();
}
});
mServerListAdapter
.
addFooterView
(
footView
);
//server list
LinearLayoutManager
linearLayoutManager
=
new
LinearLayoutManager
(
this
);
mServerList
.
setLayoutManager
(
linearLayoutManager
);
DividerItemDecoration
dividerItemDecoration
=
new
DividerItemDecoration
(
this
,
DividerItemDecoration
.
VERTICAL
);
mServerList
.
addItemDecoration
(
dividerItemDecoration
);
mServerList
.
setAdapter
(
mServerListAdapter
);
mServerListManager
=
new
ServerListManager
(
this
,
mServerListAdapter
);
mServerListManager
.
bind
(
mServerList
);
mServerListManager
.
syncLoadData
();
}
/*
/*
//https://www.jianshu.com/p/99649af3b191
//https://www.jianshu.com/p/99649af3b191
public void showNewbieGuide(String scene) {
public void showNewbieGuide(String scene) {
...
...
mobile/src/main/java/cn/garymb/ygomobile/ui/home/HomeFragment.java
View file @
6a37a700
package
cn.garymb.ygomobile.ui.home
;
package
cn.garymb.ygomobile.ui.home
;
import
static
cn
.
garymb
.
ygomobile
.
Constants
.
ASSET_SERVER_LIST
;
import
android.content.Intent
;
import
android.content.Intent
;
import
android.net.Uri
;
import
android.os.Build
;
import
android.os.Bundle
;
import
android.os.Bundle
;
import
android.text.TextUtils
;
import
android.view.Gravity
;
import
android.view.LayoutInflater
;
import
android.view.LayoutInflater
;
import
android.view.View
;
import
android.view.View
;
import
android.view.ViewGroup
;
import
android.view.ViewGroup
;
import
android.view.inputmethod.EditorInfo
;
import
android.widget.EditText
;
import
android.widget.ImageView
;
import
android.widget.ImageView
;
import
android.widget.ListView
;
import
android.widget.TextView
;
import
android.widget.Toast
;
import
androidx.annotation.NonNull
;
import
androidx.annotation.NonNull
;
import
androidx.annotation.Nullable
;
import
androidx.annotation.Nullable
;
import
androidx.recyclerview.widget.DividerItemDecoration
;
import
androidx.recyclerview.widget.LinearLayoutManager
;
import
com.tubb.smrv.SwipeMenuRecyclerView
;
import
org.greenrobot.eventbus.EventBus
;
import
org.greenrobot.eventbus.Subscribe
;
import
org.greenrobot.eventbus.ThreadMode
;
import
java.io.File
;
import
java.io.FileInputStream
;
import
java.io.IOException
;
import
java.util.List
;
import
cn.garymb.ygodata.YGOGameOptions
;
import
cn.garymb.ygomobile.App
;
import
cn.garymb.ygomobile.AppsSettings
;
import
cn.garymb.ygomobile.Constants
;
import
cn.garymb.ygomobile.Constants
;
import
cn.garymb.ygomobile.YGOStarter
;
import
cn.garymb.ygomobile.YGOStarter
;
import
cn.garymb.ygomobile.base.BaseFragemnt
;
import
cn.garymb.ygomobile.base.BaseFragemnt
;
import
cn.garymb.ygomobile.bean.Deck
;
import
cn.garymb.ygomobile.bean.ServerInfo
;
import
cn.garymb.ygomobile.bean.ServerList
;
import
cn.garymb.ygomobile.bean.events.ServerInfoEvent
;
import
cn.garymb.ygomobile.lite.R
;
import
cn.garymb.ygomobile.lite.R
;
import
cn.garymb.ygomobile.ui.activities.FileLogActivity
;
import
cn.garymb.ygomobile.ui.activities.FileLogActivity
;
import
cn.garymb.ygomobile.ui.adapters.ServerListAdapter
;
import
cn.garymb.ygomobile.ui.adapters.SimpleListAdapter
;
import
cn.garymb.ygomobile.ui.cards.CardSearchActivity
;
import
cn.garymb.ygomobile.ui.cards.DeckManagerActivity
;
import
cn.garymb.ygomobile.ui.cards.deck.DeckUtils
;
import
cn.garymb.ygomobile.ui.mycard.MyCardActivity
;
import
cn.garymb.ygomobile.ui.mycard.MyCardActivity
;
import
cn.garymb.ygomobile.ui.plus.DialogPlus
;
import
cn.garymb.ygomobile.ui.plus.VUiKit
;
import
cn.garymb.ygomobile.ui.widget.Shimmer
;
import
cn.garymb.ygomobile.ui.widget.Shimmer
;
import
cn.garymb.ygomobile.ui.widget.ShimmerTextView
;
import
cn.garymb.ygomobile.ui.widget.ShimmerTextView
;
import
cn.garymb.ygomobile.utils.YGOUtil
;
public
class
HomeFragment
extends
BaseFragemnt
{
public
class
HomeFragment
extends
BaseFragemnt
{
private
static
final
int
ID_HOMEFRAGMENT
=
0
;
ShimmerTextView
tv
;
ShimmerTextView
tv
;
Shimmer
shimmer
;
Shimmer
shimmer
;
protected
SwipeMenuRecyclerView
mServerList
;
private
ServerListAdapter
mServerListAdapter
;
private
ServerListManager
mServerListManager
;
@Nullable
@Nullable
@Override
@Override
...
@@ -39,11 +78,32 @@ public class HomeFragment extends BaseFragemnt {
...
@@ -39,11 +78,32 @@ public class HomeFragment extends BaseFragemnt {
layoutView
=
inflater
.
inflate
(
R
.
layout
.
main_fragment
,
container
,
false
);
layoutView
=
inflater
.
inflate
(
R
.
layout
.
main_fragment
,
container
,
false
);
initView
(
layoutView
,
savedInstanceState
);
initView
(
layoutView
,
savedInstanceState
);
return
layoutView
;
return
layoutView
;
}
}
private
void
initView
(
View
view
,
Bundle
saveBundle
)
{
private
void
initView
(
View
view
,
Bundle
saveBundle
)
{
//服务器列表
mServerList
=
view
.
findViewById
(
R
.
id
.
list_server
);
mServerListAdapter
=
new
ServerListAdapter
(
getActivity
());
LayoutInflater
infla
=
LayoutInflater
.
from
(
getActivity
());
View
footView
=
infla
.
inflate
(
R
.
layout
.
item_ic_add
,
null
);
TextView
add_server
=
footView
.
findViewById
(
R
.
id
.
add_server
);
add_server
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
@Override
public
void
onClick
(
View
v
)
{
mServerListManager
.
addServer
();
}
});
mServerListAdapter
.
addFooterView
(
footView
);
LinearLayoutManager
linearLayoutManager
=
new
LinearLayoutManager
(
getActivity
());
mServerList
.
setLayoutManager
(
linearLayoutManager
);
DividerItemDecoration
dividerItemDecoration
=
new
DividerItemDecoration
(
getActivity
(),
DividerItemDecoration
.
VERTICAL
);
mServerList
.
addItemDecoration
(
dividerItemDecoration
);
mServerList
.
setAdapter
(
mServerListAdapter
);
mServerListManager
=
new
ServerListManager
(
getActivity
(),
mServerListAdapter
);
mServerListManager
.
bind
(
mServerList
);
mServerListManager
.
syncLoadData
();
//萌卡
//萌卡
ImageView
iv_mc
=
view
.
findViewById
(
R
.
id
.
btn_mycard
);
ImageView
iv_mc
=
view
.
findViewById
(
R
.
id
.
btn_mycard
);
iv_mc
.
setOnClickListener
((
v
)
->
{
iv_mc
.
setOnClickListener
((
v
)
->
{
...
@@ -63,6 +123,158 @@ public class HomeFragment extends BaseFragemnt {
...
@@ -63,6 +123,158 @@ public class HomeFragment extends BaseFragemnt {
tv
=
(
ShimmerTextView
)
view
.
findViewById
(
R
.
id
.
shimmer_tv
);
tv
=
(
ShimmerTextView
)
view
.
findViewById
(
R
.
id
.
shimmer_tv
);
toggleAnimation
(
tv
);
toggleAnimation
(
tv
);
}
}
public
void
joinRoom
(
int
position
)
{
ServerInfo
serverInfo
=
mServerListAdapter
.
getItem
(
position
);
if
(
serverInfo
==
null
)
{
return
;
}
//进入房间
DialogPlus
builder
=
new
DialogPlus
(
getContext
());
builder
.
setTitle
(
R
.
string
.
intput_room_name
);
builder
.
setContentView
(
R
.
layout
.
dialog_room_name
);
EditText
editText
=
builder
.
bind
(
R
.
id
.
room_name
);
ListView
listView
=
builder
.
bind
(
R
.
id
.
room_list
);
TextView
text_abt_roomlist
=
builder
.
bind
(
R
.
id
.
abt_room_list
);
SimpleListAdapter
simpleListAdapter
=
new
SimpleListAdapter
(
getContext
());
simpleListAdapter
.
set
(
AppsSettings
.
get
().
getLastRoomList
());
if
(
AppsSettings
.
get
().
getLastRoomList
().
size
()
>
0
)
text_abt_roomlist
.
setVisibility
(
View
.
VISIBLE
);
else
text_abt_roomlist
.
setVisibility
(
View
.
GONE
);
listView
.
setAdapter
(
simpleListAdapter
);
listView
.
setOnItemClickListener
((
a
,
v
,
pos
,
index
)
->
{
String
name
=
simpleListAdapter
.
getItemById
(
index
);
editText
.
setText
(
name
);
});
editText
.
setOnEditorActionListener
((
v
,
actionId
,
event
)
->
{
if
(
actionId
==
EditorInfo
.
IME_ACTION_DONE
)
{
builder
.
dismiss
();
String
name
=
editText
.
getText
().
toString
();
if
(!
TextUtils
.
isEmpty
(
name
))
{
List
<
String
>
items
=
simpleListAdapter
.
getItems
();
int
index
=
items
.
indexOf
(
name
);
if
(
index
>=
0
)
{
items
.
remove
(
index
);
items
.
add
(
0
,
name
);
}
else
{
items
.
add
(
0
,
name
);
}
AppsSettings
.
get
().
setLastRoomList
(
items
);
simpleListAdapter
.
notifyDataSetChanged
();
}
joinGame
(
serverInfo
,
name
);
return
true
;
}
return
false
;
});
listView
.
setOnItemLongClickListener
((
a
,
v
,
i
,
index
)
->
{
String
name
=
simpleListAdapter
.
getItemById
(
index
);
int
pos
=
simpleListAdapter
.
findItem
(
name
);
if
(
pos
>=
0
)
{
simpleListAdapter
.
remove
(
pos
);
simpleListAdapter
.
notifyDataSetChanged
();
AppsSettings
.
get
().
setLastRoomList
(
simpleListAdapter
.
getItems
());
}
return
true
;
});
builder
.
setLeftButtonText
(
R
.
string
.
join_game
);
builder
.
setLeftButtonListener
((
dlg
,
i
)
->
{
dlg
.
dismiss
();
if
(
Build
.
VERSION
.
SDK_INT
>=
23
&&
YGOStarter
.
isGameRunning
(
getActivity
()))
{
Toast
toast
=
Toast
.
makeText
(
App
.
get
().
getApplicationContext
(),
R
.
string
.
tip_return_to_duel
,
Toast
.
LENGTH_SHORT
);
toast
.
setGravity
(
Gravity
.
CENTER
,
0
,
0
);
toast
.
show
();
openGame
();
}
else
{
//保存名字
String
name
=
editText
.
getText
().
toString
();
if
(!
TextUtils
.
isEmpty
(
name
))
{
List
<
String
>
items
=
simpleListAdapter
.
getItems
();
int
index
=
items
.
indexOf
(
name
);
if
(
index
>=
0
)
{
items
.
remove
(
index
);
items
.
add
(
0
,
name
);
}
else
{
items
.
add
(
0
,
name
);
}
AppsSettings
.
get
().
setLastRoomList
(
items
);
simpleListAdapter
.
notifyDataSetChanged
();
}
joinGame
(
serverInfo
,
name
);
}
});
builder
.
setOnCloseLinster
((
dlg
)
->
{
dlg
.
dismiss
();
});
builder
.
setOnCancelListener
((
dlg
)
->
{
});
builder
.
show
();
}
void
joinGame
(
ServerInfo
serverInfo
,
String
name
)
{
showTipsToast
();
YGOGameOptions
options
=
new
YGOGameOptions
();
options
.
mServerAddr
=
serverInfo
.
getServerAddr
();
options
.
mUserName
=
serverInfo
.
getPlayerName
();
options
.
mPort
=
serverInfo
.
getPort
();
options
.
mRoomName
=
name
;
YGOStarter
.
startGame
(
getActivity
(),
options
);
}
public
void
quickjoinRoom
(
String
host
,
int
port
,
String
password
)
{
String
message
;
if
(!
TextUtils
.
isEmpty
(
host
))
message
=
getString
(
R
.
string
.
quick_join
)
+
"\nIP:"
+
host
+
"\n端口:"
+
port
+
"\n密码:"
+
password
;
else
message
=
getString
(
R
.
string
.
quick_join
)
+
":\""
+
password
+
"\""
;
DialogPlus
dialog
=
new
DialogPlus
(
getActivity
());
dialog
.
setTitle
(
R
.
string
.
question
);
dialog
.
setMessage
(
message
);
dialog
.
setMessageGravity
(
Gravity
.
CENTER_HORIZONTAL
);
dialog
.
setLeftButtonText
(
R
.
string
.
Cancel
);
dialog
.
setRightButtonText
(
R
.
string
.
join
);
dialog
.
show
();
dialog
.
setRightButtonListener
((
dlg
,
s
)
->
{
dialog
.
dismiss
();
ServerListAdapter
mServerListAdapter
=
new
ServerListAdapter
(
getActivity
());
ServerListManager
mServerListManager
=
new
ServerListManager
(
getActivity
(),
mServerListAdapter
);
mServerListManager
.
syncLoadData
();
File
xmlFile
=
new
File
(
App
.
get
().
getFilesDir
(),
Constants
.
SERVER_FILE
);
VUiKit
.
defer
().
when
(()
->
{
ServerList
assetList
=
ServerListManager
.
readList
(
getActivity
().
getAssets
().
open
(
ASSET_SERVER_LIST
));
ServerList
fileList
=
xmlFile
.
exists
()
?
ServerListManager
.
readList
(
new
FileInputStream
(
xmlFile
))
:
null
;
if
(
fileList
==
null
)
{
return
assetList
;
}
if
(
fileList
.
getVercode
()
<
assetList
.
getVercode
())
{
xmlFile
.
delete
();
return
assetList
;
}
return
fileList
;
}).
done
((
list
)
->
{
if
(
list
!=
null
)
{
String
host1
=
host
;
int
port1
=
port
;
ServerInfo
serverInfo
=
list
.
getServerInfoList
().
get
(
0
);
if
(!
TextUtils
.
isEmpty
(
host1
))
{
serverInfo
.
setServerAddr
(
host1
);
serverInfo
.
setPort
(
port1
);
}
joinGame
(
serverInfo
,
password
);
}
});
});
dialog
.
setLeftButtonListener
((
dlg
,
s
)
->
{
dialog
.
dismiss
();
});
}
public
void
BacktoDuel
()
{
public
void
BacktoDuel
()
{
tv
.
setOnClickListener
((
v
)
->
{
tv
.
setOnClickListener
((
v
)
->
{
//openGame();
//openGame();
...
@@ -83,11 +295,64 @@ public class HomeFragment extends BaseFragemnt {
...
@@ -83,11 +295,64 @@ public class HomeFragment extends BaseFragemnt {
}
}
}
}
public
void
showTipsToast
()
{
if
(!
YGOStarter
.
isGameRunning
(
getActivity
()))
{
String
[]
tipsList
=
this
.
getResources
().
getStringArray
(
R
.
array
.
tips
);
int
x
=
(
int
)
(
Math
.
random
()
*
tipsList
.
length
);
String
tips
=
tipsList
[
x
];
Toast
.
makeText
(
getActivity
(),
tips
,
Toast
.
LENGTH_LONG
).
show
();
}
}
public
void
onJoinRoom
(
String
host
,
int
port
,
String
password
,
int
id
)
{
if
(
id
==
ID_HOMEFRAGMENT
)
{
quickjoinRoom
(
host
,
port
,
password
);
}
}
public
void
onCardSearch
(
String
key
,
int
id
)
{
if
(
id
==
ID_HOMEFRAGMENT
)
{
Intent
intent
=
new
Intent
(
getContext
(),
CardSearchActivity
.
class
);
intent
.
putExtra
(
CardSearchActivity
.
SEARCH_MESSAGE
,
key
);
startActivity
(
intent
);
}
}
@Subscribe
(
threadMode
=
ThreadMode
.
MAIN
)
public
void
onServerInfoEvent
(
ServerInfoEvent
event
)
{
if
(
event
.
delete
)
{
DialogPlus
dialogPlus
=
new
DialogPlus
(
getContext
());
dialogPlus
.
setTitle
(
R
.
string
.
question
);
dialogPlus
.
setMessage
(
R
.
string
.
delete_server_info
);
dialogPlus
.
setMessageGravity
(
Gravity
.
CENTER_HORIZONTAL
);
dialogPlus
.
setLeftButtonListener
((
dialog
,
which
)
->
{
mServerListManager
.
delete
(
event
.
position
);
mServerListAdapter
.
notifyDataSetChanged
();
dialog
.
dismiss
();
});
dialogPlus
.
setCancelable
(
true
);
dialogPlus
.
setOnCloseLinster
(
null
);
dialogPlus
.
show
();
}
else
if
(
event
.
join
)
{
joinRoom
(
event
.
position
);
//showNewbieGuide("joinRoom");
}
else
{
mServerListManager
.
showEditDialog
(
event
.
position
);
}
}
protected
void
openGame
()
{
YGOStarter
.
startGame
(
getActivity
(),
null
);
}
@Override
@Override
public
void
onResume
()
{
public
void
onResume
()
{
super
.
onResume
();
super
.
onResume
();
BacktoDuel
();
BacktoDuel
();
//server list
mServerListManager
.
syncLoadData
();
}
}
@Override
@Override
...
...
mobile/src/main/res/layout/activity_home.xml
View file @
6a37a700
...
@@ -7,18 +7,6 @@
...
@@ -7,18 +7,6 @@
android:fitsSystemWindows=
"true"
android:fitsSystemWindows=
"true"
app:layout_behavior=
"@string/appbar_scrolling_view_behavior"
>
app:layout_behavior=
"@string/appbar_scrolling_view_behavior"
>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:background=
"#80000000"
android:orientation=
"vertical"
></LinearLayout>
<com.tubb.smrv.SwipeMenuRecyclerView
android:id=
"@+id/list_server"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:scrollbars=
"none"
/>
<androidx.constraintlayout.widget.ConstraintLayout
<androidx.constraintlayout.widget.ConstraintLayout
android:id=
"@+id/container"
android:id=
"@+id/container"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
...
...
mobile/src/main/res/layout/main_fragment.xml
View file @
6a37a700
...
@@ -4,6 +4,18 @@
...
@@ -4,6 +4,18 @@
android:layout_height=
"match_parent"
android:layout_height=
"match_parent"
android:orientation=
"vertical"
>
android:orientation=
"vertical"
>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:background=
"#80000000"
android:orientation=
"vertical"
></LinearLayout>
<com.tubb.smrv.SwipeMenuRecyclerView
android:id=
"@+id/list_server"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:scrollbars=
"none"
/>
<cn.garymb.ygomobile.ui.widget.ShimmerTextView
<cn.garymb.ygomobile.ui.widget.ShimmerTextView
android:id=
"@+id/shimmer_tv"
android:id=
"@+id/shimmer_tv"
android:layout_width=
"150dp"
android:layout_width=
"150dp"
...
...
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