package org.ntlab.irisclient;
import androidx.appcompat.app.AppCompatActivity;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProvider;
import androidx.recyclerview.widget.RecyclerView;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;
import com.google.android.material.snackbar.Snackbar;
import org.ntlab.irisclient.entities.RoomJson;
import org.ntlab.irisclient.models.Member;
import org.ntlab.irisclient.viewmodels.RoomViewModel;
import java.util.ArrayList;
import java.util.List;
public class MemberRoomActivity extends AppCompatActivity {
//RoomViewModel roomViewModel = new ViewModelProvider(this).get(RoomViewModel.class);
//フィールド
ArrayList<String> viewMembers = new ArrayList<>();
ArrayList<String> oldMembers = new ArrayList<>();
List<Member> gMembers = new ArrayList<>();
String roomId = "null";
String myName = "null";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_member_room);
roomId = ((Iris) getApplication()).getRid();
String nickname = ((Iris) getApplication()).getNickname();
//--------------------------------------------------------------------------
//自分の名前
Intent intentMain = getIntent();
myName = intentMain.getStringExtra("nickname");
//--------------------------------------------------------------------------
//メンバー表示
Member mn = new Member(myName);
mn.setBelongs("g");
mn.setMaster(false);
viewMembers.add(mn.getNickname());
//--------------------------------------------------------------------------
//RoomViewModelへのアクセス
RoomViewModel roomViewModel = new ViewModelProvider(this).get(RoomViewModel.class);
roomViewModel.setRid(roomId);
ListView membersList = (ListView) findViewById(R.id.MembersList);
BaseAdapter adapter = new MemberListAdapter(this.getApplicationContext(), R.layout.member_list_layout, viewMembers, gMembers);
membersList.setAdapter(adapter);
//LiveData(List<Member>)への購読
roomViewModel.getMembersLiveData().observe(this, new Observer<List<Member>>() {
//private List<Member> members;
@Override
public void onChanged(List<Member> irisMembers) {
viewMembers.clear();
irisMembers.forEach(m -> viewMembers.add(m.getNickname()));
gMembers = irisMembers;
BaseAdapter adapter = new MemberListAdapter(getApplicationContext(), R.layout.member_list_layout, viewMembers, gMembers);
membersList.setAdapter(adapter);
}
});
roomViewModel.getStateLiveData().observe(this, new Observer<Integer>() {
@Override
public void onChanged(Integer state) {
if(state >= 1){
Intent intent = new Intent(MemberRoomActivity.this,DrawingActivity.class);
startActivity(intent);
}
}
});
//--------------------------------------------------------------------------
//各ボタン処理
Button redMasterButton = (Button) findViewById(R.id.beRedMaster);
Button redSpyButton = (Button) findViewById(R.id.beRedSpy);
Button blueMasterButton = (Button) findViewById(R.id.beBlueMaster);
Button blueSpyButton = (Button) findViewById(R.id.beBlueSpy);
ImageButton copyButton = (ImageButton) findViewById(R.id.copyButton);
//MemberRoom専用ボタン
ImageButton homeButton = (ImageButton) findViewById(R.id.homeButton);
//チームと役職の変更
//赤チーム・スパイマスター
redMasterButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
roomViewModel.changeBelongsAndMaster(roomId, myName,"r",true);
}
});
//赤チーム・諜報員
redSpyButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
roomViewModel.changeBelongsAndMaster(roomId, myName,"r",false);
}
});
//青チーム・スパイマスター
blueMasterButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
roomViewModel.changeBelongsAndMaster(roomId, myName,"b",true);
}
});
//青チーム・諜報員
blueSpyButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
roomViewModel.changeBelongsAndMaster(roomId, myName,"b",false);
}
});
copyButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Snackbar.make(v, "コピーしました", Snackbar.LENGTH_LONG).show();
}
});
homeButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
//---------------------------------------------------------------
//settings情報
String s = "設定されている内容がここに表示されるはずです";
TextView settingsText = findViewById(R.id.settings);
settingsText.setText(s);
//---------------------------------------------------------------
//部屋ID情報
TextView RoomIdText = findViewById(R.id.roomID);
RoomIdText.setText(roomId);
roomViewModel.start(500,(Iris)getApplication());
}
}