floor egg. put stuff into foyer
This commit is contained in:
		
							parent
							
								
									1664d678cb
								
							
						
					
					
						commit
						ec67b3169d
					
				@ -24,6 +24,7 @@ type DB interface {
 | 
				
			|||||||
	GetAccount(string) (*Account, error)
 | 
						GetAccount(string) (*Account, error)
 | 
				
			||||||
	StartSession(Account) (string, error)
 | 
						StartSession(Account) (string, error)
 | 
				
			||||||
	EndSession(string) error
 | 
						EndSession(string) error
 | 
				
			||||||
 | 
						ActiveSessions() ([]Session, error)
 | 
				
			||||||
	ClearSessions() error
 | 
						ClearSessions() error
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// General
 | 
						// General
 | 
				
			||||||
@ -33,7 +34,6 @@ type DB interface {
 | 
				
			|||||||
	Ensure() error
 | 
						Ensure() error
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Presence
 | 
						// Presence
 | 
				
			||||||
	ActiveSessions() ([]Session, error)
 | 
					 | 
				
			||||||
	AvatarBySessionID(string) (*Object, error)
 | 
						AvatarBySessionID(string) (*Object, error)
 | 
				
			||||||
	BedroomBySessionID(string) (*Object, error)
 | 
						BedroomBySessionID(string) (*Object, error)
 | 
				
			||||||
	MoveInto(toMove Object, container Object) error
 | 
						MoveInto(toMove Object, container Object) error
 | 
				
			||||||
@ -91,13 +91,13 @@ func (db *pgDB) Ensure() error {
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	log.Printf("%#v", sysAcc)
 | 
						foyer, err := db.GetObject("system", "foyer")
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
	if _, err := db.GetObject("system", "foyer"); err != nil {
 | 
							// TODO actually check error. for now assuming it means does not exist
 | 
				
			||||||
		data := map[string]string{}
 | 
							data := map[string]string{}
 | 
				
			||||||
		data["name"] = "foyer"
 | 
							data["name"] = "foyer"
 | 
				
			||||||
		data["description"] = "a big room. the ceiling is painted with constellations."
 | 
							data["description"] = "a big room. the ceiling is painted with constellations."
 | 
				
			||||||
		foyer := &Object{
 | 
							foyer = &Object{
 | 
				
			||||||
			Data:   data,
 | 
								Data:   data,
 | 
				
			||||||
			Script: "",
 | 
								Script: "",
 | 
				
			||||||
			// TODO default room script
 | 
								// TODO default room script
 | 
				
			||||||
@ -107,6 +107,30 @@ func (db *pgDB) Ensure() error {
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						egg, err := db.GetObject("system", "floor egg")
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							// TODO actually check error. for now assuming it means does not exist
 | 
				
			||||||
 | 
							data := map[string]string{}
 | 
				
			||||||
 | 
							data["name"] = "floor egg"
 | 
				
			||||||
 | 
							data["description"] = "it's an egg and it's on the floor."
 | 
				
			||||||
 | 
							egg = &Object{
 | 
				
			||||||
 | 
								Data:   data,
 | 
				
			||||||
 | 
								Script: "",
 | 
				
			||||||
 | 
								// TODO default room script
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							if err = db.CreateObject(sysAcc, egg); err != nil {
 | 
				
			||||||
 | 
								return err
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						sysAva, err := db.GetAccountAvatar(*sysAcc)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return fmt.Errorf("could not find avatar for system account: %w", err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						db.MoveInto(*sysAva, *foyer)
 | 
				
			||||||
 | 
						db.MoveInto(*egg, *foyer)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return nil
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -343,11 +367,29 @@ func (db *pgDB) GetObject(owner, name string) (obj *Object, err error) {
 | 
				
			|||||||
		WHERE owner = $1 AND data['name'] = $2`
 | 
							WHERE owner = $1 AND data['name'] = $2`
 | 
				
			||||||
	err = db.pool.QueryRow(ctx, stmt, owner, fmt.Sprintf(`"%s"`, name)).Scan(
 | 
						err = db.pool.QueryRow(ctx, stmt, owner, fmt.Sprintf(`"%s"`, name)).Scan(
 | 
				
			||||||
		&obj.ID, &obj.Avatar, &obj.Data, &obj.OwnerID, &obj.Script)
 | 
							&obj.ID, &obj.Avatar, &obj.Data, &obj.OwnerID, &obj.Script)
 | 
				
			||||||
	// TODO i think the escaping here is going to create a sadness ^
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return
 | 
						return
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (db *pgDB) GetAccountAvatar(account Account) (*Object, error) {
 | 
				
			||||||
 | 
						ctx := context.Background()
 | 
				
			||||||
 | 
						obj := &Object{
 | 
				
			||||||
 | 
							OwnerID: account.ID,
 | 
				
			||||||
 | 
							Avatar:  true,
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						stmt := `
 | 
				
			||||||
 | 
							SELECT id, data, script
 | 
				
			||||||
 | 
							FROM objects
 | 
				
			||||||
 | 
							WHERE owner = $1 AND avatar IS true`
 | 
				
			||||||
 | 
						err := db.pool.QueryRow(ctx, stmt, account.ID).Scan(
 | 
				
			||||||
 | 
							&obj.ID, &obj.Data, &obj.Script)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return obj, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (db *pgDB) ActiveSessions() (out []Session, err error) {
 | 
					func (db *pgDB) ActiveSessions() (out []Session, err error) {
 | 
				
			||||||
	stmt := `SELECT id, account FROM sessions`
 | 
						stmt := `SELECT id, account FROM sessions`
 | 
				
			||||||
	rows, err := db.pool.Query(context.Background(), stmt)
 | 
						rows, err := db.pool.Query(context.Background(), stmt)
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user