the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
at main 157 lines 5.2 kB view raw
1#pragma once 2 3#include <stdio.h> 4#include <stdlib.h> 5#include <string.h> 6#include <cell/sysmodule.h> 7#include <sys/process.h> 8#include <sysutil/sysutil_avc2.h> /* for using AV Chat2 Utility */ 9#include <np.h> /* for using NP Matching */ 10#include <netex/net.h> 11#include <netex/libnetctl.h> 12#include <sysutil/sysutil_sysparam.h> 13 14 15#define AVC2_PARAM_DEFAULT_MAX_PLAYERS (8) 16#define AVC2_PARAM_DEFAULT_MAX_SPEAKERS (4) 17 18/* state list */ 19enum EAVCState 20{ 21 AVC_STATE_IDLE = 0, 22 23 AVC_STATE_CHAT_INIT, 24 AVC_STATE_CHAT_LOAD, 25 AVC_STATE_CHAT_JOIN, 26 AVC_STATE_CHAT_SESSION_PROCESSING, 27 AVC_STATE_CHAT_LEAVE, 28 AVC_STATE_CHAT_RESET, 29 AVC_STATE_CHAT_UNLOAD, 30 31 AVC_STATE_EXIT, 32}; 33/* event list */ 34enum EAVCEvent 35{ 36 AVC_EVENT_NON = AVC_STATE_EXIT + 1, 37 38 AVC_EVENT_EPSILON, 39 AVC_EVENT_LAN_DISCONNECT, 40 AVC_EVENT_ONLINE, 41 AVC_EVENT_OFFLINE, 42 AVC_EVENT_EXIT_GAME, 43 AVC_EVENT_ROOM_CREATE, 44 AVC_EVENT_ROOM_SEARCH, 45 AVC_EVENT_ERROR, 46 AVC_EVENT_FATAL_ERROR, 47 AVC_EVENT_NETDIALOG_FINISHED, 48 AVC_EVENT_NETDIALOG_UNLOADED, 49 AVC_EVENT_NP2_INIT_SUCCEEDED, 50 AVC_EVENT_NP2_FINALIZE_SUCCEEDED, 51 AVC_EVENT_NP2_START_CONTEXT_SUCCEEDED, 52 AVC_EVENT_NP2_STOP_CONTEXT_SUCCEEDED, 53 AVC_EVENT_NP2_ROOM_DESTROY_OR_KICKEDOUT, 54 AVC_EVENT_NP2_ROOM_MEMBER_LEFT, 55 AVC_EVENT_NP2_ROOM_MEMBER_JOINED, 56 AVC_EVENT_CHAT_LOAD_SUCCEEDED, 57 AVC_EVENT_CHAT_LOAD_FAILED, 58 AVC_EVENT_CHAT_JOIN_SUCCEEDED, 59 AVC_EVENT_CHAT_JOIN_FAILED, 60 AVC_EVENT_CHAT_LEAVE_SUCCEEDED, 61 AVC_EVENT_CHAT_LEAVE_FAILED, 62 AVC_EVENT_CHAT_UNLOAD_SUCCEEDED, 63 AVC_EVENT_CHAT_UNLOAD_FAILED, 64 AVC_EVENT_CHAT_INIT_SUCCEEDED, 65 AVC_EVENT_CHAT_FINALIZE_SUCCEEDED, 66 AVC_EVENT_CHAT_SESSION_STOPPED, 67 AVC_EVENT_CREATE_JOIN_ROOM_SUCCEEDED, 68 AVC_EVENT_SEARCH_ROOM_SUCCEEDED, 69 AVC_EVENT_JOIN_ROOM_SUCCEEDED, 70 AVC_EVENT_LEAVE_ROOM_SUCCEEDED, 71 AVC_EVENT_SIGNALING_ESTABLISHED, 72 AVC_EVENT_SIGNALING_DEAD, 73 AVC_EVENT_UI_CLOSE_SUCCEEDED, 74}; 75 76 77typedef struct 78{ 79 int state; 80 int event; 81 int (*func)(void); 82 EAVCState new_state; 83} state_transition_table; 84 85 86class SonyVoiceChat 87{ 88public: 89 90 static void init(SQRNetworkManager_PS3* pNetMan); 91 static void shutdown(); 92 static void tick(); 93 static void setEnabled(bool bEnabled); 94 static bool hasMicConnected(const SceNpMatching2RoomMemberId *players_id); 95 static bool isTalking(SceNpMatching2RoomMemberId* players_id); 96 static void mute(bool bMute); //Turn chat audio on or off 97 static void mutePlayer(const SceNpMatching2RoomMemberId member_id, bool bMute); //Turn chat audio from a specified player on or off; 98 static void muteLocalPlayer(bool bMute); //Turn microphone input on or off; 99 100 static bool isMuted(); 101 static bool isMutedPlayer(const SceNpMatching2RoomMemberId member_id); 102 static bool isMutedLocalPlayer(); //Turn microphone input on or off; 103 104 static void setVolume(float vol); // 0.0f - 1.0f range 105 static float getVolume(); // 0.0f - 1.0f range 106 107 static bool isShuttingDown() { return (sm_state == AVC_STATE_CHAT_LEAVE || sm_state == AVC_STATE_CHAT_UNLOAD || AVC_STATE_CHAT_RESET); } 108 static void signalRoomDestroyed() { if(!isShuttingDown()) sm_event = AVC_EVENT_NP2_ROOM_DESTROY_OR_KICKEDOUT;} 109 static void signalRoomKickedOut() { if(!isShuttingDown()) sm_event = AVC_EVENT_NP2_ROOM_DESTROY_OR_KICKEDOUT;} 110 static void signalDisconnected() { if(!isShuttingDown()) sm_event = AVC_EVENT_LAN_DISCONNECT;} 111private: 112// static np2_matching2_info sm_matchingInfo; 113 static EAVCEvent sm_event; 114 static EAVCState sm_state; 115 static SQRNetworkManager_PS3* sm_pNetworkManager; 116 static bool sm_bEnabled; 117 static uint8_t sm_micStatus; 118 static bool sm_bLoaded; 119 static bool sm_bUnloading; 120 static unordered_map<SceNpMatching2RoomMemberId, bool> sm_bTalkingMap; 121 static bool sm_bCanStart; // set to true on init, false on disconnect, used to see if we should start after a re-enable 122 static bool sm_isChatRestricted; // true if the parental controls have been set on the main users account 123 static int sm_currentBitrate; 124 static int eventcb_load(CellSysutilAvc2EventId event_id, CellSysutilAvc2EventParam event_param, void *userdata); 125 static int eventcb_join(CellSysutilAvc2EventId event_id, CellSysutilAvc2EventParam event_param, void *userdata); 126 static int eventcb_leave( CellSysutilAvc2EventId event_id, CellSysutilAvc2EventParam event_param, void *userdata); 127 static int eventcb_unload(CellSysutilAvc2EventId event_id, CellSysutilAvc2EventParam event_param, void *userdata); 128 static int eventcb_voiceDetected(CellSysutilAvc2EventId event_id, CellSysutilAvc2EventParam event_param, void *userdata); 129 static void eventcb( CellSysutilAvc2EventId event_id, CellSysutilAvc2EventParam event_param, void *userdata); 130 131 static int initialize(); 132 static int finalize(); 133 134 static int load(); 135 static int unload(); 136 137 static int join(); 138 static int leave(); 139 140 static int start(); 141 static int stop(); 142 143 static int startStream(); 144 static int stopStream(); 145// static int update_target(); 146 147 static void do_state_transition( state_transition_table *tbl, int tbl_size); 148 static int invoke_epsilon_event(); 149 150 static void setBitRate(); 151 152 static void setEvent(EAVCEvent event); 153 static void setState(EAVCState state); 154 static void printStateAndEvent(); 155 156 157};