gsimul_graph <- function(nodetype,nodenum){
  #Loading Main Library
  library(igraph)
  library(netseg)
  eom <- 1
  invec <- eom
  ttp <- nodetype
  opvec <- rep(3,nodenum)
  typevec <- sample(ttp, nodenum, replace = TRUE)
  
  rph <- erdos.renyi.game(nodenum, 0.3, type=c("gnp", "gnm"),
                          directed = TRUE, loops = FALSE)
  
  adjrph <- as.matrix(as_adjacency_matrix(rph))
  
  V(rph)$label <- typevec
  
  #Centrality Measures
  Degree.Directed <- degree(rph)
  Indegree <- degree(rph, mode="in")
  Outdegree <- degree(rph, mode="out")
  
  Eig <- eigen_centrality(rph)$vector
  
  Hub <- hub_score(rph)$vector
  Authority <- authority_score(rph)$vector
  
  Closeness <- closeness(rph)
  
  reach1 <- ego_size(rph, 1)/(vcount(rph)-1)
  
  Betweenness <- betweenness(rph)
  
  centralities <- cbind(mean(Degree.Directed), mean(Eig), mean(Hub), mean(Authority), mean(Closeness), mean(reach1), mean(Betweenness))
  
  #Homophily Measures
  fhom <- coleman(rph, "label")
  
  #Deciding strategy
  focstrat <- which(adjrph[1,] == 1)
  
  if(length(focstrat)<=2){
    ridx <- sample(nrow(adjrph), 4)
    ridx <- ridx[! ridx %in% focstrat]
    adjrph[1,ridx] = 1
  }
  
  allstrat <- list("F", "B")
  
  focstrat <- sample(which(adjrph[1,] == 1),ceiling(runif(1, 1, (length(which(adjrph[1,] == 1))-1))))
  act <- focstrat
  
  for (k in 1:3) {
    if(opinion_update(invec,eom,adjrph,typevec,opvec,"F",rph,act)[[3]] != "Finished"){
      
      linvec <- opinion_update(invec,eom,adjrph,typevec,opvec,"F",rph,act)[[2]]
      lopvec <- opinion_update(invec,eom,adjrph,typevec,opvec,"F",rph,act)[[1]]
      
      invec <- linvec
      opvec <- lopvec
    }
  }
  
  #Output from Focus
  fopvec <- opvec
  
  
  eom <- 1
  invec <- eom
  opvec <- rep(3,10)
  
  for (k in 1:3) {
    if(opinion_update(invec,eom,adjrph,typevec,opvec,"B",rph,act)[[3]] != "Finished"){
      
      kinvec <- opinion_update(invec,eom,adjrph,typevec,opvec,"B",rph,act)[[2]]
      kopvec <- opinion_update(invec,eom,adjrph,typevec,opvec,"B",rph,act)[[1]]
      
      invec <- kinvec
      opvec <- kopvec
    }
  }
  
  #Output from Broadcast
  bopvec <- opvec
  
  #Counting number of 1 in focus
  ff <- fopvec[! fopvec %in% c(3)]
  ff <- ff[-1]
  nfop <- sum(ff==1)
  
  #Counting number of 1 in broadcast
  bb <- bopvec[! bopvec %in% c(3)]
  bb <- bb[-1]
  nbop <- sum(bb==1)
  
  return(c(length(focstrat),nfop,nbop,centralities,fhom[[1]], fhom[[2]],sum(typevec == "S"), sum(typevec == "T")))
  
}